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

กรณีการใช้งานทั่วไป (Common use cases)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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