• saas
  • collaboration
  • organizations
  • rbac
  • multi-tenancy

เบื้องหลัง: วิธีที่เราดำเนินการร่วมมือผู้ใช้ภายในแอปหลายผู้เช่า

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

Charles
Charles
Developer

ภูมิหลัง

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

ในการเปิดตัวฟีเจอร์นี้ เราได้เพิ่มสองบทบาทให้กับแต่ละผู้เช่า Logto:

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

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

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

การร่วมมือบน Logto Cloud ถูกสร้างขึ้นด้วย Logto Organizations

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

บทบาทองค์กร
ขอบเขตองค์กร

จัดการคำเชิญด้วย Logto Management API

เราได้จัดเตรียมชุด Management API ที่เกี่ยวข้องกับคำเชิญในฟีเจอร์องค์กร ด้วยเอพีไอเหล่านี้ คุณสามารถ:

  • POST /api/organization-invitations สร้างและส่งคำเชิญองค์กรไปยังที่อยู่อีเมล
  • GET /api/organization-invitations & GET /api/organization-invitations/{id} รับคำเชิญของคุณ
  • PUT /api/organization-invitations/{id}/status ยอมรับหรือปฏิเสธคำเชิญโดยการอัปเดตสถานะคำเชิญ

สำหรับข้อมูลเพิ่มเติม ดู เอกสาร API เต็มรูปแบบ

เชื่อมต่อกับตัวเชื่อมต่ออีเมลของคุณ

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

ตัวอย่างอีเมลคำเชิญ

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

หน้าที่ลงจอดคำเชิญ

ดู เอกสาร API สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการส่งอีเมลคำเชิญผ่าน Management API

ใช้ RBAC เพื่อจัดการสิทธิ์ของผู้ใช้

ด้วยการตั้งค่าข้างต้น เราสามารถส่งคำเชิญผ่านทางอีเมล และผู้ถูกเชิญสามารถเข้าร่วมองค์กรด้วยบทบาทที่กำหนด

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

โอเค ตอนนี้ทุกอย่างดูเหมือนจะเชื่อมต่อกันแล้ว และเราพลาดอะไรอีกไหม?

จัดการการอัปเดตขอบเขตในโทเค็นการเข้าถึง

การจัดการการอัปเดตขอบเขตในโทเค็นการเข้าถึงเกี่ยวข้องกับ:

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

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

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

สรุป

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

ฉันหวังว่าบล็อกโพสต์นี้จะมีข้อมูลที่มีประโยชน์ ถ้ามีคำถามหรือข้อถกเถียง อย่าลังเลที่จะเข้าร่วม ช่อง Discord ของเรา