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

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

บทนำ​

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

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

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

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

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

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

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

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

ScopeClaims
openidsub, auth_time, acr, amr (การอ้างสิทธิ์บริบทการยืนยันตัวตนจะถูกรวมเมื่อมีอยู่ในเซสชัน; ดู Step-up authentication)
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. เงื่อนไขขอบเขต: แอปพลิเคชันต้องร้องขอขอบเขตที่เกี่ยวข้องระหว่างการยืนยันตัวตน
  2. สวิตช์ใน Console: ผู้ดูแลระบบต้องเปิดการรวมการอ้างสิทธิ์นั้นในโทเค็น ID ผ่าน Logto Console

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

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

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

ตั้งค่าใน Logto Console​

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

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

OpenID Connect Core - ID Token