ภาพรวมของกระบวนการยืนยันตัวตนในระบบ Spotnana

สร้างโดย Ashish Chaudhary, แก้ไขเมื่อ วันเสาร์, 4 ตุลาคม เมื่อ 11:21 PM โดย Ashish Chaudhary

ภาพรวมของขั้นตอนการยืนยันตัวตนใน Spotnana

สารบัญ

Spotnana มีวิธีการยืนยันตัวตนหลายรูปแบบ เพื่อให้พันธมิตรสามารถเชื่อมต่อระบบของตนกับแพลตฟอร์มของเราได้อย่างปลอดภัย เอกสารฉบับนี้จะอธิบายภาพรวมของแต่ละวิธีที่ Spotnana รองรับ พร้อมทั้งอธิบายขั้นตอนการทำงานในแต่ละแบบโดยละเอียด ตัวอย่างขั้นตอนเหล่านี้จะช่วยให้เห็นภาพว่าระบบของ Spotnana ตรวจสอบและอนุญาตให้ผู้ใช้เข้าถึงทรัพยากรขององค์กร (เช่น ข้อมูลหรือบริการที่เป็นของบริษัทผู้ใช้บนแพลตฟอร์ม Spotnana) ได้อย่างไร


องค์ประกอบสำคัญ

ก่อนเริ่มต้นใช้งาน กรุณาศึกษาคำอธิบายขององค์ประกอบหลักในระบบที่ถูกกล่าวถึงในเอกสารนี้

  • Spotnana UI(ส่วนติดต่อผู้ใช้ของ Spotnana) หมายถึงแอปพลิเคชันหน้าเว็บของ Spotnana (หรือที่เรียกว่า Online Booking Tool) หรือแอปพลิเคชันบนมือถือของ Spotnana โดยเฉพาะหน้าล็อกอิน ซึ่งเป็นจุดเริ่มต้นของกระบวนการยืนยันตัวตนเมื่อผู้ใช้เข้าสู่ระบบหรือสมัครสมาชิกใหม่
  • Spotnana server หมายถึงเซิร์ฟเวอร์ส่วนหลังของ Spotnana ที่ใช้สำหรับการยืนยันตัวตน เช่น การอนุญาตให้ผู้ใช้เข้าถึงข้อมูล หรือจัดเก็บและประมวลผลข้อมูลผู้ใช้อย่างปลอดภัย
  • Partner UI (ส่วนติดต่อผู้ใช้ของพันธมิตร) ส่วนติดต่อผู้ใช้ (เช่น แอปพลิเคชันหน้าเว็บ) ที่พันธมิตรใช้ในการเข้าถึงแพลตฟอร์ม Spotnana ตัวอย่างเช่น ในกรณีที่ใช้การยืนยันตัวตนแบบ iFrame ระบบ Spotnana จะถูกฝังอยู่ในหน้าของพันธมิตร และผู้ใช้จะเข้าถึง Spotnana ผ่าน Partner UI
  • Partner server หมายถึงเซิร์ฟเวอร์ส่วนหลังของพันธมิตรที่ใช้เชื่อมต่อกับ Spotnana อาจมีมากกว่าหนึ่งเครื่อง
  • Spotnana IdP (ผู้ให้บริการยืนยันตัวตนของ Spotnana) หมายถึงบริการภายในของ Spotnana ที่ใช้จัดการข้อมูลตัวตนและการอนุญาตของผู้ใช้
  • Partner IdP ผู้ให้บริการยืนยันตัวตนภายนอกที่พันธมิตรเลือกใช้ เช่น Google หรือ Azure 
  • OBT Online Booking Tool (OBT) ของ Spotnana ซึ่งสามารถเข้าใช้งานได้ที่ https://app.spotnana.com/ 
  • Subject token สำหรับการยืนยันตัวตนแบบ iFrame (หรือ token exchange) subject token คือโทเคนที่แสดงตัวตนของผู้ใช้ โทเคนนี้จะถูกใช้เพื่อดึงข้อมูลและอนุญาตให้เข้าถึงแพลตฟอร์ม Spotnana
  • Access token ข้อมูลรับรอง (OAuth) ที่แอปพลิเคชันของพันธมิตรใช้ในการเข้าถึงทรัพยากรที่ถูกป้องกันแทนผู้ใช้ เป็นรหัสชั่วคราวที่ช่วยให้แอปพลิเคชันสามารถเรียกใช้งาน API ได้โดยไม่ต้องเปิดเผยข้อมูลเข้าสู่ระบบของผู้ใช้
  • Refresh token ข้อมูลรับรองที่มีอายุการใช้งานยาวนาน ใช้สำหรับขอ access token ใหม่โดยไม่ต้องให้ผู้ใช้เข้าสู่ระบบซ้ำ โดยปกติจะออกให้พร้อมกับ access token ในการเข้าสู่ระบบครั้งแรก
  • Client credentials ข้อมูลที่ออกให้กับผู้ใช้ที่เชื่อมต่อกับ Spotnana API โดยตรง (เช่น clientId และ clientSecret)
  • PID (Personal identifier) รหัสประจำตัวที่สร้างขึ้นสำหรับผู้ใช้แต่ละคน PID นี้ใช้สำหรับดึงข้อมูลผู้ใช้จากเซิร์ฟเวอร์ Spotnana
  • orgId รหัสเฉพาะที่ Spotnana กำหนดให้กับองค์กรของผู้ใช้
  • tmcId รหัสเฉพาะที่ Spotnana กำหนดให้กับบริษัทตัวแทนท่องเที่ยว (TMC)


