رصد ميزات WebAuthn بشكلٍ أبسط باستخدام getClientCapabilities()

تاريخ النشر: 15 كانون الثاني (يناير) 2025

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

تسمح طريقة PublicKeyCredential.getClientCapabilities() للأطراف المعتمِدة بتحديد ميزات WebAuthn المتوافقة مع المتصفّح. تُعرِض الوسيطة وعدًا يؤدي إلى قائمة بالإمكانات المتوافقة، ما يسمح للمطوّرين بتخصيص تجارب المصادقة ومسارات العمل استنادًا إلى الإمكانات المحدّدة للعميل.

التوافق

Browser Support

  • Chrome: not supported.
  • Edge: not supported.
  • Firefox: not supported.
  • Safari: 17.4.

getClientCapabilities()

getClientCapabilities() هي واجهة برمجة تطبيقات WebAuthn تسمح للأطراف المعتمَدة بتحديد الإمكانات المتاحة. لاستخدام واجهة برمجة التطبيقات، عليك الاتصال بـ PublicKeyCredential.getClientCapabilities(). يتمّ حلّ الوعد المعروض على النحو التالي: عنصر يحتوي على إمكانات، يشير كلّ منها إلى توفّرها باستخدام true أو false. إذا كانت الإمكانية هي undefined، يعني ذلك أنّ مدى توفّرها غير معروف.

if (window.PublicKeyCredential &&
  if (PublicKeyCredential.getClientCapabilities) {
    const capabilities = await PublicKeyCredential.getClientCapabilities();
    if (capabilities.conditionalGet === true &&
        capabilities.passkeyPlatformAuthenticator === true) {
      // The browser supports passkeys and the conditional mediation.
    }
  }
}

conditionalCreate

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

conditionalGet

يمكن للمتصفح المصادقة من خلال عرض مفاتيح المرور كجزء من مربّع حوار الملء التلقائي، بدلاً من واجهة مستخدم نموذجية بارزة. القيمة الحالية المكافئ هي PublicKeyCredential.isConditionalMediationAvailable().

hybridTransport

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

passkeyPlatformAuthenticator

يمكن للمتصفح إنشاء بيانات اعتماد والمصادقة بها من خلال مصادقة منصة التحقّق من المستخدمين أو جهاز آخر يتيح ذلك من خلال البروتوكول المختلط. هذا الرمز مكافئ للرمز hybridTransport || userVerifyingPlatformAuthenticator.

relatedOrigins

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

signalAllAcceptedCredentials

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

signalCurrentUserDetails

يمكن للمتصفّح إرسال معلومات المستخدم، مثل اسم المستخدم والاسم المعروض على الخادم إلى مقدّم مفتاح المرور، لكي يتمكّن مقدّم مفتاح المرور من الحفاظ على اتساق معلومات مفتاح المرور مع الخادم.

signalUnknownCredential

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

userVerifyingPlatformAuthenticator

يمكن للمتصفح إنشاء بيانات اعتماد ومصادقتها باستخدام مصادقة منصة. ولا يعني ذلك أنّ المتصفّح يتوافق مع البروتوكول المختلط. القيمة الحالية المكافئ هي PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable().

الإضافات

يمكن لموفّري خدمات الدفع أيضًا تحديد الإضافات المتاحة باستخدام getClientCapabilities().

if (capabilities['extension:appid'] === true) {
  // appId extension is supported
}

يُضاف الرمز extension: قبل المعرّف متبوعًا باسم الإضافة. اطّلِع على معرّفات إضافات WebAuthn المحدّدة في جمعية عناوين الإنترنت (IANA) لمعرفة أسمائها.

مزيد من المعلومات

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