مساعدة المستخدمين على استخدام مفاتيح المرور بسلاسة أكبر

Published: May 09, 2025, Last updated: December 22, 2025

توفّر مفاتيح المرور مصادقة قوية ومقاومة للتصيّد الاحتيالي. ومع ذلك، قد يؤدي تشجيع المستخدمين على اعتمادها إلى حدوث بعض المشاكل. باستخدام ميزة "إنشاء مفاتيح المرور تلقائيًا"، يمكنك إنشاء مفاتيح مرور للمستخدمين في الوقت المناسب، طالما أنّ لديهم كلمة مرور محفوظة لموقعك الإلكتروني. إنّ ميزة "الإنشاء المشروط"، التي تتيح إنشاء مفاتيح المرور تلقائيًا، هي جزء من مواصفات WebAuthn.

آلية العمل

لمساعدة المستخدمين في اعتماد مفاتيح المرور بسهولة أكبر، استخدِم ميزة في WebAuthn API تُعرف باسم الإنشاء المشروط. تتيح ميزة "الإنشاء المشروط" لموقعك الإلكتروني طلب مفتاح مرور للمستخدم بدون أن يطلب منه اتّخاذ أي إجراء.

لا يعمل هذا الإجراء إلا عند استيفاء الشروط التالية:

  • أن يكون لدى المستخدم كلمة مرور محفوظة في مدير كلمات المرور التلقائي.
  • أن يكون قد تم استخدام كلمة المرور مؤخرًا. من الأفضل استدعاء ميزة "الإنشاء المشروط" مباشرةً بعد تسجيل الدخول بنجاح باستخدام كلمة المرور.

إذا تم استيفاء كلا الشرطَين، يمكنك طلب إنشاء مدير كلمات المرور لمفتاح مرور للمستخدم من خلال استدعاء ميزة "الإنشاء المشروط". بعد إنشاء مفتاح المرور بنجاح، يتم إشعار المستخدم وفقًا لمدير كلمات المرور.

إجراء طلب مفتاح المرور باستخدام ميزة "الإنشاء المشروط"

التوافق

تتوافق ميزة "الإنشاء المشروط" مع Safari على أجهزة macOS وجميع المتصفّحات على أجهزة iOS، بالإضافة إلى Chrome على أجهزة الكمبيوتر المكتبي وChrome على أجهزة Android.

يعني هذا التوافق أنّ الميزة تعمل على مزوّدي مفاتيح المرور التلقائيين المعنيّين: iCloud Keychain (كلمات المرور) على Safari على أجهزة macOS وiOS، و"مدير كلمات المرور في Google" على Chrome على أجهزة الكمبيوتر المكتبي وAndroid.

بما أنّ الإصدار iOS 18 أو الإصدارات الأحدث والإصدار Android 14 أو الإصدارات الأحدث تتيح استخدام مزوّدي مفاتيح المرور الخارجيين، بغض النظر عن المتصفّح الذي يستخدمه المستخدم، فإنّ مدى التوافق مع ميزة "الإنشاء المشروط" يعتمد على مزوّد مفتاح المرور. إذا كان مزوّد مفتاح المرور الذي تم اختياره لا يتيح ميزة "الإنشاء المشروط"، لن يتم إنشاء مفتاح مرور جديد.

تنفيذ ميزة "الإنشاء المشروط"

تستند ميزة "إنشاء مفاتيح المرور تلقائيًا" إلى ميزة في WebAuthn API تُعرف باسم الإنشاء المشروط. هذه هي طلبات create() العادية في WebAuthn مع الـ mediation المعلمة مضبوطة على "conditional"، ما يعمل بطريقة مشابهة لملء مفتاح المرور تلقائيًا لطلبات get().

استخدِم ميزة "الإنشاء المشروط" بعد تسجيل دخول المستخدم باستخدام كلمة مرور. يعتمد نجاح عملية الإنشاء على مدير كلمات المرور واستيفاء شروط معيّنة. قد تختلف هذه الشروط حسب مدير كلمات المرور وقد تتغيّر بمرور الوقت. على سبيل المثال، في Chrome باستخدام "مدير كلمات المرور في Google"، يجب أن يكون المستخدم قد سجّل الدخول مؤخرًا باستخدام كلمة مرور محفوظة للموقع الإلكتروني.

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

