العربية
  • تطوير saas
  • saas متعدد المستأجرين
  • عمارة saas
  • saas قوالب جاهزة

بناء تطبيق SaaS متعدد المستأجرين: دليل كامل من التصميم إلى التنفيذ

تعلم كيفية بناء تطبيق SaaS متعدد المستأجرين بكفاءة مع مصادقة قوية وإدارة المؤسسات والتحكم في الوصول القائم على الأدوار في بضع ساعات فقط.

Yijun
Yijun
Developer

كيف تُبنى التطبيقات مثل Notion أو Slack أو Figma؟ تبدو هذه التطبيقات متعددة المستأجرين بسيطة الاستخدام، لكن بناء واحد بنفسك؟ هذا أمر مختلف.

عندما فكرت لأول مرة في بناء مثل هذا الوحش المعقد، انفجر عقلي:

  • يحتاج المستخدمون إلى خيارات تسجيل دخول متعددة (البريد الإلكتروني، Google، GitHub)
  • يمكن لكل مستخدم إنشاء والانتماء إلى مؤسسات متعددة
  • مستويات أذونات مختلفة داخل كل مؤسسة
  • المؤسسات الكبيرة تتطلب الانضمام التلقائي لنطاقات البريد الإلكتروني المحددة
  • متطلبات MFA للعمليات الحساسة
  • ...

"رئيسي، دعونا نتحدث عن تصميم المنتج في غضون أسبوعين. أنا عالق في الوحل الآن."

لكن عندما بدأت العمل فعلياً عليه، وجدت أنه ليس مخيفًا كما يبدو.

لقد قمت فقط ** ببناء نظام بجميع هذه الميزات في أقل من ساعتين! **

documind-home-page.png

Documind dashboardDocumind organization page

سأشرح لك بالضبط كيف يمكنك تصميم وتنفيذ مثل هذا النظام من الأساس - وستدهش من مدى بساطته في عام 2025 باستخدام الأدوات الحديثة مع النهج المعماري الصحيح.

الكود المصدري الكامل متاح في نهاية هذه المقالة. لنبدأ!

سنبدأ بمنتج SaaS للتوثيق بالذكاء الاصطناعي يسمى DocuMind.

DocuMind هو منتج SaaS للتوثيق بالذكاء الاصطناعي تم تصميمه بنموذج متعدد المستأجرين لدعم المستخدمين الفرديين والشركات الصغيرة والمؤسسات.

تقدم المنصة قدرات ذكاء اصطناعي قوية لإدارة المستندات، بما في ذلك توليد الملخصات التلقائي، واستخراج النقاط الرئيسية، وتوصيات المحتوى الذكية داخل المنظمات.

ما الميزات المطلوبة للمصادقة والتخويل في SaaS؟

أولاً، دعنا نراجع المتطلبات اللازمة. ما هي الميزات التي تحتاجها؟

العمارة متعددة المستأجرين

لتمكين العمارة متعددة المستأجرين، ستحتاج إلى طبقة كيان تسمى المؤسسة. تخيل وجود مجموعة واحدة من المستخدمين الذين يمكنهم الوصول إلى مساحات عمل متعددة. تمثل كل مؤسسة مساحة عمل، ويحتفظ المستخدمون بهوية واحدة أثناء الوصول إلى مساحات العمل المختلفة (المؤسسات) بناءً على الأدوار المعينة لهم.

multi-tenant-app-architecture.svg

إنها ميزة مستخدمة على نطاق واسع في مقدمي خدمات المصادقة. تُعادل المؤسسة في نظام إدارة الهوية مساحة العمل أو المشروع أو المستأجر في تطبيق SaaS الخاص بك.

organization-examples.png

العضوية

العضو هو مفهوم مؤقت يستخدم للإشارة إلى حالة عضوية الهوية داخل المؤسسة.

