> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gorbit.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# SAML

> إعداد مصادقة SAML

قم بتكوين Gorbit مع مصادقة SAML.

سيرشدك هذا الدليل خلال عملية الإعداد لـ Okta. سيكون لمزودي الهوية الآخرين عملية مشابهة.
يرجى التواصل معنا إذا كنت بحاجة إلى مساعدة مع مزود هوية مختلف.

<Warning>
  تتطلب مصادقة SAML بناء صور Gorbit من المصدر!

  راجع التفاصيل في [دليل Docker Compose](/deployment/getting_started/quickstart#launch-with-docker-compose).
</Warning>

## الدليل

<Steps>
  <Step title="إنشاء تطبيق Okta">
    انتقل إلى **Admin Console** في Okta → **Applications** → **Create App Integration**.

    <img className="rounded-image" src="https://mintcdn.com/gorbit/qYeWoSrsnkRPFQDm/assets/deployment/oidc_create_integration.png?fit=max&auto=format&n=qYeWoSrsnkRPFQDm&q=85&s=44d1a9fc52ca2e86cbc0bf79f61a6f1f" alt="Okta Create Integration Page" width="2544" height="822" data-path="assets/deployment/oidc_create_integration.png" />
  </Step>

  <Step title="تكوين تطبيق Okta">
    اختر **SAML 2.0**.

    **سمِّ** تطبيقك `Gorbit` وحمّل شعار Gorbit.

    <Tip>
      إذا كنت تستخدم علامة Gorbit التجارية الخاصة بك، يمكنك تسمية تطبيقك بحرية وتحميل شعارك الخاص.
    </Tip>

    أضف **Sign sign-on URL**

    ```
    https://YOUR_GORBIT_DOMAIN.com/auth/saml/callback
    ```

    أضف **Audience URI (SP Entity ID)**

    ```
    https://YOUR_GORBIT_DOMAIN.com/metadata
    ```

    أضف **Attribute Statement** حيث **Name** هو `email` و **Value** هو `user.email`.

    <img className="rounded-image" src="https://mintcdn.com/gorbit/qYeWoSrsnkRPFQDm/assets/deployment/saml_config.png?fit=max&auto=format&n=qYeWoSrsnkRPFQDm&q=85&s=fca0e968bf382a1d42544dd56cf1bdce" alt="Okta Configure SAML Application Page" width="2606" height="1996" data-path="assets/deployment/saml_config.png" />
  </Step>

  <Step title="تعيين المستخدمين للتطبيق">
    أنشئ التطبيق وانتقل إلى تبويب **Assignments** لتعيين المستخدمين.
  </Step>

  <Step title="تكوين Gorbit لـ SAML">
    انتقل إلى `gorbit/backend/ee/gorbit/configs/saml_config` وانسخ ملف الإعدادات القالب.

    ```bash theme={null}
    cd gorbit/backend/ee/gorbit/configs/saml_config
    cp template_settings.yaml settings.yaml
    ```

    عدّل ملف `settings.yaml` بالقيم التالية:

    <AccordionGroup>
      <Accordion title="idp: entityId">
        اذهب إلى تبويب **Sign On** لتطبيقك في Okta، انسخ **Metadata URL**،
        والصقه في متصفحك. يجب أن ترى XML مثل:

        ```XML theme={null}
        <md:EntityDescriptor
            xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
            entityID="http://www.okta.com/exkngircrvOYQyNg35d7">
        ...
        </md:EntityDescriptor>
        ```

        انسخ قيمة `entityID` والصقها في `idp: entityId` في `settings.yaml`.
      </Accordion>

      <Accordion title="idp: x509cert">
        في XML من الخطوة السابقة، ابحث عن عنصر `ds:X509Certificate`.

        ```XML theme={null}
        <md:KeyDescriptor use="signing">
            <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
                <ds:X509Data>
                    <ds:X509Certificate>
                        [Some certificate value here]
                    </ds:X509Certificate>
                </ds:X509Data>
            </ds:KeyInfo>
        </md:KeyDescriptor>
        ```

        انسخ قيمة الشهادة والصقها في `idp: x509cert` في `settings.yaml`.
      </Accordion>

      <Accordion title="idp: singleSignOnService: url">
        اذهب إلى تبويب **General** لتطبيقك في Okta وانسخ **Embed Link**.
      </Accordion>

      <Accordion title="sp: entityId">
        هذا هو نفس **Audience URI (SP Entity ID)** الذي أضفته إلى تطبيق Okta.

        ```
        https://YOUR_GORBIT_DOMAIN.com/metadata
        ```
      </Accordion>

      <Accordion title="sp: assertionConsumerService: url">
        هذا هو نفس **Sign sign-on URL** الذي أضفته إلى تطبيق Okta.

        ```
        https://YOUR_GORBIT_DOMAIN.com/auth/saml/callback
        ```
      </Accordion>

      <Accordion title="sp: x509cert">
        أنشئ شهادة موقعة ذاتيًا:

        ```bash theme={null}
        openssl genrsa -out sp-private-key.pem 2048
        openssl req -new -x509 -key sp-private-key.pem -out sp-cert.pem -days 730 -subj "/CN=<YOUR_DOMAIN e.g. saml.gorbit.dev>"
        awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' sp-cert.pem
        ```

        انسخ قيمة الشهادة والصقها في `sp: x509cert` في `settings.yaml`.
      </Accordion>
    </AccordionGroup>
  </Step>

  <Step title="ضبط متغيرات بيئة Gorbit">
    اضبط متغيرات البيئة التالية في ملف `.env` أو `values.yaml` (Docker و Kubernetes، على التوالي).

    ```bash .env theme={null}
    AUTH_TYPE=saml
    ```

    <Note>
      إذا كنت تستخدم Docker ولكن ليس لديك ملف `.env`،
      انسخ `gorbit/deployment/docker_compose/env.prod.template` إلى ملف `.env` جديد في نفس المجلد.
    </Note>

    ```bash values.yaml theme={null}
    configMap:
      AUTH_TYPE: saml
    ```
  </Step>
</Steps>