رصد الميزات

يمكنك تحديد ما إذا كانت ميزة "الإنشاء المشروط" متاحة على المتصفّح من خلال استدعاء PublicKeyCredential.getClientCapabilities(). تحقَّق مما إذا كان العنصر الذي تم عرضه يحتوي على true للسمة conditionalCreate.

if (window.PublicKeyCredential && PublicKeyCredential.getClientCapabilities) {
  const capabilities = await PublicKeyCredential.getClientCapabilities();
  if (capabilities.conditionalCreate) {
    // Conditional create is available
  }
}

إذا لم تكن الدالة getClientCapabilities متاحة، لن تكون ميزة "الإنشاء المشروط" متاحة أيضًا.

إنشاء مفتاح مرور بشكل مشروط

لإجراء عملية إنشاء مفتاح مرور تلقائيًا، استدعِ navigator.credentials.create() ولكن مع mediation: "conditional" على النحو التالي.

const cred = await navigator.credentials.create({
  publicKey: options,
  // Request conditional creation
  mediation: 'conditional'
});

يجب استخدام ميزة "إنشاء مفاتيح المرور تلقائيًا" مباشرةً بعد تسجيل دخول المستخدم للحصول على أفضل فرصة لاستيفاء معايير مدير كلمات المرور للإنشاء التلقائي.

يمكنك إرسال بيانات اعتماد المفتاح العام الناتجة إلى الخادم لـ التحقّق من مفتاح المرور وتسجيله. على الخادم، تأكَّد من تسجيل دخول المستخدم.

المحاذير

ليس من الصعب تنفيذ ميزة "الإنشاء المشروط" بحد ذاتها، ولكن هناك العديد من المحاذير عند دمج هذه الميزة فعليًا في نظام حالي.

تجاهُل ميزة "تأكيد حضور المستخدم" و"التحقّق من هوية المستخدم" على الخادم

تعرض استجابة التسجيل علامتَي "تأكيد حضور المستخدم" و "التحقّق من هوية المستخدم" على أنّهما false، لذا يجب أن يتجاهل الخادم هاتَين العلامتَين أثناء التحقّق من بيانات الاعتماد.

إيقاف مكالمة WebAuthn الجارية قبل إجراء عملية إنشاء مفتاح مرور تلقائيًا

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

لإجراء ذلك، عليك استخدام AbortController واستدعاء .abort().

// To abort a WebAuthn call, instantiate an AbortController.
const controller = new AbortController();

const cred = await navigator.credentials.get({
  publicKey: options,
  signal: controller.signal,
  // Request conditional get
  mediation: 'conditional'
});

// Abort the call
controller.abort();

تجاهُل الاستثناءات بشكل سليم

عند إجراء عملية إنشاء مفتاح مرور مشروط، هناك بعض الحالات التي يجب فيها تجاهُل الاستثناءات:

  • InvalidStateError: سبق أن تم إنشاء مفتاح مرور في مزوّد مفتاح المرور. تذكَّر تحديد excludeCredentials.
  • NotAllowedError: لا يستوفي إنشاء مفتاح مرور الشرط.
  • AbortError: تم إيقاف مكالمة WebAuthn.

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

الإشارة إلى تعذُّر تسجيل مفتاح مرور

عند إنشاء مفتاح مرور ولكن تعذُّر تسجيله على الخادم، سيواجه المستخدم محاولة تسجيل دخول فاشلة. قد يحدث ذلك عندما تكون قائمة مفاتيح المرور غير متّسقة بين مزوّد مفتاح المرور والخادم.

لتجنُّب مثل هذه الظروف، استخدِم Signal API للحفاظ على اتّساقها.

الترقية من عمليات تسجيل الدخول بدون كلمة مرور غير متاحة

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

ملخّص

يمكن أن يؤدي إنشاء مفاتيح المرور تلقائيًا إلى تسريع اعتماد مفاتيح المرور على موقعك الإلكتروني، ما يساعد مستخدمي موقعك الإلكتروني في الانتقال من كلمات المرور إلى طريقة مصادقة أكثر أمانًا.

لمزيد من المعلومات حول مفاتيح المرور، ابدأ من تسجيل الدخول بدون كلمة مرور باستخدام مفاتيح المرور.