على سبيل المثال، تقوم سارة بالتسجيل في تطبيقك باستخدام بريدها الإلكتروني، [email protected]. يمكنها الانتماء إلى مساحات عمل مختلفة. إذا كانت سارة جزءًا من مساحة عمل أ وليس مساحة عمل ب، فهي تُعتبر عضوًا في مساحة عمل أ وليس مساحة عمل ب.

تصميم الأدوار والأذونات

في العمارة متعددة المستأجرين، يحتاج المستخدمون إلى أدوار مع أذونات محددة للوصول إلى موارد المستأجر الخاصة بهم.

الأذونات هي ضوابط وصول مفصلة تحدد الإجراءات الخاصة، مثل read: order أو write: order. وهي تحدد ما يمكن فعله على الموارد المحددة.

الأدوار هي مجموعة من الأذونات المعينة للأعضاء في بيئة متعددة المستأجرين.

ستحتاج إلى تحديد هذه الأدوار والأذونات، ثم تعيين أدوار للمستخدمين، وأحيانًا يمكن أن تتضمن عمليات آلية. على سبيل المثال:

  1. المستخدمون الذين ينضمون إلى منظمة يحصلون تلقائيًا على دور عضو.
  2. أول مستخدم يقوم بإنشاء مساحة عمل يتم تعيينه تلقائيًا كدور مدير.

تدفق التسجيل وتسجيل الدخول

تأكد من وجود طريقة تسجيل ومصادقة سهلة الاستخدام وآمنة، بما في ذلك خيارات الدخول العادي والتسجيل:

  1. الدخول بالبريد الإلكتروني وكلمة السر: طريقة تسجيل دخول تقليدية بالبريد الإلكتروني وكلمة السر.
  2. تسجيل الدخول بدون كلمة مرور: استخدام رموز التحقق عبر البريد الإلكتروني للوصول السهل والآمن.
  3. إدارة الحساب: مركز حساب حيث يمكن للمستخدمين تحديث البريد الإلكتروني وكلمة المرور والتفاصيل الأخرى.
  4. تسجيل الدخول الاجتماعي: خيارات مثل Google وGitHub لتسجيل الدخول السريع.
  5. المصادقة متعددة العوامل (MFA): تعزيز الأمان من خلال السماح بتسجيل الدخول عبر تطبيقات المصادقة مثل Duo.

إنشاء المستأجر والدعوة

في تطبيق SaaS متعدد المستأجرين، الفرق الرئيسي في تدفق المستخدم هو ضرورة دعم إنشاء المستأجر ودعوة الأعضاء. هذه العملية تتطلب تخطيطًا دقيقًا وتنفيذًا لأنها تلعب دورًا رئيسيًا في تفعيل المنتج ونموه.

فيما يلي بعض التدفقات النموذجية للدخول التي تحتاج إلى مراعاتها:

نوع المستخدمنقطة الدخول
حساب جديدالدخول من صفحة تسجيل الدخول والتسجيل لإنشاء مستأجر جديد
حساب موجودإنشاء مستأجر آخر داخل المنتج
الحساب الحالي تلقى دعوة لمستأجر جديدالدخول من صفحة تسجيل الدخول والتسجيل
الحساب الحالي تلقى دعوة مستأجر جديدالدخول من البريد الإلكتروني الدعوة
الحساب الجديد تلقى دعوة مستأجر جديدالدخول من صفحة تسجيل الدخول والتسجيل
الحساب الجديد تلقى دعوة مستأجر جديدالدخول من البريد الإلكتروني الدعوة

هذه بعض السيناريوهات الشائعة الموجودة في كل تطبيق SaaS تقريبًا. استخدم تلك كمرجع لإلهام فريق المنتج والتصميم، ولا تتردد في إنشاء تدفقاتك الخاصة حسب الحاجة.

A new account creates a tenantAn existing user creates another tenant
An existing user sign in An existing user join through email
A new user sign-inAn new user join through email

العمارة التقنية وتصميم النظام

