• organizations
  • collaboration
  • identity
  • user management
  • authentication
  • authorization

กรณีศึกษา: สร้าง multi-tenancy ด้วย Logto องค์กร

เรียนรู้วิธีสร้างฐานข้อมูลตัวตนที่มั่นคงและสามารถขยายได้สำหรับ multi-tenancy ด้วย Logto องค์กร

Gao
Gao
Founder

ทุกวันนี้, multi-tenancy กลายเป็นส่วนสำคัญของแอปพลิเคชัน หรือ SaaS มันมักจะขับเคลื่อนความสัมพันธ์ที่ซับซ้อนระหว่างผู้ใช้, องค์กร, บทบาท, และสิทธิ์ ตัวอย่างเช่น, ผู้ใช้สามารถเป็นสมาชิกในหลายองค์กร, และในทางกลับกัน; ผู้ใช้ยังสามารถมีบทบาทที่ต่างกันในองค์กรที่ต่างกันได้ด้วย

ปัญหา

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

ตัวอย่างองค์กร

ยกตัวอย่างเช่น, ในตอนแรก, คุณอาจมีเพียงสองบทบาทในแต่ละองค์กร: admin และ member เมื่อคุณมี 10 องค์กร, คุณจะต้องจัดการ 20 บทบาท; เมื่อคุณมี 1,000 องค์กร, คุณจะต้องจัดการ 2,000 บทบาท

เมื่อธุรกิจเติบโต, คุณอาจจำเป็นต้องเพิ่มบทบาทเพิ่มเติม เช่น guest, developer, เป็นต้น ความซับซ้อนของโมเดล RBAC จะเพิ่มขึ้นอย่างทวีคูณ

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

แม่แบบองค์กร

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

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

สมมติว่าเรามีสองบทบาทสำหรับแต่ละองค์กร:

  • admin: สามารถจัดการองค์กร, รวมถึงเพิ่ม / ลบสมาชิก, เปลี่ยนบทบาท เป็นต้น
  • member: สามารถเข้าถึงทรัพยากรขององค์กรและเชิญสวนร่วมใหม่

เราสามารถสร้างแม่แบบองค์กรด้วยการตั้งค่าต่อไปนี้:

แม่แบบองค์กร

เพิ่มผู้ใช้เข้าสู่องค์กร

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

ดู การตั้งค่าองค์กร เพื่อเรียนรู้เพิ่มเติม

เราได้เพิ่มสององค์กรต่อไปนี้ด้วยการตั้งค่าต่อไปนี้:

  • องค์กร A: ทั้งอลิซและบ็อบเป็นสมาชิก อลิซมีบทบาท admin, และบ็อบมีบทบาท member
  • องค์กร B: มีเฉพาะอลิซที่เป็นสมาชิก, และเธอมีบทบาท member

องค์กร A

องค์กร B

ขอรับโทเค็นองค์กรในแอปของคุณ

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

ขั้นตอนการขอโทเค็นองค์กรมีรายละเอียดใน การรวมองค์กรกับแอปของคุณ

สมมติว่าอลิซเข้าสู่ระบบแอปของคุณ, และเธอต้องการลบผู้ใช้ในองค์กร A แอปของคุณสามารถขอโทเค็นองค์กรสำหรับ "องค์กร A" ด้วยสิทธิ์ remove:member (scope) Logto จะตรวจสอบว่าอลิซมีสิทธิ์ในองค์กรและส่งคืนโทเค็นองค์กรเนื่องจากเธอมีบทบาท admin:

นี่เป็นตัวอย่างของกรณีที่มีข้อผิดพลาด:

  • หากบ็อบต้องการลบผู้ใช้ในองค์กร A, Logto จะส่งคืนข้อผิดพลาดเนื่องจากเขาไม่มีบทบาท admin ในองค์กร A
  • หากอลิซต้องการลบผู้ใช้ในองค์กร B, Logto จะส่งคืนข้อผิดพลาดเนื่องจากเธอไม่มีบทบาท admin ในองค์กร B
  • หากบ็อบต้องการนำโทเค็นองค์กรพร้อมสิทธิ์ใด ๆ ในองค์กร B, Logto จะส่งคืนข้อผิดพลาดเนื่องจากเขาไม่มีสมาชิกภาพในองค์กร B

หลังจากแอปพลิเคชันของคุณได้รับโทเค็นองค์กร มันสามารถเรียกใช้บริการของคุณด้วยโทเค็นองค์กรโดยเพิ่มลงไปใน Authorization header

ตรวจสอบความถูกต้องของโทเค็นองค์กรในบริการของคุณ

ในบริการของคุณ คุณสามารถตรวจสอบความถูกต้องของโทเค็นองค์กรผ่านกระบวนการตรวจสอบโทเค็น JWT มาตรฐาน ดู การตรวจสอบความถูกต้องของโทเค็นองค์กร สำหรับรายละเอียดเพิ่มเติม

อัปเดตแม่แบบองค์กร

เมื่อคุณจำเป็นต้องอัปเดตแม่แบบองค์กร, ตัวอย่างเช่น, เพิ่มบทบาทใหม่ที่เรียกว่า developer, คุณสามารถทำได้ใน Logto Console หรือผ่าน Logto Management API การเปลี่ยนแปลงจะถูกนำไปใช้อัตโนมัติกับทุกองค์กรโดยไม่ต้องหยุดพักตัว

องค์กรพร้อมบทบาทใหม่

สรุป

ด้วย Logto องค์กร การจัดการและการปรับขนาด multi-tenancy กลายเป็นมาตรฐานและสะดวกสบาย คุณสามารถมุ่งเน้นที่ตรรกะทางธุรกิจของคุณและปล่อยให้การจัดการตัวตนและการควบคุมการเข้าถึงเป็นของ Logto