กรณีศึกษา: สร้าง multi-tenancy ด้วย Logto องค์กร
เรียนรู้วิธีสร้างฐานข้อมูลตัวตนที่มั่นคงและสามารถขยายได้สำหรับ multi-tenancy ด้วย Logto องค์กร
ทุกวันนี้, 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
ขอรับโทเค็นองค์กรในแอปของคุณ
ในแอปพลิเคชันของลูกค้าของคุณ คุณสามารถขอโทเค็นการเข้าถึงองค์กร (โทเค็นองค์กร) จาก 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