> For the complete documentation index, see [llms.txt](https://docs.chamilo.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chamilo.org/3.x/ar/dlyl-alidarh/admin-guide/authentication/sso-configuration.md).

# إعداد SSO

تغطي هذه الصفحة مواضيع تنطبق على جميع طرائق المصادقة.

## مزوّدون متعددون

يمكنك تفعيل أكثر من طريقة مصادقة في الوقت نفسه. يظهر لكل مزوّد مفعّل زر خاص به في صفحة تسجيل الدخول إلى جانب نموذج اسم المستخدم/كلمة المرور القياسي. يختار المستخدمون الطريقة المفضلة لديهم.

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

## أولوية المصادقة

عندما تكون عدة طرائق نشطة، يتحقق النظام من بيانات الاعتماد بهذا الترتيب:

1. LDAP (إذا كانت `force_as_login_method` مضبوطة)
2. مزوّدو OAuth2 (بالترتيب الذي يظهرون به في `authentication.yaml`)
3. قاعدة بيانات Chamilo الداخلية

## رموز JWT للوصول إلى واجهة البرمجة

يستخدم Chamilo JWT (JSON Web Tokens) لواجهة REST API الخاصة به. يُضبط عمر الرمز وسلوك التجديد في `config/packages/lexik_jwt_authentication.yaml`. هذا منفصل عن تدفق تسجيل الدخول عبر SSO وينطبق على عملاء واجهة البرمجة فقط.

## استكشاف الأخطاء وإصلاحها

### زر تسجيل الدخول لا يظهر بعد الإعداد

يجب مسح الذاكرة المؤقتة بعد كل تغيير في `authentication.yaml`:

```bash
php bin/console cache:clear && php bin/console cache:warmup
```

### تعذّر تسجيل دخول المستخدمين عبر SSO

* **عدم تطابق عنوان إعادة التوجيه (Redirect URI)** — يجب أن يطابق العنوان المسجّل لدى مزوّد الهوية تماماً `https://your-chamilo-url/connect/<provider>/check`.
* **انحراف الساعة** — رموز SSO حسّاسة للوقت. تأكد من مزامنة ساعة الخادم (NTP).
* **شهادة SSL** — يجب أن يثق Chamilo بشهادة مزوّد الهوية. تحقق من مشكلات الشهادات الموقَّعة ذاتياً.
* **السجلات** — راجع `var/log/` وسجلات مزوّد الهوية بحثاً عن رسائل خطأ محددة.

### يُنشأ المستخدمون بدور خاطئ

تحقق من إعداد تعيين الأدوار للمزوّد. يكون الدور الافتراضي للمستخدمين الجدد هو دور الطالب ما لم يرقَّهم تعيين مجموعة أو سمة.

### المستخدمون موجودون لدى المزوّد لكن لا يمكنهم الوصول إلى Chamilo

* إذا كانت `allow_create_new_users` بقيمة false، يجب أن يكون لدى المستخدم مسبقاً حساب Chamilo يطابق بريده الإلكتروني أو اسم المستخدم بيانات المزوّد.
* تحقق من أن المستخدم غير معطّل في Chamilo.
* بالنسبة إلى Azure، راجع `existing_user_verification_order` لفهم كيفية مطابقة Chamilo للمستخدمين الواردين مع الحسابات الموجودة.
