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، أو اقرأ الحماية من الروبوتات للاطلاع على حالات الحظر والتحديات.