วิธีการยืนยันตัวตนที่รองรับ

Spotnana รองรับวิธีการยืนยันตัวตนดังต่อไปนี้


การยืนยันตัวตนด้วยรหัสผ่าน

สำหรับการยืนยันตัวตนด้วยรหัสผ่าน Spotnana UI (เช่น หน้าเข้าสู่ระบบหรือสมัครสมาชิกใน OBT) จะเป็นผู้เริ่มต้นและจัดการกระบวนการยืนยันตัวตนกับเซิร์ฟเวอร์ส่วนหลังของ Spotnana ซึ่งจะมีขั้นตอนแตกต่างกันไปขึ้นอยู่กับว่าผู้ใช้มีบัญชีอยู่แล้วหรือกำลังสมัครใหม่ รายละเอียดแต่ละขั้นตอนจะอธิบายพร้อมแผนภาพลำดับในหัวข้อถัดไป


ผู้ใช้เดิม

แผนภาพลำดับและขั้นตอนด้านล่างนี้จะแสดงให้เห็นว่า Spotnana UI ทำงานร่วมกับบริการส่วนหลังอย่างไรในการยืนยันตัวตนของผู้ใช้เดิม

ภาพ: แผนภาพลำดับขั้นตอนการยืนยันตัวตนด้วยรหัสผ่านสำหรับผู้ใช้เดิม


ขั้นตอนลำดับ
ผู้ใช้เดิมเข้าสู่ระบบผ่าน OBT หรือแอปมือถือ Spotnana โดยใช้ email ของตนเอง
1
  • Spotnana UI ส่งคำขอ API ไปยัง Spotnana server เพื่อขอข้อมูลการตั้งค่าการยืนยันตัวตนของผู้ใช้ โดยมีข้อมูลเข้าสู่ระบบเป็นพารามิเตอร์
  • ผลลัพธ์ที่ได้จะมี tmcId, orgIdและ authProviderTypeของผู้ใช้
2
  • Spotnana UI ส่งคำขอ API ไปยัง Spotnana IdP โดยใช้ clientId, email และรหัสผ่าน Spotnana IdP จะสร้าง bearer token ใหม่และส่งกลับมาให้ Spotnana UI
  • ขั้นตอนนี้เป็นการยืนยันตัวตนของผู้ใช้
3
  • หลังจากยืนยันตัวตนในขั้นตอนที่ 2 แล้ว คำขอ API ทั้งหมดที่ตามมาจะต้องแนบ bearer token, orgIdและ tmcId ไว้ใน header ของคำขอด้วย
  • bearer token จะถูกตรวจสอบในทุกคำขอ API ที่เข้ามา และจะมีการส่งผลลัพธ์กลับไปยัง Spotnana UI


ผู้ใช้ใหม่

