13 ديسمبر 2025·6 دقيقة قراءة

SSO للتطبيقات الداخلية: ربط مطالبات SAML/OIDC بالأدوار والفرق

جعل تسجيل الدخول الموحد للتطبيقات الداخلية أكثر أمانًا: ربط مطالبات SAML أو OIDC بالأدوار والفرق، ربط الحسابات، وتعيين قيم افتراضية عند نقص البيانات.

SSO للتطبيقات الداخلية: ربط مطالبات SAML/OIDC بالأدوار والفرق

لماذا يهم تعيين المطالبات للتطبيقات الداخلية

يبدو تسجيل الدخول الموحد بسيطًا: اضغط "Sign in with Okta" أو "Sign in with Azure AD" وتكون دخلت. لكن الجزء الصعب هو ما يحدث بعد ذلك. من دون تعيين مطالبات واضح، ينتهي الأمر بالأشخاص بصلاحيات زائدة (مثلاً موظف دعم يرى معلومات الرواتب) أو بصلاحيات ناقصة (موظف جديد لا يمكنه فتح الأداة التي يحتاجها في اليوم الأول).

التطبيقات الداخلية أصعب من التطبيقات العامة لأنها مشتركة بين فرق وتتغير باستمرار. قد يستخدم أداة واحدة فرق الدعم والمالية والمبيعات في نفس الوقت. تنظّم الهياكل، يأتون ويتعاقبون المتعاقدون، وتُعاد تسمية الفرق أو تُقسّم. إذا كانت قواعد الوصول محفوظة فقط في رؤوس الناس، فإن SSO سينسخ تلك الفوضى إلى تطبيقك.

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

  • أي أدوار موجودة في التطبيق (admin، manager، viewer، إلخ)
  • أي فرق أو مساحات عمل ينتمي إليها المستخدمون
  • ما الذي يمكن لكل دور فعله، وما الذي يمكن لكل فريق رؤيته
  • من يحصل على الوصول تلقائيًا ومن يحتاج موافقة

هناك خطران يسببا معظم المشاكل:

  • تعيين خاطئ. اسم مجموعة يطابق الدور الخطأ، أو مجموعة عامة "All Employees" تمنح صلاحيات المشرف بطريق الخطأ.
  • مطالبات مفقودة. الـ IdP لا يرسل مجموعات لبعض المستخدمين، سمة تكون فارغة، أو التوكن كبير جدًا ويُقص.

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

SAML مقابل OIDC بمصطلحات بسيطة

عند تسجيل الدخول عبر SSO، يرسل موفّر الهوية لتطبيقك حزمة صغيرة من الحقائق عنك. كل حقيقة هي مطالبة (claim)، في الأساس حقل مُعنون مثل "email = [email protected]" أو "department = Finance".

SAML وOIDC يمكنهما حمل حقائق متشابهة، لكنهما يعبّئانها بطرق مختلفة.

SAML شائع في إعدادات المؤسسات القديمة. عادة يرسل مستند XML (assertion) مع سمات. تلك السمات هي المطالبات التي يقرأها تطبيقك.

OIDC أحدث وبُني على OAuth 2.0. عادة يرسل توكن JSON موقع (ID token) بالإضافة إلى معلومات المستخدم الاختيارية، حيث تكون الحقول داخل التوكن هي المطالبات.

للتطبيقات الداخلية، عادة تهتم بمجموعة صغيرة من المطالبات:

  • عنوان البريد الإلكتروني
  • معرف مستخدم ثابت من الـ IdP (subject)
  • الاسم الكامل (أو الاسم واللقب)
  • عضويات المجموعات (الفرق، مجموعات الأمان)
  • القسم أو المسمى الوظيفي

تمييز مهم يجنب الكثير من الالتباس:

المصادقة تجيب عن "من هذا المستخدم؟". مطالبات مثل معرف المستخدم الثابت والبريد تساعدك على ربط تسجيل الدخول بالحساب الصحيح.

التفويض يجيب عن "ماذا يمكنه أن يفعل؟". مطالبات مثل المجموعات أو القسم تساعدك على تعيين المستخدم إلى أدوار وفرق داخل التطبيق.

يمكن لشخصين المصادقة بنجاح، لكن فقط من لديه مطالبة "Finance" يجب أن يُسمح له بدخول شاشة الفوترة.

الأدوار والفرق: قرّر ما الذي ستعيّنه