بمجرد أن نفهم جميع متطلبات المنتج، لننتقل إلى التنفيذ.

تحديد استراتيجية المصادقة

تبدو المصادقة مخيفة. يحتاج المستخدمون إلى:

  • تسجيل الدخول والتسجيل بالبريد الإلكتروني وكلمة المرور
  • تسجيل الدخول بنقرة واحدة عبر Google/Github
  • إعادة تعيين كلمة المرور عندما ينسونها
  • تسجيل الدخول على مستوى الفريق للعملاء من الشركات
  • ...

تنفيذ مجرد هذه الميزات الأساسية قد يستغرق أسابيع من التطوير.

لكن الآن، لا نحتاج لبناء أي من هذا بأنفسنا!

مزودو المصادقة الحديثة (سأختار Logto هذا الوقت) قد قاموا بتجميع كل هذه الميزات لنا. تدفق المصادقة مباشر:

من أسابيع من التطوير إلى 15 دقيقة من الإعداد، Logto يتولى كل التدفقات المعقدة من أجلنا! سنغطي خطوات التكامل في قسم التنفيذ لاحقًا. الآن يمكننا التركيز على بناء الميزات الأساسية لDocuMind!

إنشاء عمارة متعددة المستأجرين

نظام المؤسسة يمكّن المستخدمين من إنشاء والانضمام إلى مؤسسات متعددة. دعونا نفهم العلاقات الأساسية:

في هذا النظام، يمكن لكل مستخدم الانتماء إلى مؤسسات متعددة، ويمكن لكل مؤسسة أن تضم أعضاء متعددين.

تمكين التحكم في الوصول في التطبيق متعدد المستأجرين

يعد التحكم في الوصول القائم على الأدوار (RBAC) مهمًا لضمان الأمان وقابلية التوسع في تطبيقات SaaS متعددة المستأجرين.

In a multi-tenant app, the design of permissions and roles is usually consistent, as it stems from the product design. For example, in multiple workspaces, there’s typically an admin role and a member role. Logto as an auth provider has the following organization-level role-based access control design:

  1. تعريفات الأذونات الموحدة: تُعرّف الأذونات على مستوى النظام وتتم تطبيقها بشكل متسق عبر جميع المنظمات، مما يضمن إدارة الأذونات القابلة للصيانة والمتسقة
  2. قوالب المنظمات: مجموعات الأدوار والأذونات المحددة مسبقًا من خلال قوالب المنظمات، مما يبسط تهيئة المنظمات

تبدو علاقة الأذونات كما يلي:

Since each user needs their own role(s) within each organization, the relationship between roles and organizations must reflect the roles assigned to each user:

We've designed the organization system and access control system, and now we can start building our product!

التكديس التكنولوجي

اخترت تكديس بسيط ومتاح للمبتدئين:

  1. الواجهة الأمامية: React (يمكن نقلها بسهولة إلى Vue/Angular/Svelte)
  2. الواجهة الخلفية: Express (واجهة برمجة التطبيقات البسيطة والبديهية)

لماذا فصل الواجهة الأمامية والخلفية؟ لأن لديها هيكل واضح، سهل التعلم وبسيط لتغيير التكديسات لأن مقدمي المصادقة، سأستخدم Logto كمثال.

وبالنسبة إلى الأدلة التالية، تعمل الأنماط هنا مع: أي واجهة أمامية، أي واجهة خلفية وأي نظام مصادقة.

أضف تدفق المصادقة الأساسية إلى تطبيقك

هذه هي الخطوة الأسهل. نحتاج فقط إلى دمج Logto في مشروعنا. ثم يمكننا تكوين طرق تسجيل الدخول/التسجيل بناءً على احتياجاتنا في Console Logto.

تثبيت Logto في تطبيقك

أولاً، قم بتسجيل الدخول إلى Logto Cloud. يمكنك الاشتراك للحصول على حساب مجاني إذا لم يكن لديك واحد. أنشئ مستأجرًا للتطوير للاختبارات.