แผนภาพลำดับและขั้นตอนด้านล่างนี้จะแสดงให้เห็นว่า Spotnana UI ทำงานร่วมกับบริการส่วนหลังอย่างไรในการยืนยันตัวตนของผู้ใช้ใหม่ (หรือผู้ใช้เดิมที่ต้องการรีเซ็ตรหัสผ่าน)


ภาพ: แผนภาพลำดับขั้นตอนการยืนยันตัวตนด้วยรหัสผ่านสำหรับผู้ใช้ใหม่


ขั้นตอน
ลำดับ
ผู้ใช้ใหม่กรอก email ในหน้าเข้าสู่ระบบ OBT ของ Spotnana แล้วคลิก Next.
1
  • Spotnana UI ส่งคำขอ API ไปยัง Spotnana server เพื่อขอข้อมูลการตั้งค่าการยืนยันตัวตนของผู้ใช้ โดยมีข้อมูลเข้าสู่ระบบเป็นพารามิเตอร์
  • ผลลัพธ์ที่ได้จะมี tmcId, orgIdและ authProviderTypeของผู้ใช้
1 a

ผู้ใช้กรอกรหัสผ่านใหม่แล้วคลิก Next.

2
  • Spotnana UI ส่งคำขอ API ไปยัง Spotnana IdP เพื่อสมัครสมาชิกใหม่ พร้อมข้อมูล clientId, email และรหัสผ่านใหม่
  • หลังจากลงทะเบียนแล้ว ระบบจะส่งรหัส OTP ไปยังอีเมลของผู้ใช้
3
  • ผู้ใช้กรอกรหัส OTP ใน Spotnana UI แล้วคลิก Verify.
  • Spotnana UI ส่งคำขอไปยัง Spotnana IdP เพื่อตรวจสอบ OTP และสร้าง bearer token สำหรับเข้าสู่ระบบ
  • bearer token จะถูกสร้างและส่งกลับมายัง Spotnana UI แสดงว่าผู้ใช้ยืนยันตัวตนสำเร็จและสามารถเข้าใช้งาน Spotnana ได้
4
  • หลังจากยืนยันตัวตนในขั้นตอนที่ 3 แล้ว คำขอ API ทั้งหมดที่ตามมาจะต้องแนบ bearer token, orgIdและ tmcId ไว้ใน header ของคำขอด้วย
  • bearer token จะถูกตรวจสอบในทุกคำขอ API ที่เข้ามา และจะมีการส่งผลลัพธ์กลับไปยัง Spotnana UI


การยืนยันตัวตนผ่าน IdP

Spotnana รองรับการยืนยันตัวตนผ่าน IdP เช่น Google, Azure หรือ IdP อื่น ๆ ที่รองรับ OpenID Connect และ SAML ขั้นตอนและแผนภาพลำดับด้านล่างนี้จะแสดงวิธีการยืนยันตัวตนผ่าน IdP

ภาพ: แผนภาพลำดับขั้นตอนการยืนยันตัวตนผ่าน IdP


ขั้นตอนลำดับ
ผู้ใช้เข้าสู่ระบบผ่าน OBT หรือแอปมือถือ Spotnana โดยใช้ email ของตนเอง
1
  • Spotnana UI ส่งคำขอ API ไปยัง Spotnana server เพื่อขอข้อมูลการตั้งค่าการยืนยันตัวตนของผู้ใช้ โดยมีข้อมูลเข้าสู่ระบบเป็นพารามิเตอร์
  • ผลลัพธ์ที่ได้จะมี tmcId, orgIdและ authProviderTypeของผู้ใช้
2

Spotnana UI จะเปลี่ยนเส้นทางคำขอไปที่ Spotnana IdP

3

Spotnana IdP จะเปลี่ยนเส้นทางคำขอไปที่ IdP ของพันธมิตร เพื่อเริ่มกระบวนการยืนยันตัวตนผ่าน IdP

หมายเหตุ: ทุกครั้งที่มีการเปลี่ยนเส้นทาง จะมีรหัสสถานะ 302 เพื่อแจ้งว่าเปลี่ยน URL แล้ว
4

Spotnana IdP จะเชื่อมต่อกับ IdP ของพันธมิตร เพื่อยืนยันตัวตนของผู้ใช้

