الانتقال إلى المحتوى الرئيسي
المصادقة ميزة جديدة. تدعم صفحة تسجيل الدخول المستضافة جميع الطرق الواردة في هذه الصفحة. أما نقاط نهاية JSON المذكورة هنا فهي مخصّصة للفرق التي تبني شاشات تسجيل الدخول الخاصة بها (sign_in_ui: "own").
لتفعيل طريقة، أرسل PUT methods/{name}/ مع {"enabled": true} إلى واجهة إدارة المصادقة في تطبيقك، أو فعّلها من وحدة التحكم. تعرض صفحة تسجيل الدخول المستضافة الطرق التي فعّلتها فقط. تبدأ كل استدعاء JSON في هذه الصفحة بـ transaction يصدر عن POST authorize/. وتستمر المعاملة 10 دقائق. عند نجاح تسجيل الدخول، تُعيد الاستجابة {code, redirect_uri, state}. استبدل الرمز عبر POST token/ خلال 60 ثانية (راجع token وJWKS). بدلاً من الرمز، يمكن أن تُعيد استدعاءات تسجيل الدخول إحدى هذه الخطوات. أكمل الخطوة، ثم ستحصل على الرمز.

كلمة المرور

يقبل POST password/ القيم transaction وemail وpassword.
  • يجب أن تستوفي كلمة المرور الحد الأدنى password_min_length الذي حددته (8 أو 10 أو 12 أو 14 حرفاً؛ والافتراضي 10). تُرفض كلمات المرور الشائعة وكلمات المرور الرقمية بالكامل مع الخطأ password_policy. وعند تفعيل فحص كلمات المرور المسرّبة، تُرفض كلمة المرور المعروفة بأنها سُرّبت بالخطأ password_breached.
  • لا يمكن تسجيل الدخول بكلمة المرور إلا لمن لديهم بريد إلكتروني متحقَّق منه.
  • كلمة المرور الخاطئة، والبريد الإلكتروني غير المعروف، والبريد غير المتحقَّق منه، والحساب المقفل، والحساب المحظور، كلها تحصل على الإجابة نفسها: 400 {"error": "invalid_credentials"}. لا تستطيع واجهتك معرفة أي منها حدث، ولا يستطيع المهاجم معرفة ذلك أيضاً.

إنشاء الحساب

يتحقق التسجيل من البريد الإلكتروني أولاً. استدعِ POST email/start/ مع purpose: "signup" وemail وpassword، ثم استدعِ POST email/complete/ مع الرمز. يُنشأ الحساب ببريد إلكتروني متحقَّق منه.
  • يحدد signup_policy من يمكنه التسجيل: anyone (أي شخص)، أو invited (بوجود رابط دعوة فقط)، أو allowed_domains (النطاقات المسموح بها).
  • مع allow_subaddresses: false (الافتراضي)، يُرفض أي عنوان يحتوي على + في الجزء المحلي منه.
  • عندما تتضمن إعدادات علامتك التجارية روابط الشروط أو الخصوصية، يطلب نموذج التسجيل المستضاف من الشخص قبولها.

رمز البريد الإلكتروني

يقبل POST email/start/ القيم transaction وpurpose (وهي login أو signup) وemail، ويُعيد 202 {challenge, expires_in: 600}. يتلقى الشخص رمزاً مكوناً من 6 أرقام صالحاً لمدة 10 دقائق. يقبل POST email/complete/ القيم transaction وpurpose وchallenge وcode. لديك 5 محاولات، وبعدها يجب على الشخص طلب رمز جديد. تتيح الصفحة المستضافة طلب رمز جديد بعد 30 ثانية. إذا أُرسل رمز تسجيل دخول إلى عنوان بريد لا يملك حساباً، فسيُنشأ حساب جديد عند السماح بذلك في signup_policy. وهذا هو التسجيل بلا كلمة مرور.

الرابط السحري

ترسل الصفحة المستضافة رابط تسجيل دخول صالحاً لمدة 15 دقيقة. يبقى الرابط مرتبطاً بالمعاملة الأصلية لـ PKCE، لذا يعمل فقط ضمن التدفق الذي بدأه. يؤكد الشخص تسجيل الدخول في الصفحة التي يفتحها الرابط. لا توجد نقطة نهاية JSON للروابط السحرية.

رمز الهاتف

يقبل POST phone/start/ القيم transaction وphone وchannel الاختيارية (وهي sms، وهي الافتراضية، أو whatsapp). تُوحَّد صيغة الرقم إلى E.164. ويُعيد 202 {challenge, expires_in: 600}. يقبل POST phone/complete/ القيم transaction وchallenge والرمز code المكوّن من 6 أرقام. لديك 5 محاولات.
  • تُرسل رموز الهاتف عبر التحقق من رقم الهاتف في Didit. فعّل الطريقة باستخدام workflow_id لسير عمل يتضمن التحقق من رقم الهاتف.
  • لا يُنشئ أول تسجيل دخول بالهاتف حساباً إلا عندما يكون signup_policy مساوياً لـ anyone.
  • إذا فشل الإرسال، تُعيد الاستدعاء 503 {"error": "delivery_unavailable"}.

مفاتيح المرور