In the Tenant Console, اضغط على زر "Application" على اليسار. ثم اختر React لبدء بناء التطبيق الخاص بنا.

اتبع الدليل على الصفحة. يمكنك إكمال تكامل Logto في حوالي 5 دقائق!

Here's my integration code:

documind-home-page.png

Here's a useful trick: Our login page has both Sign in and Register buttons. The Register button leads directly to Logto's registration page. This works through Logto's first screen feature. It determines which step of the auth flow users see first.

You can default to the registration page when your product expects many new users.

مبعد النقر على تسجيل الدخول، ستذهب إلى صفحة تسجيل الدخول في Logto. عند تسجيل الدخول بنجاح (أو التسجيل)، تهانينا! تطبيقك لديه أول مستخدم له (أنت)!

وقم باستدعاء وظيفة signOut من الخطاف useLogto لتسجيل خروج المستخدم عند الرغبة.

تخصيص طرق تسجيل الدخول والتسجيل

In the Logto Console, اضغط "تجربة تسجيل الدخول" في القائمة اليسرى. ثم اضغط على علامة التبويب "التسجيل وتسجيل الدخول".

On this page, اتبع التعليمات لتكوين طرق تسجيل الدخول/التسجيل في Logto.

sign-in-experience-settings.png

And the sign-in flow will look like this:

Logto sign-in page

تمكين المصادقة متعددة العوامل

With Logto, تمكين MFA بسيط. فقط اضغط على زر "Multi-factor auth" في Console Logto. ثم افعله في صفحة المصادقة متعددة العوامل.

mfa-settings.png

And the MFA flow will look like this:

Mfa verification stepScan QR code in authenticator app

Everything is so simple! لقد جهزنا نظام مصادقة معقد للمستخدم في بضع دقائق فقط!

إضافة تجربة المنظمة متعددة المستأجرين

الأن لدينا أول مستخدم لدينا! ومع ذلك، لا ينتمي هذا المستخدم إلى أي منظمة حتى الآن، ولم نقم بإنشاء أي منظمات.

يوفر Logto دعمًا مدمجًا للطابع المتعدد.

Each user can get their organization information from Logto. This enables multi-tenancy support

الحصول على معلومات المنظمة للمستخدم

للحصول على معلومات المنظمة للمستخدم من Logto، اتبع هاتين الخطوتين:

Declare organization information access in the Logto Config. يتم ذلك من خلال تعيين scopes و resources المناسبين.

استخدم طريقة fetchUserInfo الخاصة بـ Logto للحصول على معلومات المستخدم، بما في ذلك بيانات المنظمة.

بعد إتمام هذه الخطوات، تحتاج إلى تسجيل الخروج وتسجيل الدخول مرة أخرى. هذا ضروري لأننا قمنا بتغيير النطاق والموارد المطلوبة.

Right now, you haven't created any organizations. The user hasn't joined any organizations either. The dashboard will show "You don’t have any organization yet".

dashboard-no-orgs.png

Next, we’ll create an organization for our users and add them to it.

Thanks to Logto, chúng tôi không cần phải xây dựng mối quan hệ tổ chức phức tạp. We just need to create an organization in Logto and add users to it. Logto xử lý toàn bộ phức tạp cho chúng tôi. Có hai cách để tạo tổ chức:

  1. Manually create organizations through the Logto Console
  2. Use the Logto Management API to create organizations, especially when designing a SaaS flow that lets users create their own organizations (workspaces).

Create organization in Logto console

Click the "Organizations" menu button on the left side of the Logto Console. إنشاء منظمة.

الآن لديك أول منظمة لديك.

console-organizations.png

Next, let's add the user to this organization.

Go to the organization details page. Switch to the Members tab. Click the "+ Add member" button. Select your login user from the left list. Click the "Add members" button in the bottom right. Now you've successfully added the user to this organization.