หมายเหตุ: ระหว่างการเชื่อมต่อ Spotnana IdP จะส่ง clientId และ clientSecret ในรูปแบบ form URL-encoded ผ่าน API ไปยัง Partner IdP หาก Partner IdP ไม่รองรับรูปแบบนี้ Spotnana server สามารถแปลงข้อมูลให้เป็นรูปแบบที่ Partner IdP เข้าใจได้
5

Partner IdP ตรวจสอบและยืนยันตัวตนของผู้ใช้สำเร็จ

หมายเหตุ: หลังจากขั้นตอนนี้ โปรไฟล์ผู้ใช้จะต้องผ่านการตรวจสอบ bearer token อีกครั้ง
5 a

เมื่อยืนยันตัวตนสำเร็จ Partner IdP จะส่งข้อมูลกลับไปที่ Spotnana IdP

5 b

Spotnana IdP สร้างรหัสเฉพาะให้กับโปรไฟล์ผู้ใช้ และส่งรหัสดังกล่าวไปยัง Spotnana UI

6
  • Spotnana UI ส่งคำขอ API ไปยัง Spotnana IdP โดยใช้ clientID และรหัสที่ได้รับจากขั้นตอน 5(b)
  • Spotnana IdP จะสร้าง bearer token ใหม่และส่งกลับไปยัง Spotnana UI
หมายเหตุ: การสร้าง bearer token สำเร็จ หมายถึงผู้ใช้ได้รับอนุญาตให้เข้าใช้งาน Spotnana แล้ว
7
  • หลังจากยืนยันตัวตนในขั้นตอนที่ 6 แล้ว คำขอ API ทั้งหมดที่ตามมาจะต้องแนบ bearer token, orgIdและ tmcId ไว้ใน header ของคำขอด้วย
  • bearer token จะถูกตรวจสอบในทุกคำขอ API ที่เข้ามา และจะมีการส่งผลลัพธ์กลับไปยัง Spotnana UI


การยืนยันตัวตนผ่าน API

สำหรับพันธมิตรที่เชื่อมต่อกับแพลตฟอร์ม Spotnana ผ่าน API สามารถใช้ endpoint สำหรับยืนยันตัวตนเพื่อขอ bearer token ให้กับผู้ใช้ได้ แผนภาพลำดับด้านล่างนี้จะแสดงขั้นตอนการยืนยันตัวตนผ่าน API

ภาพ: แผนภาพลำดับขั้นตอนการยืนยันตัวตนผ่าน API


ขั้นตอนลำดับ
1

ผู้ใช้ API เรียกใช้คำสั่ง POST ไปที่ get-auth-token(clientId,clientSecret) API endpoint ใน Spotnana server เพื่อขอ bearer token ชั่วคราว

ตัวอย่างคำสั่ง cURL สำหรับเรียกใช้งาน endpoint get-auth-token :

curl -i -X POST \
https://api.spotnana.com/get-auth-token \
-H 'Content-Type: application/json' \
-d '{
  "clientId": "sample-apiuser@tmcorg.com",
  "clientSecret": "<password>"
}'
หมายเหตุ: โปรดแทนที่ค่า clientId และ clientSecret ด้วยข้อมูลที่ได้รับจาก Spotnana 
2
  • Spotnana server เรียกใช้งาน getToken(clientId,clientSecret) ใน Spotnana IdP เพื่อสร้าง bearerToken ชั่วคราว bearerToken และส่งกลับมายัง Spotnana server
  • Spotnana server จะส่ง bearer token กลับไปให้ผู้ใช้ API ในรูปแบบ JSON


หลังจากได้รับ bearer token แล้ว ทุกคำขอ API ที่จะเรียกใช้ Spotnana APIs (เช่น Trip APIs) จะต้องแนบ bearer token ใน header เพื่อยืนยันสิทธิ์ 

หมายเหตุ: endpoint get-auth-token(clientId, clientSecret) มีการจำกัดไม่เกิน 100 ครั้งต่อ 5 นาที


การยืนยันตัวตนแบบ iFrame

การฝัง Spotnana UI ลงใน Partner UI (iFrame หรือ embedded solution) คือการที่ผู้ใช้เข้าถึง Spotnana ผ่านหน้าของพันธมิตร ในกรณีนี้ การยืนยันตัวตนจะอาศัยการแลกเปลี่ยนโทเคนระหว่างระบบของพันธมิตรกับ Spotnana