تعتمد مفاتيح المرور على WebAuthn. الطرف المعتمِد هو أصل تسجيل الدخول في تطبيقك. يطلب Didit بيانات اعتماد قابلة للاكتشاف (مفتاح مقيم) ويشترط دائماً التحقق من المستخدم، مثل بصمة الإصبع أو الوجه أو رمز PIN للجهاز. لا يطلب Didit الإقرار.
  • يستمر تحدي مفتاح المرور 5 دقائق.
  • إضافة مفتاح مرور تتطلب جلسة أُنشئت خلال آخر 5 دقائق. وإلا تُعيد الاستدعاء 403 {"error": "reauthentication_required"}. أعِد تسجيل دخول الشخص أولاً.
  • يُعد تسجيل الدخول بمفتاح المرور مصادقة متعددة العوامل.
  • بعد التسجيل، تتيح الصفحة المستضافة إضافة مفتاح مرور (passkeys/setup/begin/ وpasskeys/setup/complete/).
  • يمكن لتطبيقات Android المسجّلة في التطبيق استخدام مفاتيح المرور نفسها.

تسجيل الدخول الاجتماعي

يستخدم تسجيل الدخول عبر Google وMicrosoft وApple وGitHub بيانات اعتماد تطبيق OAuth الخاص بك، وتُضبط باستخدام PUT methods/{provider}/ وcredentials: {client_id, client_secret}. يكون رابط الاستدعاء لدى المزوّد على أصل تسجيل الدخول الخاص بك. عند أول تسجيل دخول لأي شخص عبر مزوّد، يثبت أيضاً ملكيته لعنوان البريد الإلكتروني برمز يُرسل إليه (POST social/email/start/ وPOST social/email/verify/). تتجاوز عمليات تسجيل الدخول اللاحقة عبر المزوّد نفسه هذه الخطوة. لا يستطيع GitHub إثبات تسجيل دخول حديث، لذلك لا يُعرض عند إرسال prompt=login أو max_age.

تسجيل الدخول الموحّد للمؤسسة

يتيح تسجيل الدخول الموحّد للمؤسسة لشركة العميل أن يسجّل الدخول عبر مزوّد الهوية الخاص بها بصيغة SAML أو OIDC. يُضبط لكل مؤسسة عميلة على المسار organizations/{id}/sso/ باستخدام protocol (saml أو oidc) وenabled وconfig.
  • يمكنك إرسال رابط إعداد إلى فريق تقنية المعلومات لدى العميل، ويبقى صالحاً لمدة 7 أيام.
  • تُنشر بيانات مزوّد خدمة SAML الخاص بك الوصفية على {origin}/sso/saml/metadata/.
  • يحدّد تسجيل الدخول المستضاف الاتصال من نطاق البريد الإلكتروني المُتحقَّق منه للشخص، أو من organization=<slug> في عنوان URL لتسجيل الدخول.

Didit ID Wallet

يمكن للأشخاص الذين تحققوا من هويتهم مسبقاً عبر Didit تسجيل الدخول بمحفظة Didit ID Wallet الخاصة بهم. هذه الطريقة مفعّلة دائماً. تحمل verified_identity في الجلسة بعد ذلك ما اختار الشخص مشاركته.

MFA

عامل التحقق الثاني هو تطبيق مصادقة (TOTP) مع رموز استرداد، أو مفتاح مرور.
  • يحدد mfa_policy من يجب أن يستخدم MFA: optional أو everyone أو organization_admins (وهو الافتراضي). ويجب أن يستخدم كل من سجّل تطبيق مصادقة هذا التطبيق دائماً.
  • لتسجيل تطبيق مصادقة، استدعِ POST mfa/enroll/ بجلسة جديدة (أُنشئت خلال 5 دقائق). تُرجع الاستجابة {challenge, uri}؛ اعرض uri كرمز QR. ثم أرسل الرمز الأول إلى POST mfa/confirm/. تتضمن الاستجابة 10 رموز استرداد يُستخدم كل منها مرة واحدة. اعرضها مرة واحدة فقط.
  • عند تسجيل الدخول، أرسل رمز TOTP أو رمز استرداد إلى POST mfa/complete/ مع challenge. لديك 5 محاولات. لاستخدام مفتاح مرور بدلاً من ذلك، استدعِ POST mfa/passkey/begin/ ثم POST mfa/passkey/complete/.
  • تستخدم الرموز فترات زمنية مدتها 30 ثانية. لا يمكن إعادة استخدام رمز سبق قبوله.
  • رموز الرسائل النصية ورموز البريد الإلكتروني غير متاحة كعوامل تحقق ثانية.

نسيان كلمة المرور وإعادة تعيينها

يأخذ POST password-reset/start/ الحقل email ويُرجع 202 {"status": "sent", "expires_in": 1800}. الاستجابة واحدة سواء كان للعنوان حساب أم لا. رابط إعادة التعيين صالح لمدة 30 دقيقة. يأخذ POST password-reset/complete/ الحقلين token وpassword ويُرجع {"status": "password_changed"}. ويقوم أيضاً بما يلي:
  • يلغي حالة الحظر.
  • ينهي كل الجلسات عند تفعيل revoke_on_password_change (وهو الافتراضي).
  • يُبطل الرموز والروابط الأخرى المعلّقة لذلك الشخص.

الدعوات

مع signup_policy: "invited"، لا يمكن إنشاء حساب إلا للأشخاص المدعوين. رابط الدعوة صالح لمدة 7 أيام ويفتح صفحة /invite المستضافة. تابع مع token وJWKS، أو اقرأ الحماية من الروبوتات للاطلاع على حالات الحظر والتحديات.
آخر تعديل في ٧ نوفمبر ٢٠٢٦