กรณีการใช้งานทั่วไป
ในส่วนนี้ เราจะยกตัวอย่างเพื่อช่วยให้คุณเข้าใจสถานการณ์ที่ การอ้างสิทธิ์โทเค็นแบบกำหนดเอง สามารถนำไปใช้ได้จริง พร้อมทั้งเป็นข้อมูลอ้างอิง เมื่อคุณพบปัญหาในการจัดการการเข้าถึง คุณจะสามารถประเมินได้ว่าการอ้างสิทธิ์โทเค็นแบบกำหนดเองจะช่วยให้คุณสะดวกขึ้นหรือไม่
ทำให้การควบคุมการเข้าถึงตามแอตทริบิวต์ (ABAC) เป็นไปได้
การควบคุมการเข้าถึงตามแอตทริบิวต์ (ABAC) คือโมเดลการควบคุมการเข้าถึงที่ใช้แอตทริบิวต์ (เช่น บทบาทผู้ใช้ คุณสมบัติของทรัพยากร และเงื่อนไขแวดล้อม) ในการตัดสินใจอนุญาตการเข้าถึง เป็นวิธีที่ยืดหยุ่นและไดนามิกในการจัดการการเข้าถึงทรัพยากรที่ได้รับการปกป้อง
สมมติว่าคุณกำลังสร้างแอป และการเปิดตัวแอปแบ่งเป็น 2 เฟส: เบต้าสาธารณะ และเปิดตัวอย่างเป็นทางการ แม้หลังจากแอปเปิดตัวอย่างเป็นทางการแล้ว คุณยังต้องการให้ผู้ใช้เก่าที่เข้าร่วมเบต้าสาธารณะสามารถใช้ฟีเจอร์แบบชำระเงินต่อไปได้
หลังจากแอปเปิดตัวอย่างเป็นทางการ คุณใช้ฟีเจอร์ การควบคุมการเข้าถึงตามบทบาท (RBAC) ของ Logto เพื่อควบคุมการเข้าถึงฟีเจอร์แบบชำระเงิน เพื่อให้ตรวจสอบได้ง่ายว่าผู้ใช้เคยใช้แอปในช่วงเบต้าสาธารณะหรือไม่ คุณสามารถใช้เมธอด getCustomJwtClaims()
เพื่อเพิ่มการอ้างสิทธิ์ชื่อ createdAt
ลงใน payload ของโทเค็น
จากนั้น เมื่อควบคุมการเข้าถึงใน API ที่ได้รับการปกป้องของคุณ คุณต้องอนุญาตโทเค็นการเข้าถึงที่ตรงตามเงื่อนไขใดเงื่อนไขหนึ่งต่อไปนี้:
- ในบริบทของ RBAC มีขอบเขต (scope) สำหรับเข้าถึงทรัพยากรแบบชำระเงิน
createdAt
เกิดขึ้นก่อนเวลาสิ้นสุดของเฟสเบต้าสาธารณะ
หากไม่มีฟีเจอร์การอ้างสิทธิ์โทเค็นแบบกำหนดเอง เมื่อยืนยันสิทธิ์สำหรับ การอนุญาต (Authorization) จำเป็นต้องเรียก Logto Management API เพื่อตรวจสอบว่าผู้ใช้ที่มีโทเค็นการเข้าถึงปัจจุบันมีสิทธิ์ตามบทบาทที่ API resource นั้นต้องการหรือไม่
ในสถานการณ์คล้ายกัน สมมติว่าแอปของคุณจะแสดงคำอวยพรวันเกิดในหน้าลงชื่อเข้าใช้หากวันเกิดของผู้ใช้ใกล้เข้ามา คุณสามารถใช้การอ้างสิทธิ์โทเค็นแบบกำหนดเองเพื่อเพิ่มฟิลด์วันเกิดลงใน payload ของโทเค็น ซึ่งสามารถใช้ตัดสินใจว่าจะแสดงข้อความเฉพาะหรือไม่
บล็อกการออกโทเค็นด้วยตนเอง
สมมติว่า Joe กำลังให้บริการเกมออนไลน์และใช้ Logto เป็นระบบ การจัดการข้อมูลระบุตัวตนและการเข้าถึง (IAM)
สมมติว่าเกมนี้ต้องเติมเงินเพื่อซื้อเวลาเล่นเกม Joe บันทึกยอดเงินของผู้ใช้แต่ละคนไว้ในบริการเกมของเขา และหักยอดเงินอย่างต่อเนื่องตามเวลาที่เล่นเกม Joe ต้องการบังคับให้ผู้เล่นออกจากระบบเมื่อยอดเงินหมด เพื่อกระตุ้นให้เติมเงิน
ในจุดนี้ Joe สามารถใช้ฟีเจอร์การอ้างสิทธิ์โทเค็นแบบกำหนดเองของ Logto เพื่อทำสิ่งนี้ได้:
- ในสคริปต์ สามารถเรียก API ภายนอก ดึงข้อมูลภายนอก เพื่อดึงยอดเงินปัจจุบันของผู้เล่นจากเซิร์ฟเวอร์เกมของ Joe
- หากยอดเงินน้อยกว่าหรือเท่ากับ 0 สามารถใช้เมธอด
api.denyAccess()
เพื่อบล็อกการออกโทเค็น
ในขณะนี้ เมื่อไม่สามารถรับโทเค็นการเข้าถึงที่ถูกต้องใหม่ได้ ผู้เล่นจะถูกบังคับให้ออกจากระบบเกมทันที