console-add-member-to-orgs.png

Refresh your APP page. You'll see the user now belongs to an organization!

dashboard-has-orgs.png

Implement self-serve organization creation experience

Creating an organization in the console is not enough. Your SaaS app needs a flow that allows end users to easily create and manage their own workspaces. لتطبيق هذه الميزة، استخدم Logto Management API.

For guidance, تحقق من وثيقة Interact with Management API لإعداد الاتصال مع Logto.

Understand organization auth interaction flow

Let’s take organization creation flow as an example. Here's how the organization creation process works:

This flow has two key authentication requirements:

  1. حماية واجهة خدمة الخلفية API:
    • Frontend access to our Backend Service API requires authentication
    • حماية نقاط النهاية API عن طريق التحقق من صحة رمز الوصول من Logto
    • Ensures only authenticated users can access our services
  2. Accessing Logto Management API:
    • Backend Service needs to securely call Logto Management API
    • Follow the Interact with Management API guide for setup
    • Use Machine-to-Machine authentication to obtain access credentials

Protect your backend API

First, لنقم بإنشاء نقطة نهاية API في خدمة الخلفية الخاصة بنا لإنشاء المنظمات.

Our backend service API only allows authenticated users. We need to use Logto to protect our API. We also need to know the current user's information (like user ID).

In Logto's concept (and OAuth 2.0), our backend service acts as a resource server. Users access DocuMind resource server with an Access token from the frontend. يقوم الخادم الموارد بالتحقق من صحة هذا الرمز. If valid, it returns the requested resources.

لنقم بإنشاء مورد API لتمثيل خدمة الخلفية الخاصة بنا.

اذهب إلى Console Logto.

  1. اضغط على زر "موارد API" على اليمين.
  2. اضغط على "إنشاء مورد API". اختر Express في النافذة المنبثقة.
  3. أدخل "DocuMind API" كاسم للAPI. استخدم "https://api.documind.com" كمُعرف للAPI.
  4. اضغط على إنشاء.

Don't worry about this API identifier URL. It's just a unique identifier for your API in Logto. It's not related to your actual backend service URL.

You'll see a tutorial for using the API resource. Bạn có thể theo dõi hướng dẫn đó hoặc các bước sau đây của chúng tôi.

لنقم بإنشاء مرشح requireAuth لحماية نقطة النهاية POST /organizations.

To use this middleware, we need these environment variables:

  • LOGTO_JWKS_URL
  • LOGTO_ISSUER

احصل على هذه المتغيرات من نقطة النهاية OpenID Configuration الخاصة بالمستأجر Logto الخاص بك. زر https://<your-tenant-id>.logto.app/oidc/.well-known/openid-configuration. ستجد المعلومات اللازمة في JSON المُعاد:

Now use the requireAuth middleware in our POST /organizations endpoint.

This protects our POST /organizations endpoint. chỉ những người dùng có mã thông báo truy cập Logto hợp lệ mới có thể truy cập nó.

لطالما، يمكننا الآن الحصول على الرمز من Logto في الواجهة الأمامية. يمكن للمستخدمين إنشاء منظمات من خلال خدمة الخلفية لدينا بهذا الرمز. يعطي المقر المكتبة أيضًا معرف المستخدم. هذا يأتي في المتناول عند إضافة المستخدمين إلى المنظمات.

Trong mã phía trước، khai báo tài nguyên API này trong cấu hình Logto. Thêm định danh của nó vào mảng tài nguyên.

كالشكل المعتاد، يحتاج المستخدمون إلى تسجيل الدخول مرة أخرى بعد تحديث تكوين Logto.

Trong bảng điều khiển، lấy mã thông báo truy cập Logto khi tạo tổ chức. Sử dụng mã thông báo này để truy cập API dịch vụ phụ trợ của chúng tôi.