قبل أن تعيّن سمات SAML أو تحوّل مطالبات OIDC إلى أذونات، كن واضحًا بشأن أمرين يحتاج تطبيقك إلى معرفته:

  • الأدوار تحدد ما يمكن أن يفعله الشخص (الأذونات).
  • الفرق تحدد أين ينتمي المستخدم (النطاق).

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

الفرق تجيب عن أسئلة مثل: أي قسم، منطقة، طابور، أو مركز تكلفة يعمل فيه هذا الشخص، وأي السجلات ينبغي أن يرى؟

حافظ على الأدوار قليلة ومستقرة. معظم التطبيقات الداخلية تحتاج فقط بعض الأدوار النادرة التغيير، حتى مع تنقّل الناس. يجب أن تعكس الفرق الواقع اليومي: دعم مستوى 2، تغطية EMEA، مالك طابور مؤقت.

مبدأ الأقل امتيازًا هو الإعداد الآمن. العديد من التطبيقات الداخلية تعمل بشكل جيد بثلاث أدوار:

  • Viewer: يمكنه قراءة البيانات وإجراء عمليات البحث
  • Editor: يمكنه إنشاء وتحديث السجلات
  • Admin: يمكنه إدارة الإعدادات والمستخدمين وقواعد الوصول

اكتب، بلغة بسيطة، ما يسمح به كل دور. هذا يمنع "مشرف مفاجئ" عند تغيير اسم مجموعة ويسهّل المراجعات لاحقًا.

الوصول المعتمد على المجموعات: كيف تفكر في مجموعات الـ IdP

الوصول المعتمد على المجموعات يعني أن تطبيقك لا يقرّر الأذونات شخصًا بشخص. بدلًا من ذلك، يعتمد على الـ IdP للحفاظ على عضوية المجموعات، ويقوم تطبيقك بربط تلك المجموعات بالأدوار والفرق.

ابدأ بتحديد ما تمنحه كل مجموعة. في العديد من الأدوات، مجموعة واحدة تُطابق دورًا واحدًا (مثل "Support Agent") وربما فريقًا واحدًا (مثل "Tier 2"). المفتاح أن يبقى التعيين مملًا وقابلًا للتنبؤ: نفس المجموعة تعني دائمًا نفس الوصول.

عندما يكون المستخدم ضمن عدة مجموعات

غالبًا ما يكون الناس أعضاء في أكثر من مجموعة في الـ IdP. تحتاج إلى قاعدة لكيفية حل ذلك، وتحتاج أن تبقيها ثابتة.

النهج الشائعة:

  • قواعد تراكمية: جمع الصلاحيات من كل المجموعات المطابقة (تعمل عندما تكون الصلاحيات محدودة النطاق)
  • قواعد أولوية: اختر المجموعة ذات الأولوية الأعلى وتجاهل الباقي (مفيدة عندما تتضارب الأدوار)
  • هجينة: تراكم للفرق، أولوية للأدوار

أيًا كان ما تختاره، وثّقه. تغييره لاحقًا قد يجعل المستخدمين يكتسبون أو يفقدون الوصول فجأة.

استخدم تسمية قابلة للتوسع

أسماء المجموعات الواضحة تقلل الأخطاء وتسهل عمليات التدقيق. نمط عملي هو:

  • --

مثلاً: support-tool-prod-agent أو finance-tool-staging-viewer. هذا يساعدك على تجنب إعادة استخدام أسماء غامضة مثل "Admins" عبر تطبيقات متعددة.

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

ربط الحسابات: مطابقة مستخدمي SSO بحسابات التطبيق

Turn claims into permissions
Map identity claims to in-app roles using visual logic instead of custom glue code.
Try AppMaster

SSO يبرهن من هو المستخدم، لكن تطبيقك لا يزال عليه أن يقرر أي حساب موجود يلحق به تلك الهوية. من دون ربط الحسابات، يمكن أن ينتهي نفس الشخص بعدة حسابات على مر الزمن لأن المعرفات تتغير: بريد جديد، تحديثات الاسم، الانتقال بين شركات فرعية، أو تغيير موفّر الهوية.

اختر مفتاحًا ثابتًا فريدًا كمطابقة أساسية.

  • في OIDC، عادة هذا هو مطالبة sub.
  • في SAML، غالبًا هو NameID دائم أو سمة معرف مستخدم غير قابلة للتغيير.

