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

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

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

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

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

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

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

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

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

  • ผู้ใช้ที่ไม่มีสิทธิ์เข้าถูกบล็อกก่อนที่จะลงชื่อเข้าใช้แอปพลิเคชันได้สำเร็จ
  • การให้สิทธิ์แอปที่มีอยู่จะถูกตรวจสอบอีกครั้งเมื่อใช้โทเค็นรีเฟรชเพื่อขอโทเค็นใหม่
  • การอัปเดตกฎจะมีผลกับการตรวจสอบการอนุญาตและการต่ออายุโทเค็นในอนาคต โดยไม่เปลี่ยนแปลงเซสชัน 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 และแอปพลิเคชันอื่น ๆ ได้

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

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

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

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

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

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

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

บันทึก:

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

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

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

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

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

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