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

# المصادقة: تسجيل دخول المستخدم النهائي ومفاتيح المرور والجلسات

> تسجيل دخول المستخدم النهائي مع Didit عبر صفحات مستضافة ومفاتيح المرور والرموز وSSO، مع ربطه بالتحقق من الهوية.

> [!WARNING]
>
> المصادقة ميزة جديدة. تُفعّل Didit المنتج لتطبيقك. إلى حين ذلك، تُرجع كل مسارات التشغيل لهذا التطبيق الاستجابة `404`. حزم SDK الخاصة بالمصادقة لم تُنشر بعد، لذا استخدم التدفق المستضاف وعقد HTTP الواردين في هذه الصفحات.

تُسجّل المصادقة دخول عملائك إلى **تطبيقك**. وهي منفصلة عن تسجيل الدخول إلى لوحة تحكم Didit أو إنشاء حساب مطوّر في Didit. وهي منفصلة أيضًا عن التحقق من هوية الشخص.

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

## كيف يعمل

لكل تطبيق أصل تسجيل دخول خاص به ومُصدِر token خاص به. تطبيقات الإنتاج وتطبيقات البيئة التجريبية منفصلة: لكل منها أصول وإعدادات وهويات مستقلة.

| البند | القيمة |
| - | - |
| الأصل الافتراضي | `https://<slug>.auth.didit.me` لتطبيق الإنتاج، و`https://<slug>.sandbox.auth.didit.me` لتطبيق البيئة التجريبية. تعرض وحدة التحكم أصلك. يمكن لنطاق مخصّص مُتحقَّق منه أن يحل محله. |
| الصفحات المستضافة | `/sign-in` و`/magic` و`/invite` و`/reset` على ذلك الأصل. |
| واجهة برمجة التشغيل | الأصل نفسه، مثل `POST {origin}/token/` و`GET {origin}/session/`. |
| المُصدِر | الأصل نفسه. تتوفر معلومات الاكتشاف على `{origin}/.well-known/openid-configuration`. |
| مفتاح قابل للنشر | `pk_live_...` أو `pk_test_...`. يحدد التطبيق، وليس سرًا. |

التدفق هو تدفق رمز التفويض في OAuth 2.0 مع PKCE (`S256` فقط):

1. يفتح تطبيقك `{origin}/sign-in` مع `redirect_uri` و`state` و`code_challenge` و`code_challenge_method=S256`.
2. تُسجّل الصفحة المستضافة دخول الشخص أو تُنشئ حسابه باستخدام الطرق التي فعّلتها، بما فيها أي عامل ثانٍ مطلوب.
3. يعود المتصفح إلى `redirect_uri` لديك مع `code` و`state`.
4. يستبدل تطبيقك الرمز عند `POST {origin}/token/` بـtoken وصول وtoken للهوية وtoken لتحديث الجلسة.