หมายเหตุ: สำหรับการยืนยันตัวตนแบบ iFrame ผู้ที่เข้าสู่ระบบจะถูกเรียกว่า callerเพื่อรองรับกรณีที่มี API/Machine user เข้าสู่ระบบและขอ access token ให้กับผู้ใช้อื่น โดย API/Machine user อาจใช้บัญชีแอดมิน TMC เชื่อมต่อกับ Spotnana server โดยตรง ดังนั้นจะใช้คำว่า caller เป็นคำกลาง หมายถึงทั้งผู้ใช้ที่เข้าสู่ระบบของตนเอง หรือ API/Machine user ที่ขอ access token ให้ผู้อื่น


แผนภาพลำดับด้านล่างนี้จะแสดงขั้นตอนการแลกเปลี่ยนโทเคนระหว่าง Spotnana กับเซิร์ฟเวอร์พันธมิตร

ภาพ: แผนภาพลำดับขั้นตอนการยืนยันตัวตนแบบ iFrame ด้วยการแลกเปลี่ยนโทเคน


ขั้นตอนลำดับ
caller เข้าสู่ระบบผ่าน Partner UI
1Partner UI แสดง Spotnana UI ผ่าน iFrame
2Spotnana UI ส่งคำขอไปยัง Partner UI ผ่าน post message เพื่อขอโทเคน โดยมี type=TOKEN_EXCHANGE_REQUESTแนบไปด้วย
3

Partner UI ส่งคำขอ API ไปยัง partner server เพื่อขอ OAuth token และเริ่มกระบวนการยืนยันตัวตนในขั้นตอนถัดไป

3 a

partner server เรียก Spotnana server โดยใช้ข้อมูลเข้าสู่ระบบและ subject token เป็นพารามิเตอร์ Spotnana server จะตรวจสอบว่าคำขอที่เข้ามาเป็นของ API/Machine user หรือไม่

3 b
  • Spotnana server เรียก partner server เพื่อขอ email ของ subject (caller)
  • email จะถูกส่งกลับไปยัง Spotnana server เพื่อใช้ระบุตัวผู้ใช้
3 c
  • Spotnana server ส่งผลลัพธ์กลับไปยัง partner server ตามคำขอ API ในขั้นตอนที่ 1 โดยมี access token และ refresh token
  • แล้วส่งข้อมูลนี้ต่อไปยัง Partner UI
4

Partner UI ส่งโทเคนไปยัง Spotnana UI ผ่าน post message โดยแนบ type=TOKEN_EXCHANGE_RESPONSE.

5
  • Spotnana UI ส่งคำขอ API ไปยัง Spotnana server เพื่อขอ bearer token ใหม่
  • Spotnana server จะสร้าง bearer token และส่งกลับมายัง Spotnana UI
หมายเหตุ: การสร้าง bearer token สำเร็จ หมายถึงผู้ใช้ได้รับอนุญาตให้เข้าใช้งาน Spotnana แล้ว
6
  • หลังจากยืนยันตัวตนในขั้นตอนที่ 3 แล้ว คำขอ API ทั้งหมดที่ตามมาจะต้องแนบ bearer token, orgIdและ tmcId ไว้ใน header ของคำขอด้วย
  • bearer token จะถูกตรวจสอบในทุกคำขอ API ที่เข้ามา และจะมีการส่งผลลัพธ์กลับไปยัง Spotnana UI


การยืนยันตัวตนด้วยรหัสยืนยัน (Auth code)

แผนภาพลำดับด้านล่างนี้จะแสดงวิธีการยืนยันตัวตนโดยใช้รหัสยืนยัน (authorization code)

ภาพ: แผนภาพลำดับขั้นตอนการยืนยันตัวตนด้วย auth code


ขั้นตอนลำดับ
1

Partner UI เรียก partner server เพื่อขอ auth code สำหรับ caller ที่กำลังเข้าสู่ระบบ และส่ง auth code กลับไปที่ Partner UI

2

Partner UI ส่งคำขอไปยัง Spotnana UI โดยใช้ custom redirect URL ที่มี tmcId และ authCode เป็นพารามิเตอร์

