โทเค็นการเข้าถึงแบบกำหนดเอง (Custom access token)
Logto มอบความยืดหยุ่นในการเพิ่มการอ้างสิทธิ์ (claims) แบบกำหนดเองภายในโทเค็นการเข้าถึง (โทเค็นการเข้าถึง / โทเค็นทึบ). ด้วยฟีเจอร์นี้ คุณสามารถใส่ข้อมูลเพิ่มเติมสำหรับตรรกะทางธุรกิจของคุณ ซึ่งจะถูกส่งอย่างปลอดภัยในโทเค็นและสามารถดึงข้อมูลได้ผ่าน introspection ในกรณีของโทเค็นทึบ
บทนำ
โทเค็นการเข้าถึง (Access tokens) มีบทบาทสำคัญในกระบวนการ การยืนยันตัวตน (Authentication) และ การอนุญาต (Authorization) โดยจะบรรจุข้อมูลตัวตนของผู้ถูกอ้างถึง (Subject) และสิทธิ์ต่าง ๆ และถูกส่งต่อระหว่าง Logto server (ทำหน้าที่เป็น auth server หรือ identity provider, IdP), เซิร์ฟเวอร์บริการเว็บของคุณ (resource provider), และแอปพลิเคชันฝั่งลูกค้า (clients)
การอ้างสิทธิ์ของโทเค็น (Token claims) คือคู่คีย์-ค่า ที่ให้ข้อมูลเกี่ยวกับเอนทิตีหรือโทเค็นเอง การอ้างสิทธิ์อาจรวมถึงข้อมูลผู้ใช้, เวลาหมดอายุของโทเค็น, สิทธิ์ (permissions), และเมตาดาต้าอื่น ๆ ที่เกี่ยวข้องกับกระบวนการ การยืนยันตัวตน (Authentication) และ การอนุญาต (Authorization)
ใน Logto มีโทเค็นการเข้าถึงอยู่ 2 ประเภท:
- JSON Web Token: JSON Web Token (JWT) เป็นรูปแบบยอดนิยมที่เข้ารหัสการอ้างสิทธิ์ในลักษณะที่ปลอดภัยและอ่านได้โดย client การอ้างสิทธิ์ทั่วไป เช่น
sub,iss,audฯลฯ ถูกใช้ตามมาตรฐาน OAuth 2.0 (ดู ลิงก์นี้ สำหรับรายละเอียดเพิ่มเติม) JWT อนุญาตให้ผู้ใช้เข้าถึงการอ้างสิทธิ์ได้โดยตรงโดยไม่ต้องตรวจสอบเพิ่มเติม ใน Logto โทเค็นการเข้าถึงจะออกในรูปแบบ JWT โดยค่าเริ่มต้นเมื่อ client เริ่มคำขอการอนุญาตสำหรับทรัพยากรหรือองค์กรที่ระบุ - โทเค็นทึบ (Opaque token): โทเค็นทึบ (Opaque token) ไม่ได้บรรจุข้อมูลในตัวเองและต้องมีขั้นตอนตรวจสอบเพิ่มเติมผ่าน token introspection เสมอ แม้จะมีรูปแบบที่ไม่โปร่งใส แต่โทเค็นทึบสามารถใช้เพื่อรับการอ้างสิทธิ์และส่งต่ออย่างปลอดภัยระหว่างฝ่ายต่าง ๆ การอ้างสิทธิ์ของโทเค็นจะถูกเก็บไว้อย่างปลอดภัยใน Logto server และเข้าถึงได้โดย client ผ่าน token introspection endpoint โทเค็นการเข้าถึงจะออกในรูปแบบทึบเมื่อไม่มีการระบุ resource หรือ organization ในคำขอการอนุญาต โทเค็นเหล่านี้ใช้หลัก ๆ สำหรับเข้าถึง OIDC
userinfoendpoint และวัตถุประสงค์ทั่วไปอื่น ๆ
ในหลายกรณี การอ้างสิทธิ์มาตรฐานอาจไม่เพียงพอต่อความต้องการเฉพาะของแอปพลิเคชันของคุณ ไม่ว่าคุณจะใช้ JWT หรือโทเค็นทึบก็ตาม เพื่อแก้ไขปัญหานี้ Logto จึงให้ความยืดหยุ่นในการเพิ่มการอ้างสิทธิ์แบบกำหนดเองในโทเค็นการเข้าถึง คุณสามารถใส่ข้อมูลเพิ่มเติมสำหรับตรรกะทางธุรกิจของคุณ ซึ่งจะถูกส่งอย่างปลอดภัยในโทเค็นและสามารถดึงข้อมูลได้ผ่าน introspection ในกรณีของโทเค็นทึบ
การทำงานของการอ้างสิทธิ์โทเค็นแบบกำหนดเอง
Logto อนุญาตให้คุณแทรกการอ้างสิทธิ์แบบกำหนดเองลงใน access token ผ่าน callback function ที่ชื่อว่า getCustomJwtClaims คุณสามารถกำหนดฟังก์ชัน getCustomJwtClaims ของคุณเองเพื่อคืนค่าเป็นอ็อบเจกต์ของการอ้างสิทธิ์แบบกำหนดเอง ค่าที่คืนมาจะถูกรวมกับ payload ดั้งเดิมของโทเค็นและเซ็นชื่อเพื่อสร้างโทเค็นการเข้าถึงสุดท้าย
การอ้างสิทธิ์โทเค็นที่มีอยู่ใน Logto ไม่สามารถถูกเขียนทับหรือแก้ไขได้ การอ้างสิทธิ์แบบกำหนดเองจะถูกเพิ่มเข้าไปในโทเค็นเป็นการอ้างสิทธิ์เพิ่มเติม หากมีการอ้างสิทธิ์แบบกำหนดเองที่ขัดแย้งกับการอ้างสิทธิ์ที่มีอยู่ การอ้างสิทธิ์แบบกำหนดเองเหล่านั้นจะถูกละเว้น
แหล่งข้อมูลที่เกี่ยวข้อง
เพิ่มการอ้างสิทธิ์แบบกำหนดเองสำหรับ JWT access token ด้วย Logto เพื่อเสริมประสิทธิภาพการอนุญาต (Authorization) ของคุณ