خزّن تلك القيمة كـ "معرّف مستخدم الـ IdP" إلى جانب معرف الـ issuer/Entity ID الخاص بالـ IdP، حتى لا يتصادم نفس sub من موفّر مختلف.

البريد الإلكتروني مفيد لكنه ينبغي التعامل معه كمفتاح تسهيلي، ليس مصدر الحقيقة. يتغير البريد عند إعادة تسمية أو ترحيل نطاق أو اندماج. كذلك يمكن أن تخلق الأسماء المستعارة وصناديق البريد المشتركة مطابقات مفاجئة. إذا طابقت بالبريد، افعل ذلك فقط عندما يكون إشارة الـ IdP مؤكدة وفكّر في خطوة تأكيد لمرة واحدة.

عند أول تسجيل دخول، تختار معظم الأدوات الداخلية واحدًا من أنماط الإعداد التالية:

  • الإنشاء التلقائي: إنشاء حساب فورًا ومنحه وصولًا حدِّيًا.
  • بالدعوة فقط: السماح بتسجيل الدخول فقط للمستخدمين المسبوق إنشاؤهم (أو المصرح لهم) في تطبيقك.
  • تدفق الموافقة: إنشاء الحساب لكن حظر الوصول حتى يوافق مدير أو مشرف على تعيين الدور/الفريق.

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

خطوة بخطوة: ربط المطالبات بالأدوار والفرق

Add an access debug view
Create a simple access-mapping page to see received claims and the final role result.
Build Now

التعيين الجيد للمطالبات يجعل SSO يبدو غير مرئي: يسجل الناس دخولهم ويصلون إلى المكان الصحيح بصلاحيات مناسبة.

ابدأ بكتابة نموذج الوصول بلغة بسيطة. اذكر كل دور (Viewer، Agent، Manager، Admin) وكل فريق (Support، Finance، IT)، ومن يجب أن يحصل عليها ولماذا.

ثم أكد ما الذي يستطيع الـ IdP إرساله فعلاً. لـ SAML أو OIDC، عادة تريد معرف مستخدم ثابت (subject أو NameID)، بريد إلكتروني، وواحد أو أكثر من سمات المجموعات. سجل قيم المجموعات الدقيقة كما تظهر، بما في ذلك حالة الأحرف والبادئات. "Support" و"support" ليستا متماثلين.

تدفق عملي:

  • عرّف الأدوار والفرق، وعيّن مالكًا لكل منها (شخص يمكنه الموافقة على التغييرات).
  • قوّم المطالبات المتاحة وأسماء المجموعات الدقيقة من الـ IdP، بما في ذلك الحالات الخاصة (المتعاقدون، صناديق البريد المشتركة).
  • اكتب قواعد التعيين: مجموعة-إلى-دور، مجموعة-إلى-فريق، وترتيب تجاوز عند مطابقة مجموعات متعددة.
  • اختبر مع 3 إلى 5 أنواع مستخدمين حقيقية (موظف جديد، مدير، متعاقد، مشرف) باستخدام حسابات IdP حقيقية.
  • لكل مستخدم اختبار، اكتب النتيجة المتوقعة للدور/الفريق أولًا، ثم سجّل الدخول وقارن.

احتفظ بمثال صغير واحد لجعل القواعد ملموسة. إذا كان المستخدم في okta-support، يصبح فريق Support ودور Agent. إذا كان أيضًا في okta-support-managers، فدور Manager يتجاوز Agent.

أخيرًا، أضف طريقة بسيطة للتصحيح. سجّل المطالبات الخام المستلمة (بأمان)، القواعد التي طابقت، ونتيجة الدور/الفريق النهائية. عندما يقول أحدهم "سجلت الدخول لكن لا أرى أداتي"، يحوّل هذا التخمين إلى فحص سريع.

الإعدادات الآمنة عندما تكون المطالبات مفقودة

غياب المطالبات أمر طبيعي. الـ IdP قد لا يرسل مجموعات لحسابات الخدمة، أو موصّل قد يحذف حقلًا، أو المستخدم في منتصف عملية ترحيل. عامل "عدم وجود بيانات" كـ "عدم ثقة".

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

اختر سلوكًا واحدًا ووثّقه:

  • حظر تسجيل الدخول مع رسالة واضحة: "حسابك لا يملك وصولًا معينًا. اتصل بالدعم."
  • السماح بوصول محدود مع تحذير وتعطيل الإجراءات الحساسة.
  • إنشاء سجل المستخدم لكن عدم تعيين دور أو فريق حتى الموافقة.