الآن يمكننا الوصول بشكل صحيح إلى واجهة الخدمة الخلفية DocuMind API.

Calling Logto Management API

دعونا ننفذ إنشاء المنظمة باستخدام Logto Management API.

Như các yêu cầu frontend đến dịch vụ phụ trợ، các yêu cầu dịch vụ phụ trợ đến Logto cũng cần mã thông báo truy cập.

In Logto, نحن نستخدم مصادقة الآلة إلى الآلة للحصول على رموز الوصول. انظر Interact with Management API.

اذهب إلى صفحة التطبيقات في Logto Console. أنشئ تطبيق آلة إلى آلة. حدد دور "الوصول إلى API إدارة Logto". قم بنسخ نقطة النهاية Token، معرف التطبيق والسر الخاص بالتطبيق. سنستخدم هذه للحصول على رموز الوصول.

m2m-application.png

الآن يمكننا الحصول على رموز الوصول إلى Logto Management API من خلال هذا التطبيق M2M.

Sử dụng mã thông báo truy cập này để gọi Logto Management API.

Chúng tôi sẽ sử dụng các API Quản lý sau:

لقد قمنا الآن بتنفيذ إنشاء المنظمات عبر Logto Management API. يمكننا أيضًا إضافة مستخدمين إلى المنظمات.

Hãy kiểm tra tính năng này trong bảng điều khiển.

dashboard-create-org.png

والنقر على “Create Organization”

dashboard-has-orgs.png

الإنشاء ناجح!

The next step would be inviting users to an organization. لن نقوم بتطبيق هذه الميزة في البرنامج التعليمي لدينا بعد. Bạn đã biết cách sử dụng API Quản lý. Bạn có thể tham khảo mục này Tenant creation and invitation như tài liệu thiết kế sản phẩm và dễ dàng thực hiện tính năng này bằng cách làm theo bài viết trên blog này: How we implement user collaboration within a multi-tenant app. ")

Implement access control to your multi-tenant app

الآن لننتقل إلى التحكم في الوصول للمؤسسات.

نحن نرغب في تحقيق:

  • يمكن للمستخدمين الوصول فقط إلى الموارد التي تنتمي إلى منظماتهم الخاصة: يمكن القيام بذلك عبر "رمز المؤسسة" الخاص بـ Logto
  • لدى المستخدمين أدوار محددة داخل المنظمات (تحتوي على أذونات مختلفة) لأداء الوظائف المصرح بها: يمكن تنفيذ ذلك عبر ميزة قوالب المؤسسة الخاصة بـ Logto

دعونا نرى كيفية تنفيذ هذه الميزات.

Using Logto organization token

Similar to the Logto access token we mentioned earlier, Logto issues an access token corresponding to a specific resource, and users use this token to access protected resources in the backend service. إن Logto يصدر رمز مؤسسة يطابق منظمة معينة، ويمكن للمستخدمين استخدام هذا الرمز للحصول على موارد المؤسسة المحمية في خدمة الخلفية.

استخدم طريقة getOrganizationToken الخاصة بـ Logto في تطبيق الواجهة الأمامية للحصول على رمز الوصول إلى منظمة محددة.

Here, organizationId يشير إلى معرف المنظمة التي ينتمي إليها المستخدم.

Before using getOrganization or any organization features, نحتاج إلى التأكد من أن النطاق urn:logto:scope:organizations والموارد urn:logto:resource:organization تشملها في Logto config. since we've already declared these earlier, we won't repeat it.

In our organization page, we use the organization token to fetch documents within the organization.

هناك نقطتان مهمتان يجب ملاحظتهما في هذا التنفيذ:

  1. If the organizationId passed to getOrganizationToken ليس معرف منظمة ينتمي إلى المستخدم الحالي، فلن يتمكن من الحصول على رمز، مما يضمن للمستخدمين الوصول فقط إلى منظماتهم الخاصة.
  2. عند طلب موارد المنظمة، نستخدم رمز المنظمة بدلاً من رمز الوصول لأن الموارد التي تنتمي إلى منظمة نريد استخدامها لضبط الأذونات للمنظمة بدلاً من التحكم في أذونات المستخدم (ستفهم هذا بشكل أفضل عند تنفيذ واجهة المستخدم GET /documents لاحقًا).

