دراسة حالة: بناء تعدد المستأجرين باستخدام Logto Organizations
تعلم كيفية إنشاء أساس هوية قوي وقابل للتوسعة لتعدد المستأجرين باستخدام Logto Organizations.
في الوقت الحاضر، أصبح تعدد المستأجرين جزءًا أساسيًا من التطبيقات أو خدمات SaaS. غالبًا ما ينطوي على علاقة معقدة بين المستخدمين والمنظمات والأدوار والأذونات. على سبيل المثال، يمكن أن يكون المستخدم عضوًا في عدة منظمات، والعكس صحيح؛ يمكن أن يكون للمستخدم أيضًا أدوار مختلفة في منظمات مختلفة.
المشكلة
يمكن أن يؤدي ذلك إلى صداع ليس فقط في البداية، ولكن أيضًا في الصيانة طويلة الأمد للتطبيق. يمكن لنموذج التحكم في الوصول القائم على الأدوار التقليدية (RBAC) أن يحل هذه المشكلة جزئيًا، ولكنه سريعًا ما يصبح كابوسًا عند زيادة عدد المستخدمين والمنظمات.
على سبيل المثال، في البداية، قد يكون لديك فقط دوران في كل منظمة: admin
وmember
. عندما يكون لديك 10 منظمات، ستدير 20 دورًا؛ وعندما يكون لديك 1,000 منظمة، ستدير 2,000 دور.
مع نمو العمل، قد تحتاج إلى إضافة المزيد من الأدوار، مثل guest
، developer
، إلخ. ستزداد تعقيد نموذج RBAC بشكل كبير.
واجهنا نفس المشكلة عند بناء Logto Cloud. سرعان ما أدركنا أنها مشكلة شائعة في الصناعة، وقررنا حلها. وLogto Organizations هنا لإنقاذ الموقف.
قالب المنظمة
سؤال سريع: لماذا تعتبر تطبيقات SaaS SaaS؟ نعتقد أن القابلية للتوسعة هي واحدة من أهم الأسباب. بعبارة أخرى، ما يعمل لعميل واحد يجب أن يعمل لجميع العملاء.
هذا يقود إلى مفهوم "قالب المنظمة". قالب المنظمة هو مخطط لنموذج التحكم في الوصول لكل منظمة: يحدد الأدوار والأذونات التي تنطبق على جميع المنظمات.
لنفترض أن لدينا دورين لكل منظمة:
admin
: يمكنه إدارة المنظمة، بما في ذلك إضافة / إزالة الأعضاء، تغيير الأدوار، إلخ.member
: يمكنه الوصول إلى موارد المنظمة ودعوة أعضاء جدد.
يمكننا إنشاء قالب منظمة باستخدام التكوين التالي:
إضافة المستخدمين إلى المنظمات
بما أننا قمنا بإعداد قالب المنظمة، أصبح إدارة المستخدمين سهلًا وطبيعيًا. يمكنك إضافة مستخدم إلى منظمة باستخدام Logto Console (واجهة المستخدم على الويب) أو عبر Logto Management API
اطلع على تكوين المنظمات لمعرفة المزيد.
قمنا بإضافة منظمتين بالتكوين التالي:
- المنظمة A: كلا أليس وبوب عضوان. أليس لديها دور
admin
، وبوب لديه دورmember
. - المنظمة B: فقط أليس عضو، ولديها دور
member
.
طلب رموز الوصول للمنظمات في تطبيقك
في تطبيقك الخاص بالعملاء، يمكنك الآن طلب رمز وصول للمنظمة (رمز المنظمة) من Logto. رمز المنظمة هو رمز JWT يحتوي على المعلومات اللازمة لخدمتك للتحقق مما إذا كان لدى المستخدم الإذن في المنظمة.
تم وصف خطوات طلب رمز المنظمة بالتفصيل في تكامل المنظمات مع تطبيقك.
افترض أن أليس قامت بتسجيل الدخول إلى تطبيقك وتريد إزالة مستخدم في المنظمة A. يمكن لتطبيقك طلب رمز منظمة لـ"المنظمة A" مع إذن remove:member
(نطاق). سيقوم Logto بالتحقق مما إذا كان لدى أليس الإذن في المنظمة، وسيعيد رمز المنظمة لأنها لديها دور admin
:
فيما يلي بعض الأمثلة للحالات الخطأ:
- إذا أراد بوب إزالة مستخدم في المنظمة A، فسيعيد Logto خطأ لأنه ليس لديه دور
admin
في المنظمة A. - إذا أرادت أليس إزالة مستخدم في المنظمة B، فسيعيد Logto أيضًا خطأ لأنها ليس لديها دور
admin
في المنظمة B. - إذا أراد بوب الحصول على رمز منظمة بأي إذن في المنظمة B، فسيعيد Logto خطأً لأنه ليس لديه العضوية في المنظمة B.
بعد أن يتلقى تطبيقك رمز المنظمة، يمكنه استدعاء خدمتك باستخدام رمز المنظمة عن طريق إضافته إلى ترويسة Authorization
.
التحقق من رموز المنظمة في خدمتك
في خدمتك، يمكنك التحقق من رمز المنظمة باستخدام عملية التحقق القياسية لرمز JWT. انظر التحقق من رموز المنظمة لمزيد من التفاصيل.
تحديث قالب المنظمة
عندما تحتاج إلى تحديث قالب المنظمة، على سبيل المثال، إضافة دور جديد يسمى developer
، يمكنك القيام بذلك في Logto Console أو عبر Logto Management API. سيتم تطبيق التغيير تلقائيًا على جميع المنظمات دون أي وقت توقف.
الخلاصة
مع Logto Organizations، يصبح إدارة وتوسيع تعدد المستأجرين قياسيًا ومريحًا. يمكنك التركيز على منطق عملك وترك الهوية والتحكم في الوصول لـ Logto.