ข้ามไปยังเนื้อหาหลัก

โทเค็น ID แบบกำหนดเอง

บทนำ

โทเค็น ID (ID token) คือโทเค็นชนิดพิเศษที่กำหนดโดยโปรโตคอล OpenID Connect (OIDC) ทำหน้าที่เป็นการยืนยันตัวตนที่ออกโดยเซิร์ฟเวอร์การอนุญาต (Logto) หลังจากผู้ใช้ได้รับการยืนยันตัวตนสำเร็จ โดยจะบรรจุการอ้างสิทธิ์ (claims) เกี่ยวกับตัวตนของผู้ใช้ที่ได้รับการยืนยัน

แตกต่างจาก โทเค็นการเข้าถึง (Access tokens) ซึ่งใช้สำหรับเข้าถึงทรัพยากรที่ได้รับการป้องกัน โทเค็น ID ถูกออกแบบมาโดยเฉพาะเพื่อส่งข้อมูลตัวตนของผู้ใช้ที่ได้รับการยืนยันไปยังแอปพลิเคชันไคลเอนต์ โทเค็นเหล่านี้เป็น JSON Web Tokens (JWTs) ที่บรรจุการอ้างสิทธิ์เกี่ยวกับเหตุการณ์การยืนยันตัวตนและผู้ใช้ที่ได้รับการยืนยัน

การทำงานของการอ้างสิทธิ์ในโทเค็น ID

ใน Logto การอ้างสิทธิ์ในโทเค็น ID แบ่งออกเป็น 2 ประเภท:

  1. การอ้างสิทธิ์ OIDC มาตรฐาน (Standard OIDC claims): กำหนดโดยข้อกำหนดของ OIDC การอ้างสิทธิ์เหล่านี้ขึ้นอยู่กับขอบเขต (scopes) ที่ร้องขอระหว่างการยืนยันตัวตน
  2. การอ้างสิทธิ์แบบขยาย (Extended claims): การอ้างสิทธิ์ที่ Logto ขยายขึ้นเพื่อบรรจุข้อมูลตัวตนเพิ่มเติม โดยควบคุมด้วย โมเดลสองเงื่อนไข (Scope + Toggle)

การอ้างสิทธิ์ OIDC มาตรฐาน

การอ้างสิทธิ์มาตรฐานถูกควบคุมโดยข้อกำหนดของ OIDC อย่างสมบูรณ์ การรวมการอ้างสิทธิ์เหล่านี้ในโทเค็น ID ขึ้นอยู่กับขอบเขตที่แอปพลิเคชันของคุณร้องขอระหว่างการยืนยันตัวตน Logto ไม่อนุญาตให้ปิดหรือเลือกไม่รวมการอ้างสิทธิ์มาตรฐานแต่ละรายการ

ตารางต่อไปนี้แสดงการจับคู่ระหว่างขอบเขตมาตรฐานกับการอ้างสิทธิ์ที่เกี่ยวข้อง:

ขอบเขต (Scope)การอ้างสิทธิ์ (Claims)
openidsub
profilename, family_name, given_name, middle_name, nickname, preferred_username, profile, picture, website, gender, birthdate, zoneinfo, locale, updated_at
emailemail, email_verified
phonephone_number, phone_number_verified
addressaddress

ตัวอย่างเช่น หากแอปพลิเคชันของคุณร้องขอขอบเขต openid profile email โทเค็น ID จะรวมการอ้างสิทธิ์ทั้งหมดจากขอบเขต openid, profile และ email

การอ้างสิทธิ์แบบขยาย

นอกเหนือจากการอ้างสิทธิ์ OIDC มาตรฐาน Logto ยังขยายการอ้างสิทธิ์เพิ่มเติมที่บรรจุข้อมูลตัวตนเฉพาะของระบบนิเวศ Logto การอ้างสิทธิ์แบบขยายเหล่านี้จะถูกรวมในโทเค็น ID ตาม โมเดลสองเงื่อนไข ดังนี้:

  1. เงื่อนไขขอบเขต (Scope condition): แอปพลิเคชันต้องร้องขอขอบเขตที่เกี่ยวข้องระหว่างการยืนยันตัวตน
  2. Toggle ใน Console: ผู้ดูแลระบบต้องเปิดการรวมการอ้างสิทธิ์นั้นในโทเค็น ID ผ่าน Logto Console

ทั้งสองเงื่อนไขต้องเป็นจริงพร้อมกัน ขอบเขตทำหน้าที่เป็นการประกาศการเข้าถึงในระดับโปรโตคอล ส่วน toggle ทำหน้าที่เป็นการควบคุมการเปิดเผยในระดับผลิตภัณฑ์ — หน้าที่ของแต่ละส่วนชัดเจนและไม่สามารถทดแทนกันได้

ขอบเขตและการอ้างสิทธิ์แบบขยายที่มีให้ใช้งาน

ขอบเขต (Scope)การอ้างสิทธิ์ (Claims)คำอธิบายรวมโดยค่าเริ่มต้น
custom_datacustom_dataข้อมูลกำหนดเองที่เก็บในอ็อบเจกต์ผู้ใช้
identitiesidentities, sso_identitiesข้อมูลบัญชีโซเชียลและ SSO ที่เชื่อมโยงกับผู้ใช้
rolesrolesบทบาทที่กำหนดให้กับผู้ใช้
urn:logto:scope:organizationsorganizationsรหัสองค์กรของผู้ใช้
urn:logto:scope:organizationsorganization_dataข้อมูลองค์กรของผู้ใช้
urn:logto:scope:organization_rolesorganization_rolesการกำหนดบทบาทองค์กรของผู้ใช้

การตั้งค่าใน Logto Console

เพื่อเปิดใช้งานการอ้างสิทธิ์แบบขยายในโทเค็น ID:

  1. ไปที่ Console > Custom JWT
  2. เปิด toggle สำหรับการอ้างสิทธิ์ที่คุณต้องการรวมในโทเค็น ID
  3. ตรวจสอบให้แน่ใจว่าแอปพลิเคชันของคุณร้องขอขอบเขตที่เกี่ยวข้องระหว่างการยืนยันตัวตน
โทเค็นการเข้าถึงแบบกำหนดเอง

OpenID Connect Core - ID Token