Next, we create واجهة برمجة تطبيقات (API) GET /documents في خدمة الخلفية لدينا. مشابهاً للنواة من خلال استخدام مورد API لحماية نقطة النهاية POST /organizations، نستخدم مؤشرات الموارد الخاصة بالمنظمة لحماية نقطة النهاية GET /documents.

أولاً، لنقم بإنشاء مرشح requireOrganizationAccess لحماية الموارد التنظيمية.

ثم نستخدم مرشح requireOrganizationAccess لحماية واجهة برمجة التطبيقات GET /documents.

بهذه الطريقة، قمنا بتنفيذ استخدام رموز المؤسسة للوصول إلى موارد المؤسسة. في خدمة الخلفية، يمكنك استرداد الموارد المقابلة من قاعدة البيانات بناءً على معرف المؤسسة.

Some software يتطلب عزل البيانات بين المنظمات. لمزيد من المناقشة والتنفيذ، يمكنك الرجوع إلى منشور المدونة: Multi-tenancy implementation with PostgreSQL: Learn through a simple real-world example.

تنفيذ تصميم التحكم في الوصول على مستوى المنظمة المعتمد على الأدوار

لقد قمنا بتنفيذ استخدام رموز المؤسسة للوصول إلى موارد المؤسسة. التالي، سنقوم بتنفيذ التحكم في الأذونات للمستخدم ضمن المنظمات باستخدام RBAC.

لنفترض أن DocuMind لديها دورين: مدير ومتعاون.

يمكن للمديرين إنشاء والوصول إلى المستندات، بينما يمكن للمتعاونين الوصول إلى المستندات فقط.

لذلك، يجب أن تحتوي منظمتنا على هذين الدورين: مدير ومتعاون.

يمتلك المدير كلا من الأذونات read:documents و create:documents، بينما يمتلك المتعاون الإذن read:documents فقط.

  • مدير
    • read:documents
    • create:documents
  • متعاون
    • read:documents

هذا هو المكان الذي تأتي فيه ميزة قوالب المؤسسة لـ Logto.

قالب المؤسسة هو نموذج للتحكم في الوصول لكل مؤسسة: حيث يحدد الأدوار والأذونات التي تنطبق على جميع المنظمات.

لماذا قالب المؤسسة؟

لأن قابلية التوسع هي واحدة من أهم المتطلبات لمنتجات SaaS. بمعنى آخر، ما يعمل لعميل واحد يجب أن يعمل لجميع العملاء.

لنتوجه إلى Console Logto > قوالب المنظمات > أذونات المنظمات وننشئ إذنين: read:documents و create:documents.

org-template-permission.png

ثم توجه إلى علامة تبويب أدوار المنظمات لإنشاء دورين للمستخدمين: مدير ومتعاون، وتعيين الأذونات المقابلة لهذه الأدوار.

organization-details.png

بهذه الطريقة، قمنا بإنشاء نموذج إذن RBAC لكل منظمة.

التالي، نذهب إلى صفحة تفاصيل المنظمة لتعيين الأدوار المناسبة لأعضائنا.

org-template-role.png

الآن يمتلك مستخدمو المنظمة أدوارًا! يمكنك تحقيق هذه الخطوات عبر Logto Management API:

لدينا الآن التحكّم في الأذونات للمستخدمين عن طريق التحقق من أذوناتهم.

في الكود، cần làm cho mã thông báo tổ chức của người dùng mang thông tin cấp quyền, sau đó xác minh các quyền này trong phụ trợ.

