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

กรณีการใช้งานทั่วไป

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

ทำให้การควบคุมการเข้าถึงตามแอตทริบิวต์ (ABAC) เป็นไปได้

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

สมมติว่าคุณกำลังสร้างแอป และการเปิดตัวแอปแบ่งเป็น 2 เฟส: เบต้าสาธารณะ และเปิดตัวอย่างเป็นทางการ แม้หลังจากแอปเปิดตัวอย่างเป็นทางการแล้ว คุณยังต้องการให้ผู้ใช้เก่าที่เข้าร่วมเบต้าสาธารณะสามารถใช้ฟีเจอร์แบบชำระเงินต่อไปได้

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

จากนั้น เมื่อควบคุมการเข้าถึงใน API ที่ได้รับการปกป้องของคุณ คุณต้องอนุญาตโทเค็นการเข้าถึงที่ตรงตามเงื่อนไขใดเงื่อนไขหนึ่งต่อไปนี้:

  1. ในบริบทของ RBAC มีขอบเขต (scope) สำหรับเข้าถึงทรัพยากรแบบชำระเงิน
  2. createdAt เกิดขึ้นก่อนเวลาสิ้นสุดของเฟสเบต้าสาธารณะ

หากไม่มีฟีเจอร์การอ้างสิทธิ์โทเค็นแบบกำหนดเอง เมื่อยืนยันสิทธิ์สำหรับ การอนุญาต (Authorization) จำเป็นต้องเรียก Logto Management API เพื่อตรวจสอบว่าผู้ใช้ที่มีโทเค็นการเข้าถึงปัจจุบันมีสิทธิ์ตามบทบาทที่ API resource นั้นต้องการหรือไม่

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

บล็อกการออกโทเค็นด้วยตนเอง

สมมติว่า Joe กำลังให้บริการเกมออนไลน์และใช้ Logto เป็นระบบ การจัดการข้อมูลระบุตัวตนและการเข้าถึง (IAM)

สมมติว่าเกมนี้ต้องเติมเงินเพื่อซื้อเวลาเล่นเกม Joe บันทึกยอดเงินของผู้ใช้แต่ละคนไว้ในบริการเกมของเขา และหักยอดเงินอย่างต่อเนื่องตามเวลาที่เล่นเกม Joe ต้องการบังคับให้ผู้เล่นออกจากระบบเมื่อยอดเงินหมด เพื่อกระตุ้นให้เติมเงิน

ในจุดนี้ Joe สามารถใช้ฟีเจอร์การอ้างสิทธิ์โทเค็นแบบกำหนดเองของ Logto เพื่อทำสิ่งนี้ได้:

  1. ในสคริปต์ สามารถเรียก API ภายนอก ดึงข้อมูลภายนอก เพื่อดึงยอดเงินปัจจุบันของผู้เล่นจากเซิร์ฟเวอร์เกมของ Joe
  2. หากยอดเงินน้อยกว่าหรือเท่ากับ 0 สามารถใช้เมธอด api.denyAccess() เพื่อบล็อกการออกโทเค็น

ในขณะนี้ เมื่อไม่สามารถรับโทเค็นการเข้าถึงที่ถูกต้องใหม่ได้ ผู้เล่นจะถูกบังคับให้ออกจากระบบเกมทันที