لا تفترض أبدًا المشرف حتى مؤقتًا.

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

ضع مسار تصعيد للأخطاء:

  • مالك مسمّى (IT أو مشرف التطبيق) يمكنه الموافقة على الوصول
  • تدفق تعيين يدوي للدور مع ملاحظة تدقيق
  • طريقة لإعادة فحص المطالبات عند تسجيل الدخول التالي
  • مهلة لحسابات "بانتظار الوصول"

التعامل مع التغييرات والإزالة وإنهاء الخدمة

Build an internal tool fast
Build an internal app with clear roles, teams, and access rules in one place.
Start Building

الناس يتنقلون بين الفرق، يغيّرون المديرين، ويغادرون الشركة. اعتبر ذلك طبيعيًا. يجب أن يتعامل إعداد SSO مع ذلك بشكل روتيني.

عند تغيير شخص فريقه، حدّث الوصول في تسجيل الدخول التالي: أعد تقييم مطالبات المجموعة وطبّق التعيين الحالي. تجنب الوصول "اللزج" الذي يبقى لأنّه مُنح مرة.

المغادرون مختلفون. الانتظار حتى تسجيل الدخول التالي غير كافٍ. تريد انتهاء وصولهم بسرعة، حتى لو بقي لديهم جلسة نشطة. هذا يعني عادة تعطيل الحساب في الـ IdP، ويجب على تطبيقك معاملة الهوية المعطلة أو المفقودة كحالة محظورة فورًا.

ينبغي أن تكون عملية إزالة الوصول متوقعة: تعطيل المستخدم، إزالة عضويات الفرق، والاحتفاظ ببيانات التدقيق. غالبًا تحتاج للحفاظ على سجلات مثل الموافقات والتعليقات والسجل لأغراض الامتثال، مع حظر الإجراءات الجديدة.

المتعاقدون والوصول المؤقت يستحقان عناية إضافية. ضعهم في مجموعات مؤقتة في الـ IdP، أو أضف تاريخ مراجعة إلى دورهم حتى لا يبقى الوصول بعد انتهاء المشروع.

سياسة إنهاء عملية عملية:

  • أعد فحص المطالبات عند كل تسجيل دخول وقم بتحديث عضوية الفرق من الـ IdP
  • عندما يُزال المستخدم من المجموعات المطلوبة، خفّض الامتيازات فورًا (في تسجيل الدخول التالي أو في المزامنة التالية)
  • عطل الحساب مع الحفاظ على سجلات التدقيق وسجل الملكية
  • طالب بتاريخ نهاية لوصول المتعاقدين وراجعه قبل التجديد
  • نفّذ مراجعات وصول دورية للأدوار الحساسة مثل المالية أو المشرفين

أخطاء شائعة ومطبات يجب تجنبها

معظم انقطاعات SSO لا تحدث لأن SAML أو OIDC "صعبان". إنها تحدث لأن التطبيق يفترض أشياء غير آمنة عن الأشخاص أو المجموعات أو المعرفات.

خطأ شائع هو خلط تعيين الدور مع تعيين الفريق. الأدوار هي "ماذا يمكنك أن تفعل؟"، الفرق هي "أين تنتمي؟". إذا ربطت مجموعة فريق مباشرةً بدور قوي مثل Admin، غالبًا ما تمنح الوصول الواسع لأي شخص في ذلك الفريق.

فخ آخر هو الاعتماد على البريد كمعرّف وحيد لربط الحسابات. تتغير الرسائل، ويمكن أن تخلق الأسماء المستعارة حسابات مكررة. فضّل استخدام معرف مستخدم ثابت من الـ IdP (مثل sub أو NameID) كمفتاح أساسي، واستخدم البريد كحقل عرض وإشعارات.

مشكلات متكررة أخرى:

  • الفتح التلقائي عند غياب المجموعات (افترض لا وصول أو وصول منخفض، لا وصول كامل)
  • أسماء مجموعات غير واضحة تُعاد استخدامها عبر dev، staging، وproduction
  • معاملة عضوية المجموعة كقائمة أذونات دون مراجعة معنى كل مجموعة
  • عدم التعامل مع المستخدمين متعددّي الفرق الذين يحتاجون للوصول إلى أكثر من منطقة دون أن يصبحوا مشرفين
  • نسيان الشركاء والمتعاقدين الذين ينبغي عزلهم عن فرق الموظفين فقط

