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

การควบคุมการเข้าถึงระดับแอป (App-level access control)

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

ใช้การควบคุมการเข้าถึงระดับแอปเมื่อคุณต้องการ:

  • ทำให้แอปภายในใช้งานได้เฉพาะพนักงานหรือผู้ดูแลระบบเท่านั้น
  • จำกัด Protected App ให้กับกลุ่มผู้ใช้ที่เลือกไว้
  • อนุญาตเฉพาะลูกค้าหรือพันธมิตรบางรายให้เข้าถึง แอป OIDC / OAuth ของบุคคลที่สาม
  • เปิดตัวแอปใหม่ให้กับกลุ่มนำร่องก่อนเปิดให้ทุกคน

วิธีการทำงาน

เมื่อปิดการควบคุมการเข้าถึงระดับแอป ผู้ใช้ที่ลงทะเบียนทุกคนใน Logto tenant ของคุณสามารถลงชื่อเข้าใช้แอปพลิเคชันได้

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

การควบคุมการเข้าถึงระดับแอปจะถูกประเมินระหว่างกระบวนการ authorization และการต่ออายุโทเค็น ซึ่งหมายความว่า:

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

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

ประเภทของกฎ

คุณสามารถกำหนดกฎอนุญาตต่อไปนี้ได้:

ประเภทกฎสิ่งที่อนุญาต
ผู้ใช้ (Users)ผู้ใช้เฉพาะสามารถเข้าถึงแอปพลิเคชันได้
บทบาทผู้ใช้ (User roles)ผู้ใช้ที่ได้รับมอบหมายบทบาทผู้ใช้ที่เลือกสามารถเข้าถึงแอปพลิเคชันได้
องค์กร (Organizations)สมาชิกปัจจุบันและอนาคตทั้งหมดขององค์กรที่เลือกสามารถเข้าถึงแอปพลิเคชันได้
บทบาทในองค์กร (Organization roles)สมาชิกที่มีบทบาทในองค์กรที่เลือกในองค์กรที่เลือกสามารถเข้าถึงแอปพลิเคชันได้

กฎเป็นแบบเพิ่มรวม (additive) ผู้ใช้เพียงแค่ตรงกับกฎใดกฎหนึ่งก็สามารถเข้าถึงแอปพลิเคชันได้

ตัวอย่างเช่น หากแอปพลิเคชันมีทั้งกฎบทบาทผู้ใช้ “Support team” และกฎบทบาทในองค์กร “BigTree - Admin” ผู้ใช้จะเข้าถึงแอปได้หากได้รับมอบหมายบทบาท Support team หรือเป็น Admin ในองค์กร BigTree

ตั้งค่าการควบคุมการเข้าถึงระดับแอป

  1. ไปที่ Console > Applications
  2. เปิดแอปพลิเคชันที่คุณต้องการจำกัด
  3. ไปที่แท็บ Rules
  4. ใน Custom allow rules คลิก Add rules
  5. เลือกประเภทกฎ:
    • Users
    • User roles
    • Organizations
    • Organization roles
  6. เลือกผู้ใช้, บทบาท, องค์กร หรือบทบาทในองค์กรที่ควรได้รับอนุญาตให้เข้าถึงแอปพลิเคชัน
  7. เปิดใช้งาน Enable access control
  8. คลิก Save changes
important:

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

แก้ไขหรือลบกฎ

คุณสามารถอัปเดตรายการอนุญาตได้จากแท็บ Rules ของแอปพลิเคชัน

  • หากต้องการเพิ่มกฎ คลิก Add another ใต้ตารางกฎ
  • หากต้องการลบกฎ คลิกปุ่มลบบนแถวกฎและยืนยันการดำเนินการ
  • หลังจากเพิ่มหรือลบกฎ คลิก Save changes เพื่อบันทึกการอัปเดต

หากเปิดใช้งานการควบคุมการเข้าถึง Logto ต้องการให้มีกฎอย่างน้อยหนึ่งข้อคงอยู่ หากต้องการลบกฎทั้งหมด ให้ปิด Enable access control ก่อน แล้วจึงบันทึกการเปลี่ยนแปลง

ผลกระทบของการเปลี่ยนกฎต่อผู้ใช้

การควบคุมการเข้าถึงระดับแอปจะไม่ยุติเซสชัน Logto ระดับโกลบอลของผู้ใช้ ผู้ใช้ยังคงลงชื่อเข้าใช้ Logto และแอปพลิเคชันอื่น ๆ ได้

สำหรับแอปพลิเคชันที่ถูกจำกัด:

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

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

ความสัมพันธ์กับสิทธิ์ของแอปบุคคลที่สาม

สำหรับ แอปพลิเคชันบุคคลที่สาม การควบคุมการเข้าถึงระดับแอปและการจัดการสิทธิ์แก้ปัญหาคนละด้านกัน:

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

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

ความสัมพันธ์กับ Protected App

สำหรับ Protected App การควบคุมการเข้าถึงระดับแอปจะจำกัดว่าใครสามารถผ่านชั้นการยืนยันตัวตนของ Logto และเข้าถึง origin server ที่ได้รับการปกป้องได้

กฎการยืนยันตัวตนของ Protected App ยังคงกำหนดว่า route ใดต้องการการยืนยันตัวตน การควบคุมการเข้าถึงระดับแอปจะกำหนดว่าผู้ใช้ Logto ที่ได้รับการยืนยันตัวตนคนใดได้รับอนุญาตให้เข้าถึงแอป Protected App

แนวทางปฏิบัติที่ดีที่สุด

  • เริ่มต้นด้วยกฎบทบาทผู้ใช้หรือบทบาทในองค์กรเมื่อเป็นไปได้ เพราะดูแลรักษาง่ายกว่ารายชื่อผู้ใช้ยาว ๆ
  • ใช้กฎองค์กรเมื่อทุกคนในองค์กรควรเข้าถึงแอป
  • ใช้กฎบทบาทในองค์กรเมื่อเฉพาะสมาชิกบางคนขององค์กรควรเข้าถึงแอป
  • ทบทวนกฎการเข้าถึงเมื่อผู้ใช้เปลี่ยนบทบาท, เข้าร่วมองค์กร หรือออกจากองค์กร
  • แยกสิทธิ์ RBAC และการควบคุมการเข้าถึงระดับแอปในโมเดลความคิดของคุณ: การควบคุมการเข้าถึงระดับแอปตอบคำถาม “ผู้ใช้คนนี้เข้าถึงแอปนี้ได้หรือไม่?” ขณะที่ RBAC ตอบว่า “ผู้ใช้คนนี้สามารถทำอะไรได้บ้างหลังเข้าถึง API หรือฟีเจอร์ขององค์กร?”