راجع [رموز token وJWKS](https://docs.didit.me/ar/authentication/tokens-and-jwks.md) لـعقد token، و[طرق تسجيل الدخول](https://docs.didit.me/ar/authentication/sign-in-methods.md) لكل طريقة.

## اختر منصتك

> [card] [JavaScript](https://docs.didit.me/ar/authentication/quickstarts/javascript.md)
>
> تسجيل الدخول المستضاف والاستدعاء والجلسة وتسجيل الخروج.

> [card] [React](https://docs.didit.me/ar/authentication/quickstarts/react.md)
>
> حالة العميل وواجهات التطبيق المحمية.

> [card] [Next.js](https://docs.didit.me/ar/authentication/quickstarts/nextjs.md)
>
> جلسات الخادم ومسارات الاستدعاء وملفات تعريف الارتباط.

> [card] [iOS](https://docs.didit.me/ar/authentication/quickstarts/ios.md)
>
> متصفح النظام وتخزين الرموز الآمن.

> [card] [Android](https://docs.didit.me/ar/authentication/quickstarts/android.md)
>
> تفويض المتصفح واستدعاءات التطبيق.

> [card] [React Native](https://docs.didit.me/ar/authentication/quickstarts/react-native.md)
>
> تحضير غلاف المصادقة الأصلي.

> [card] [Flutter](https://docs.didit.me/ar/authentication/quickstarts/flutter.md)
>
> تحضير غلاف المصادقة الأصلي.

## جهّز تطبيقك

1. اطلب من Didit تفعيل المصادقة لتطبيقك. اختبر أولًا في تطبيق البيئة التجريبية.
2. سجّل [عناوين إعادة التوجيه](#عناوين-إعادة-التوجيه) الدقيقة (حتى 50) و`allowed_origins` الخاصة بالمتصفح (حتى 50) التي تستدعي واجهة برمجة التشغيل.
3. فعّل [طرق تسجيل الدخول](https://docs.didit.me/ar/authentication/sign-in-methods.md) التي تريد عرضها. Didit ID Wallet مفعّلة دائمًا.
4. اختر إعدادات الجلسة وكلمة المرور (انظر أدناه).
5. اختبر التسجيل وتسجيل الدخول واستعادة كلمة المرور والمصادقة متعددة العوامل وانتهاء الجلسة وتسجيل الخروج قبل الإطلاق.

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

## عناوين إعادة التوجيه

لا تُعيد Didit الشخص إلا إلى عنوان سجّلته.
سجّل عنوانك في وحدة التحكم، ضمن **Authentication > Security and sessions > Redirect URLs and allowed origins**.

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

| التطبيق | ما يمكنك تسجيله |
| - | - |
| الإنتاج | عناوين `https://` |
| البيئة التجريبية | عناوين `https://`، وعناوين `http://` على `localhost` أو `127.0.0.1` أو `[::1]` |

تُرفض علامات البدل والأجزاء وبيانات الاعتماد داخل العنوان والمخططات المخصصة.

عندما لا يكون العنوان مسجلاً، لا يُعيد Didit التوجيه إليه أبدًا.
`{origin}/sign-in` يُرجع `400` مع صفحة توضح ما يجب تسجيله وأين، و`POST {origin}/authorize/` يُرجع `400 {"error": "invalid_redirect_uri"}`.

### التطوير المحلي

اختبر على جهازك باستخدام تطبيق البيئة التجريبية:

1. سجّل رابط الاستدعاء مع منفذه، مثل `http://localhost:3000/auth/callback`.
2. إذا كان كود المتصفح يستدعي واجهة برمجة التشغيل، مثلًا لاستبدال الرمز عند `POST {origin}/token/`، فأضف الأصل إلى **الأصول المسموح بها** أيضًا: `http://localhost:3000`، دون مسار وبلا شرطة مائلة في النهاية.
3. ابدأ تسجيل الدخول على أصل البيئة التجريبية، `https://<slug>.sandbox.auth.didit.me`، باستخدام مفتاح `pk_test_...` الخاص بك.

`localhost` و`127.0.0.1` و`[::1]` عناوين منفصلة، وكذلك كل منفذ. سجّل كل عنوان تستخدمه.

لا تقبل تطبيقات الإنتاج عنوان `http://` أبدًا.
قبل الإطلاق، سجّل رابط الاستدعاء `https://` الخاص بالإنتاج في تطبيق الإنتاج.

## إعدادات التطبيق

تدير هذه الإعدادات من وحدة التحكم، أو من خلال جلسة وحدة تحكم مصرّح بها تملك الصلاحية `write:authentication`.

| الإعداد | القيم | الافتراضي |
| - | - | - |
| `session_lifetime` | `86400`، `604800`، `2592000`، `7776000` ثانية | `2592000` (30 يومًا) |
| `idle_timeout` | `1800`، `7200`، `86400`، `604800` ثانية | `86400` (يوم واحد) |
| `multiple_sessions` | `false` يُخرج الشخص من جلساته الأخرى عند كل تسجيل دخول جديد | `true` |
| `password_min_length` | `8`، `10`، `12`، `14` | `10` |
| `revoke_on_password_change` | تنهي كل الجلسات بعد إعادة تعيين كلمة المرور | `true` |
| `signup_policy` | `anyone`، `invited`، `allowed_domains` (مع `allowed_email_domains`، حتى 100) | `anyone` |
| `allow_subaddresses` | قبول `+` في الجزء المحلي من البريد الإلكتروني | `false` |
| `post_logout_redirect_uri` | الوجهة التي يرسل إليها تطبيقك المستخدم بعد تسجيل الخروج | فارغ |
| `mfa_policy` | `optional`، `everyone`، `organization_admins` | `organization_admins` |
| `sign_in_ui` | `hosted` أو `own` | `hosted` |

## الحفاظ على هوية المستخدم نفسه عبر المنتجات

تحمل كل هوية قيمة `vendor_data`. وهي `external_id` الذي زوّدت به النظام عند [استيراد](https://docs.didit.me/ar/authentication/migration.md) الشخص، وإلا فهو معرّف هوية Didit. تظهر هذه القيمة في رمز الوصول، وفي رمز الهوية، وفي `GET session/`.

استخدم القيمة نفسها بوصفها `vendor_data` عند إنشاء جلسات التحقق وإرسال المعاملات. عندها تظهر أحداث المصادقة للشخص نفسه في وحدة التحكم، مع عمليات التحقق والمعاملات الخاصة به. راجع [الأحداث وwebhook](https://docs.didit.me/ar/authentication/events-and-webhooks.md).

استخرج `vendor_data` على الخادم من رمز مُتحقَّق منه، ولا تستخرجه أبدًا من حقل في المتصفح لم يُتحقَّق منه.

| مجموعة المنتجات | ما الذي تبنيه |
| - | - |
| المصادقة | تسجيل الدخول، والتحقق من صلاحية الجلسات، وتسجيل الخروج. |
| التحقق من الهوية + المصادقة | ابدأ عملية تحقق بعد تسجيل الدخول عندما تتطلب سياستك ذلك، باستخدام `vendor_data` من الرمز. |
| مراقبة المعاملات + المصادقة | أرسل المعاملات باستخدام `vendor_data` الخاص بالشخص المسجَّل الدخول. تصل أحداث تسجيل الدخول إلى الخط الزمني للشخص نفسه وقواعده. |
| المنتجات الثلاثة | قيمة `vendor_data` واحدة لكل شخص. عالج قرار كل منتج على حدة. |

استخدم [تعليمات التكامل المشتركة](https://docs.didit.me/ar/integration/integration-prompt.md) لأي مجموعة. واطّلع على [الحماية من الروبوتات](https://docs.didit.me/ar/authentication/bot-protection.md) للسياسات التي تعمل عند تسجيل الدخول.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.