اختبر الحالات الحدّية قبل التشغيل. محلل مالي في استجابة للحوادث قد يحتاج فريقين ودورًا مرتفعًا. إذا كانت قواعدك تسمح بفريق واحد فقط، فإما سيفقد الوصول أو يمنح صلاحيات زائدة.

قائمة فحص سريعة قبل الإطلاق

Create a secure admin panel
Create an admin panel to manage users, roles, and mappings with an audit trail.
Build Admin

قبل تمكين SSO للجميع، قم بتشغيل تجريبي مع بعض حسابات الاختبار من كل فريق. معظم مشاكل الوصول تظهر فورًا عند اختبار موظف جديد، تغيير دور، وحالة إيقاف.

ابدأ بربط الحسابات. اختر معرفًا فريدًا لا يتغير مع الوقت، والتزم به. في OIDC هذا عادة sub. في SAML غالبًا NameID أو سمة غير قابلة للتغيير.

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

قائمة فحص قبل الإطلاق بسيطة:

  • أكد أن معرّف الربط ثابت وفريد (وقادر على رؤيته في السجلات)
  • تأكد أن غياب مطالبات المجموعة لا يمنح وصولًا يتجاوز دور منخفض الصلاحية
  • اشترط وصول المسؤول لمجموعة مشرف واضحة، بالإضافة إلى خطوة موافقة ثانية (حتى لو كانت يدوية)
  • اختبر الإزالة: عند خروج المستخدم من مجموعة، يسقط الوصول في تسجيل الدخول التالي (أو في المزامنة التالية)
  • اكتب قواعد التعيين بحيث يفهمها زميل في صفحة واحدة

مثال: أداة داخلية للدعم والمالية مع مجموعات SSO

Choose your deployment path
Deploy to your cloud or export source code when you need more control over hosting.
Try It

تخيل أداة عمليات تُستخدم يوميًا من قبل Support، Finance، وبعض المدراء. تريد أن يسجل الناس الدخول ويحصلوا فورًا على الشاشات والإجراءات المناسبة دون تدخل مسؤول لتصحيح الحسابات.

أنشئ بعض مجموعات الـ IdP وقم بربطها بالأدوار والفرق داخل التطبيق:

  • ops-support -\u003e Role: Support Agent, Team: Support
  • ops-finance -\u003e Role: Finance Analyst, Team: Finance
  • ops-managers -\u003e Role: Manager, Team: Management

إليك كيف يحدث ذلك.

UserIdP identifier used for linkingIdP groups claimIn-app resultNotes
Maya (Support)sub=00u8...k3ops-supportSupport Agent, Support teamCan view tickets, reply, and tag issues. Cannot see billing pages.
Omar (Manager)sub=00u2...p9ops-support, ops-managersManager, Management teamMapping rules pick the higher role, while keeping Finance separate.
Lina (Finance)sub=00u5...w1Missing (group claim not sent)Default: No Access (or Read-only Guest)Safe default prevents over-access. Lina sees: "Access not assigned. Contact admin."

الآن حالة تغيير البريد: تغيّر بريد Omar من [email protected] إلى [email protected]. لأن التطبيق يربط الحسابات باستخدام معرف مستخدم الـ IdP الثابت (مثل sub في OIDC، أو NameID المستمر في SAML) بدلًا من البريد، فهو لا يحصل على حساب مكرر. يحتفظ بنفس السجل وسجل التدقيق.

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

الخطوات التالية: اجعل الوصول متوقعًا مع تغيّر المنظمة

الجزء الأصعب ليس الإطلاق الأول. بل الحفاظ على وصول سليم بعد إعادة التنظيم، الفرق الجديدة، والاستثناءات "المؤقتة".

احتفظ بوثيقة تعيين من صفحة واحدة تجيب عن:

  • أي مجموعات الـ IdP تُطابق أي أدوار وفِرق في التطبيق
  • ما هو الافتراض عند نقص مطالبة (ومن يوافق على التغييرات)
  • من يملك كل دور عالي المخاطر (مشرف مالي، مشرف مستخدمين، تصدير بيانات)
  • كيف يتعاملون مع المتعاقدين وحسابات الخدمة
  • أين يقع مصدر الحقيقة (الـ IdP أم التطبيق)