في كود الواجهة الأمامية في تكوين Logto، cần إضافة الأذونات التي يحتاجها المستخدم لطلب داخل المنظمة. دعنا نضيف الأذونات read:documents و create:documents للنطاقات.

كالشكل المعتاد، بحاجة لتسجيل الدخول مرة أخرى مع المستخدم لتفعيل هذه التكوينات.

ثم في المكتبة requireOrganizationAccess في الخلفية، نضيف التحقق من أذونات المستخدم.

ثم إنشاء واجهة برمجة تطبيقات (API) POST /documents وتستخدم المرشح requireOrganizationAccess مع إعدادات الأذونات المطلوبة لحماية هذه الواجهة واجهة برمجة تطبيقات GET /documents السابقة.

بهذه الطريقة، قمنا بتنفيذ التحكم في إذن المستخدم عن طريق التحقق من أذونات المستخدمين.

في الواجهة الأمامية، يمكنك الحصول على معلومات إذن المستخدم عن طريق فك تشفير رمز المنظمة أو باستخدام طريقة getOrganizationTokenClaims الخاصة بـ Logto.

تحكم في العناصر على الصفحة بناءً على أذونات المستخدم عن طريق التحقق من النطاقات في المطالبات.

أضف المزيد من ميزات التطبيق متعدد المستأجرين

حتى الآن، لقد قمنا بتنفيذ الميزات الأساسية للمستخدمين والمنظمة في نظام SaaS متعدد المستأجرين! ومع ذلك، هناك بعض الميزات التي لم نغطيها بعد، مثل تخصيص العلامة التجارية لصفحة تسجيل الدخول لكل منظمة، وإضافة المستخدمين تلقائيًا مع عناوين البريد الإلكتروني الخاصة بنطاق معين إلى منظمات معينة، ودمج وظائف SSO على مستوى المؤسسة.

هذه كلها ميزات جاهزة للاستخدام، يمكنك العثور على مزيد من المعلومات حول هذه الميزات في وثائق Logto.

الميزاترابط الوثيقة
تكامل SSO على مستوى المؤسسةhttps://docs.logto.io/end-user-flows/enterprise-sso
توفير المستخدم في الوقت المناسب (JIT)https://docs.logto.io/organizations/just-in-time-provisioning
تكوين العلامة على مستوى المنظمةhttps://docs.logto.io/customization/match-your-brand#organization-specific-branding
المصادقة متعددة العوامل على مستوى المنظمة (MFA)https://docs.logto.io/organizations/organization-management#require-mfa-for-organization-members
إدارة على مستوى المنظمة:https://docs.logto.io/end-user-flows/organization-experience/organization-management

الخلاصة

هل تتذكر كيف كان الاستهلاكي في البداية؟ المستخدمون، المنظمات، الأذونات، ميزات المؤسسة ... بدا وكأنه جبل لا ينتهي من التسلق.

لكن انظر إلى ما أنجزناه:

  • نظام مصادقة كامل مع خيارات دخول متعددة ودعم MFA
  • نظام منظمة مرن يدعم العضويات المتعددة
  • تحكم في الوصول بناءً على الأدوار داخل المنظمات

وأفضل جزء؟ لم يكن علينا إعادة اختراع العجلة. bằng cách tận dụng các công cụ hiện đại như Logto, chúng tôi chuyển những gì có thể đã là hàng tháng phát triển thành vấn đề của hàng giờ.

شفر المصدر الكامل لهذا البرنامج التعليمي متاح في: Multi-tenant SaaS Sample.

Đây là sức mạnh của phát triển hiện đại vào năm 2025 - chúng ta có thể tập trung vào xây dựng các tính năng sản phẩm độc đáo thay vì vật lộn với cơ sở hạ tầng. الآن حان دورك لبناء شيء رائع!

استكشف جميع ميزات Logto، từ Logto Cloud إلى Logto OSS، على Logto website أو اشترك في Logto cloud اليوم.