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

โทเค็นการเข้าถึงแบบกำหนดเอง (Custom access token)

Logto มอบความยืดหยุ่นในการเพิ่มการอ้างสิทธิ์ (claims) แบบกำหนดเองภายในโทเค็นการเข้าถึง (โทเค็นการเข้าถึง / โทเค็นทึบ). ด้วยฟีเจอร์นี้ คุณสามารถใส่ข้อมูลเพิ่มเติมสำหรับตรรกะทางธุรกิจของคุณ ซึ่งจะถูกส่งอย่างปลอดภัยในโทเค็นและสามารถดึงข้อมูลได้ผ่าน introspection ในกรณีของโทเค็นทึบ

บทนำ

โทเค็นการเข้าถึง (Access tokens) มีบทบาทสำคัญในกระบวนการ การยืนยันตัวตน (Authentication) และ การอนุญาต (Authorization) โดยบรรทุกข้อมูลตัวตนของผู้ถูกอ้างถึง (subject) และสิทธิ์ (permissions) และถูกส่งผ่านระหว่าง เซิร์ฟเวอร์ Logto (ทำหน้าที่เป็น auth server หรือ identity provider, IdP), เซิร์ฟเวอร์เว็บเซอร์วิสของคุณ (resource provider), และแอปพลิเคชันฝั่งไคลเอนต์ (clients)

การอ้างสิทธิ์ของโทเค็น (Token claims) คือคู่คีย์-ค่า (key-value pairs) ที่ให้ข้อมูลเกี่ยวกับเอนทิตีหรือโทเค็นเอง การอ้างสิทธิ์อาจรวมถึงข้อมูลผู้ใช้, เวลาหมดอายุของโทเค็น, สิทธิ์ (permissions), และเมตาดาต้าอื่น ๆ ที่เกี่ยวข้องกับกระบวนการ การยืนยันตัวตน (Authentication) และ การอนุญาต (Authorization)

ใน Logto มีโทเค็นการเข้าถึงอยู่สองประเภท:

  • JSON Web Token: JSON Web Token (JWT) เป็นรูปแบบยอดนิยมที่เข้ารหัสการอ้างสิทธิ์ในลักษณะที่ปลอดภัยและอ่านได้โดยไคลเอนต์ การอ้างสิทธิ์ทั่วไปเช่น sub, iss, aud ฯลฯ ถูกใช้ตามโปรโตคอล OAuth 2.0 (ดู ลิงก์นี้ สำหรับรายละเอียดเพิ่มเติม) JWT ช่วยให้ผู้บริโภคเข้าถึงการอ้างสิทธิ์ได้โดยตรงโดยไม่ต้องตรวจสอบเพิ่มเติม ใน Logto โทเค็นการเข้าถึงจะออกในรูปแบบ JWT โดยค่าเริ่มต้นเมื่อไคลเอนต์เริ่มคำขอการอนุญาตของทรัพยากรหรือองค์กรที่ระบุ
  • โทเค็นทึบ (Opaque token): โทเค็นทึบ (opaque token) ไม่ได้บรรจุข้อมูลในตัวเองและต้องมีขั้นตอนตรวจสอบเพิ่มเติมผ่าน token introspection เสมอ แม้จะมีรูปแบบที่ไม่โปร่งใส โทเค็นทึบก็สามารถใช้รับการอ้างสิทธิ์และส่งต่ออย่างปลอดภัยระหว่างฝ่ายต่าง ๆ การอ้างสิทธิ์ของโทเค็นจะถูกเก็บไว้อย่างปลอดภัยในเซิร์ฟเวอร์ Logto และเข้าถึงได้โดยแอปพลิเคชันไคลเอนต์ผ่าน token introspection endpoint โทเค็นการเข้าถึงจะออกในรูปแบบทึบเมื่อไม่มีการระบุทรัพยากรหรือองค์กรในคำขอการอนุญาต โทเค็นเหล่านี้ใช้หลัก ๆ สำหรับเข้าถึง OIDC userinfo endpoint และวัตถุประสงค์ทั่วไปอื่น ๆ

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

การอ้างสิทธิ์โทเค็นแบบกำหนดเองทำงานอย่างไร?

Logto อนุญาตให้คุณแทรกการอ้างสิทธิ์แบบกำหนดเองลงใน access token ผ่าน callback function getCustomJwtClaims คุณสามารถให้ implementation ของฟังก์ชัน getCustomJwtClaims เพื่อคืนอ็อบเจกต์ของการอ้างสิทธิ์แบบกำหนดเอง ค่าที่คืนมาจะถูกรวมกับ payload ดั้งเดิมของโทเค็นและเซ็นเพื่อลงนามเป็นโทเค็นการเข้าถึงสุดท้าย

ข้อมูล:

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

คำเตือน:

หมายเหตุด้านความปลอดภัย: ในการติดตั้งแบบ self-hosted สคริปต์ JWT แบบกำหนดเองจะถูกรันด้วยสิทธิ์เดียวกับ process ของเซิร์ฟเวอร์ Logto ฟีเจอร์นี้ออกแบบมาสำหรับผู้ดูแลระบบที่เชื่อถือได้เท่านั้น ห้ามให้ผู้ใช้ที่ไม่น่าเชื่อถือหรือมีสิทธิ์ต่ำกว่าสร้าง แก้ไข หรือทดสอบสคริปต์เหล่านี้

เพิ่มการอ้างสิทธิ์แบบกำหนดเองสำหรับ JWT access token ด้วย Logto เพื่อยกระดับการอนุญาต (Authorization) ของคุณ