ابدأ بحصّة صغيرة مع قسم واحد حدود واضحة، صحّح الحالات الحدّية، ثم وسّع دون اختراع قواعد جديدة. حدّد مراجعة دورية للوصول الذي قد يسبب ضررًا حقيقيًا: شهريًا للأدوار الإدارية والعالية الخطورة، ربع سنوي للأدوار العادية.

إذا كنتم تبنون التطبيق الداخلي بأنفسكم، فالمساعدة تكون عندما تكون الأدوار، الفرق، ومنطق الأعمال مجمعة بحيث تكون التغييرات سهلة الاختبار. AppMaster (appmaster.io) هو خيار واحد للفرق التي تريد نمذجة الأدوار وتدفقات العمل بصريًا وإعادة توليد كود backend وweb وmobile حقيقي مع تغير المتطلبات، دون تراكم تصحيحات إذن مخصصة.

الأسئلة الشائعة

What is claim mapping in SSO, and why do internal apps need it?

Mapping الطلبات هي الخطوة التي ترجِم ما يرسله موفّر الهوية (مثل المجموعات أو القسم أو المسمى الوظيفي) إلى الأدوار والفرق التي يستخدمها تطبيقك للتحكم في الوصول. بدونها، قد ينتهي الأمر بالمستخدمين إلى صلاحيات خاطئة رغم نجاح تسجيل الدخول عبر SSO.

What should my app do if group claims are missing or empty?

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

What is the safest way to link an SSO login to an existing app account?

استخدم مفتاح هوية ثابت وغير قابل للتغيير من موفّر الهوية كمفتاح أساسي للمطابقة، مثل مطالبة sub في OIDC أو NameID الثابتة أو سمة غير قابلة للتغيير في SAML. خزّن هذا مع معرف المصدر/الـ issuer الخاص بالـ IdP حتى لا تتصادم نفس القيمة من موفّرين مختلفين.

Why shouldn’t I use email as the main identifier for account linking?

اعتبر البريد الإلكتروني قيمة عرضية وليس مصدر الحقيقة، لأنه قد يتغير عند إعادة تسمية، نقل نطاق، أو اندماج. إذا طابقت بالبريد، افعل ذلك فقط بعد تحقق قوي من الـ IdP وفكّر في خطوة تأكيد لمرة واحدة لتجنّب ربط الشخص الخطأ.

What’s the difference between roles and teams in an internal app?

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

How many roles should I start with for a typical internal tool?

نقطة انطلاق بسيطة هي ثلاث أدوار: Viewer، Editor، Admin، مع تعريفات واضحة مكتوبة. الحفاظ على الأدوار قليلة ومستقرة يقلل الأخطاء عندما تتغير هياكل المنظمة أو أسماء المجموعات.

How do I handle users who belong to multiple IdP groups?

اختر قاعدة حل ثابتة ودوّنها حتى لا تتغير الصلاحيات بشكل غير متوقع لاحقًا. كثير من الفرق تستخدم نهجًا هجينًا: تجميع الفرق بشكل تراكمّي، لكن اختيار الدور يتم حسب الأولوية لتجنّب تضارب الصلاحيات.

How should we name IdP groups to avoid accidental access?

قاعدة عملية هي تضمين اسم التطبيق، البيئة، والدور في اسم المجموعة حتى يتضح الوصول الممنوح. هذا يمنع مجموعات غامضة مثل “Admins” من إعادة الاستخدام عبر تطبيقات متعددة.

What should I log to debug access issues without guessing?

سجّل ما استلمته من مطالبات، وما تطابق منها، والنتيجة النهائية من دور/فريق، من دون كشف محتوى التوكن الحساس. هذا يحوّل "لا أرى التطبيق" إلى فحص سريع للمطالبات مقابل القواعد.

How do I keep access accurate when people change teams or leave the company?

راجع المطالبات عند كل تسجيل دخول أو عند تزامن دوري حتى تتبع التغييرات في انتماء المجموعات بدلًا من بقاء صلاحيات "ثابتة". عند النطاقات المنتهية، لا تنتظر إعادة تسجيل الدخول؛ تعطيل الحساب في الـ IdP يجب أن يحجب الوصول فورًا بينما تحتفظ تطبيقاتكم بسجلات المراجعة.

من السهل أن تبدأ
أنشئ شيئًا رائعًا

تجربة مع AppMaster مع خطة مجانية.
عندما تكون جاهزًا ، يمكنك اختيار الاشتراك المناسب.

البدء
SSO للتطبيقات الداخلية: ربط مطالبات SAML/OIDC بالأدوار والفرق | AppMaster