# موفّرو الهوية

> ما يحتاجه خادم Octa Pass المستضاف ذاتيًا لتسجيل الدخول الموحّد عبر OpenID Connect أو SAML وللتزويد عبر SCIM: العنوان العام والوكيل العكسي والوصول الشبكي وما تعطيه لموفّرك.

Source: https://octap.app/ar/docs/self-hosting/identity-providers/
Status: in-progress
Project: Octa Pass

:::note[قيد العمل]
تعمل OpenID Connect وSAML وSCIM كلها على الخادم المستضاف ذاتيًا، وقد جُرِّبت مع بدائل محلية لا مع موفّري هوية حقيقيين بعد. يُعدّها مالكو المؤسسة من خزنة الويب أو تطبيق Windows وLinux أو سطر الأوامر.
:::

لا يحتاج [تسجيل الدخول الموحّد](https://octap.app/ar/docs/features/single-sign-on/) ولا [التزويد عبر SCIM](https://octap.app/ar/docs/features/scim/) إلى تشغيل أي شيء: يُعدّهما مالكو كل مؤسسة. وما يحتاجه الخادم منك عنوان يصل إليه موفّر الهوية ومتصفحات أعضائك.

## العنوان العام

اضبط `OCTAPASS_PUBLIC_URL` على العنوان الذي يستخدمه الناس، مثل `https://pass.example.com`. فكل عنوان تعطيه للموفّر مبني عليه:

| ماذا | العنوان |
|---|---|
| عنوان إعادة التوجيه في OpenID Connect | `<العنوان العام>/v1/sso/callback` |
| معرّف كيان SAML وبياناته الوصفية | `<العنوان العام>/v1/sso/saml/<معرّف المؤسسة>/metadata` |
| خدمة استقبال تأكيدات SAML | `<العنوان العام>/v1/sso/saml/<معرّف المؤسسة>/acs` |
| عنوان SCIM الأساسي | `<العنوان العام>/v1/scim/v2` |

تعرضها صفحة إعدادات كل مؤسسة. وإن غيّرت العنوان العام لاحقًا، فسجّل العناوين الجديدة لدى الموفّر، وأعد تجربة تسجيل الدخول، وتوقّع أن يُربط الأعضاء من جديد إن تغيّر معرّف كيان SAML.

## الوكيل العكسي

مرّر هذه كما هي، بطرقها وأجسامها:

- `GET /v1/sso/start/…` و`GET /v1/sso/callback`، لـ OpenID Connect.
- `GET /v1/sso/saml/…/metadata` و`POST /v1/sso/saml/…/acs`. ترسل صفحة الموفّر نموذج المتصفح إلى هناك من عنوان الموفّر نفسه: لا تحظر طلبات `POST` القادمة من مواقع أخرى إليه، واقبل أجسامًا حتى 1 MiB.
- كل ما تحت `/v1/scim/v2/`، مع ترويسة `Authorization`. يرسل الموفّرون `GET` و`POST` و`PUT` و`PATCH` و`DELETE`.

اضبط `OCTAPASS_TRUST_PROXY=true` خلف وكيل، كي ترى الحدود لكل عنوان العناوين الحقيقية. فرموز SCIM الخاطئة وصفحات تسجيل الدخول الموحّد تُحسب ضمن تلك الحدود.

## الوصول الشبكي

- **OpenID Connect:** يجلب الخادم مستند الاكتشاف لدى المُصدِر ويستدعي نقطة الرموز لديه، عبر HTTPS، على العناوين العامة فقط. لموفّر على شبكتك الخاصة، اضبط `OCTAPASS_SSO_PRIVATE_NETWORK=on` ([الإعدادات](https://octap.app/ar/docs/self-hosting/configuration/)).
- **SAML:** لا يتصل الخادم بالموفّر أبدًا. يلصق المالكون بياناته الوصفية، ويحمل المتصفح تسجيل الدخول. يكفي أن يصل الموفّر إلى المتصفح.
- **SCIM:** الموفّر هو من يستدعي خادمك، فيحتاج إلى الوصول إلى عنوان SCIM الأساسي. والموفّر السحابي مثل Entra ID أو Okta يحتاج إلى عنوان عام، أو إلى وكيله المحلي الخاص.

لا تعمل العناوين `http://` العادية إلا مع `OCTAPASS_DEV_MODE`، للتجربة.

## ما يُحفظ

سر عميل OpenID Connect مختوم بسر الخادم. وشهادات SAML ومُجزّآت رموز SCIM وما يزوّده SCIM بيانات وصفية للمؤسسة في قاعدة البيانات، تُنسخ احتياطيًا معها. ولا شيء منها يفتح خزنة: ما زال الأعضاء يفتحون خزائنهم بكلمة المرور الرئيسية والمفتاح السري، ولا تصل المفاتيح إلى أحد إلا عبر منح يُنشأ على جهاز حامل المفتاح.

## ترحيل قاعدة البيانات

تأتي جداول SAML وSCIM مع الترحيل `0015_org_provisioning`، ويُطبَّق عند التشغيل على SQLite وPostgreSQL على حد سواء. وتظل إعدادات OpenID Connect الموجودة تعمل كما هي.