3

Spotnana UI เรียก API แบบ POST ไปยัง Spotnana server โดยใช้ v2/auth/token/companies/<tmcId>(authCode) API endpoint

3 a
  • Spotnana server ส่งคำขอไปยัง partner server เพื่อขอ pid ของผู้ใช้โดยใช้ auth code
  • pid ของผู้ใช้ จะถูกส่งกลับมายัง Spotnana server 3 b
Spotnana server จะสร้าง access token และ refresh token แล้วส่งกลับไปยัง Spotnana UI

4

Spotnana UI ส่งคำขอไปยัง Spotnana server โดยใช้ access token และ refresh token เพื่อขอ bearer token สำหรับเข้าใช้งาน
  • bearer token จะถูกสร้างและส่งกลับไปยัง Spotnana UI
  • หมายเหตุ:
การสร้าง bearer token สำเร็จ หมายถึงผู้ใช้ได้รับอนุญาตให้เข้าใช้งาน Spotnana แล้ว 5
หลังจากยืนยันตัวตนในขั้นตอนที่ 4 แล้ว คำขอ API ทั้งหมดที่ตามมาจะต้องแนบ bearer token,
  • orgId และtmcId ไว้ใน header ของคำขอด้วย bearer token จะถูกตรวจสอบในทุกคำขอ API ที่เข้ามา และจะมีการส่งผลลัพธ์กลับไปยัง Spotnana UI
  • หมายเหตุ:


การยืนยันตัวตนด้วยวิธีนี้จะไม่สามารถใช้ได้ในกรณีที่แอดมิน TMC อนุญาตให้ผู้ใช้หลายคนใช้ email เดียวกันในการเข้าสู่ระบบ การยืนยันตัวตนระหว่างเครื่อง (M2M)


วิธีการยืนยันตัวตนแบบ M2M เหมาะสำหรับกรณีที่แอปพลิเคชันฝั่งลูกค้าต้องเข้าถึง callback URL ของบุคคลที่สามเพื่อสร้าง

accessToken ให้กับผู้ใช้ แผนภาพลำดับด้านล่างนี้จะแสดงขั้นตอนการยืนยันตัวตนแบบ M2M ภาพ:

แผนภาพลำดับขั้นตอนการยืนยันตัวตนแบบ M2M ขั้นตอน


ลำดับpublic key ของแอปพลิเคชันทั้งหมดที่ใช้ในกระบวนการยืนยันตัวตนจะถูกซิงค์ระหว่าง Spotnana server และ Spotnana IdP เพื่อใช้ตรวจสอบ access token ในขั้นตอนถัดไป
1
partner server ส่งคำขอ API ไปที่

/oauth2/token(clientId,clientSecret) ใน Spotnana IdP เพื่อขอ bearer token และจะได้รับ bearer token กลับมา 2

partner server ส่งคำขอ API ไปยัง callback URL ของบุคคลที่สามเพื่อสร้าง access token ให้กับผู้ใช้
  • access token จะถูกสร้างและส่งต่อไปยัง Spotnana server
  • 3
Spotnana server จะตรวจสอบลายเซ็นของ access token โดยใช้ public key ที่ซิงค์ไว้ก่อนหน้า และตรวจสอบ
  • claim_id เพื่อยืนยันตัวตนของพันธมิตร จากนั้น access token จะถูกส่งกลับไปยัง partner server เพื่อใช้ยืนยันตัวตนของผู้ใช้
  • The access token is then sent to the partner server to authenticate the user.




บทความนี้มีประโยชน์หรือไม่?

เยี่ยมเลย!

ขอบคุณสำหรับความคิดเห็นของคุณ

ขออภัยที่เราช่วยเหลือไม่ได้!

ขอบคุณสำหรับความคิดเห็นของคุณ

บอกให้เราทราบว่าเราจะปรับปรุงบทความนี้ได้อย่างไร!

เลือกเหตุผลอย่างน้อยหนึ่งข้อ
ต้องมีการตรวจสอบ CAPTCHA

ส่งข้อเสนอแนะแล้ว

เราขอขอบคุณในความพยายามของคุณ และจะพยายามแก้ไขบทความดังกล่าว