Get your free and exclusive 80-page Banking Passkey Report
webauthn client capabilities

إمكانيات عميل WebAuthn

اكتشف إمكانيات عميل WebAuthn من المستوى 3 عبر getClientCapabilities() لتحسين تكامل مفاتيح المرور، وتعزيز تجربة المستخدم، وتبسيط تدفقات المصادقة.

Vincent Delitz

Vincent

Created: August 8, 2025

Updated: August 8, 2025


See the original blog version in English here.

Our mission is to make the Internet a safer place, and the new login standard passkeys provides a superior solution to achieve that. That's why we want to help you understand passkeys and its characteristics better.

1. مقدمة#

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

يقدم معيار WebAuthn المستوى 3 إمكانيات جديدة للعميل (والتي يمكن استردادها عبر واجهة برمجة تطبيقات المتصفح getClientCapabilities())، تهدف إلى منح المطورين والمنصات مزيدًا من التحكم والمرونة عند تطبيق مفاتيح المرور. تجلب هذه التحديثات تحسينات تبسط عملية دمج مفاتيح المرور عبر الأجهزة والمتصفحات والمنصات، مما يضمن رحلة مستخدم أكثر سلاسة واتساقًا.

في هذا المقال، سنجيب على الأسئلة التالية:

  1. ما هي إمكانيات عميل WebAuthn؟
  2. ما هي إمكانيات عميل WebAuthn الموجودة؟
  3. كيف تحسن إمكانيات عميل WebAuthn تطبيقات مفاتيح المرور؟
  4. لماذا تعتبر إمكانيات عميل WebAuthn مهمة للمطورين ومديري المنتجات؟

بحلول نهاية المقال، ستفهم كيف يمكن لهذه الميزات أن تساعد في إنشاء تدفقات مصادقة سلسة وآمنة تتماشى مع توقعات المستخدمين الحديثة.

2. ما هي إمكانيات عميل WebAuthn؟#

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

على سبيل المثال، إذا أشار متصفح إلى أنه يدعم المصادقة البيومترية (مثل Touch ID)، يمكن للمطورين تصميم تدفقات تسجيل الدخول الخاصة بهم لتقديم خيار تسجيل الدخول ببصمة الإصبع للمستخدمين. وعلى العكس، إذا كان المتصفح لا يدعم ميزات معينة، يمكن للمطورين توفير خيارات بديلة، مثل كلمة مرور أو رمز OTP عبر الرسائل القصيرة.

3. إمكانيات عميل WebAuthn المقدمة في معيار WebAuthn المستوى 3#

يقدم معيار WebAuthn المستوى 3 العديد من إمكانيات العميل الجديدة التي تجعل تطبيقات مفاتيح المرور أكثر تنوعًا وسهولة في الاستخدام. تم تقديم أول دعم لاستدعاء واجهة برمجة التطبيقات getClientCapabilities() في Safari 17.4.

للكشف عن الدعم في المتصفح، يمكن أن يكون المقتطف التالي مفيدًا:

// Check if PublicKeyCredential is supported in the current browser if (typeof PublicKeyCredential === "undefined") { console.log("PublicKeyCredential is not supported in this browser."); } // Check if getClientCapabilities method exists on PublicKeyCredential if (typeof PublicKeyCredential.getClientCapabilities === "function") { try { let capabilities = await PublicKeyCredential.getClientCapabilities(); console.log(capabilities); } catch (error) { console.error("Error getting client capabilities:", error); } } else { console.log("getClientCapabilities is not supported in this browser"); }

4. getClientCapabilities()#

تسمح getClientCapabilities() لمواقع الويب والتطبيقات بالاستعلام عن العميل (مثل المتصفح أو الجهاز) لتحديد ميزات WebAuthn التي يدعمها. من خلال فهم إمكانيات العميل، يمكن للمطورين تحسين تدفقات المصادقة للاستفادة من الميزات المتاحة، مثل المصادقة البيومترية، وتوفير طرق بديلة إذا كانت بعض الإمكانيات غير موجودة.

Substack Icon

Subscribe to our Passkeys Substack for the latest news.

Subscribe

إليك نظرة فاحصة على إمكانيات عميل WebAuthn وكيفية تأثيرها على تكامل مفاتيح المرور:

4.1 conditionalCreate#

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

4.2 conditionalGet#

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

4.3 hybridTransport#

تضمن hybridTransport إمكانية استخدام مفاتيح المرور عبر أجهزة مختلفة، مما يتيح المصادقة السلسة عبر الأجهزة (عبر رموز QR والبلوتوث). على سبيل المثال، يمكن للمستخدم استخدام مفتاح مرور مخزن على هاتفه الذكي لتسجيل الدخول إلى خدمة على جهاز الكمبيوتر المكتبي الخاص به. تتيح هذه الإمكانية للمستخدمين المصادقة بأمان دون الحاجة إلى نقل مفاتيح المرور يدويًا أو الاعتماد على طرق تسجيل الدخول التقليدية لكل جهاز، مما يعزز تجربة مصادقة موحدة.

4.4 passkeyPlatformAuthenticator#

أدوات المصادقة المدمجة في المنصة، مثل Windows Hello أو Face ID أو Touch ID، تكون مدمجة مباشرة في الأجهزة وتوفر تجربة مفتاح مرور أسرع وأكثر سلاسة وأمانًا من خلال تمكين المستخدمين من المصادقة باستخدام القياسات الحيوية أو طرق أخرى خاصة بالجهاز (مثل نمط PIN).

Slack Icon

Become part of our Passkeys Community for updates & support.

Join

4.5 userVerifyingPlatformAuthenticator#

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

4.6 relatedOrigins#

تسمح إمكانية relatedOrigins بالمصادقة السلسة عبر نطاقات مختلفة مملوكة لنفس المؤسسة (على سبيل المثال amazon.com و amazon.de). على سبيل المثال، إذا كانت شركة تدير نطاقات متعددة أو لديها نطاقات فرعية مختلفة، يمكن للمستخدمين تسجيل الدخول مرة واحدة والوصول إلى جميع الخصائص دون إعادة المصادقة في كل مرة. تبسط هذه الإمكانية تجربة المستخدم، وتقلل من الاحتكاك، وهي ذات قيمة خاصة للشركات في البيئات الدولية أو التي لديها منصات متعددة الخدمات.

4.7 signalAllAcceptedCredentials#

توفر طريقة signalAllAcceptedCredentials(options) القائمة الكاملة لـ معرّفات بيانات اعتماد WebAuthn لمستخدم معين. يجب على الأطراف المعتمدة في WebAuthn استخدام هذه الطريقة بدلاً من signalUnknownCredential() عندما يكون المستخدم مصادقًا عليه، حيث لا يوجد خطر تسرب الخصوصية. توفر هذه الطريقة نظرة شاملة على بيانات اعتماد المفتاح العام للمستخدم، بما في ذلك أي تغييرات حديثة قد لا تكون قد تم تحديثها على أدوات المصادقة المتصلة حاليًا.

دعنا نلقي نظرة على مثال. مستخدم (userId: A) لديه مفتاحا مرور بمعرّفات بيانات اعتماد يتم ترميزها بـ Base64URL إلى X و Y. ثم يقوم المستخدم بحذف مفتاح المرور X في إعدادات حساب خدمة الويب (example.com) (وبالتالي يتم حذف المفتاح العام). الآن، قم بتشغيل المقتطف التالي:

PublicKeyCredential.signalAllAcceptedCredentials({ rpId: "example.com", userId: "A", // WebAuthn User Handle, Base64URL. allAcceptedCredentialIds: ["Y"], });

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

سيتم إزالة أو إخفاء مفاتيح المرور غير الموجودة في allAcceptedCredentialIds، وقد يكون ذلك بشكل لا رجعة فيه. لذا، من المهم أن تنتبه الأطراف المعتمدة إلى عدم إزالة معرّفات بيانات اعتماد WebAuthn الصالحة من القائمة أبدًا. إذا تم إزالة معرّف بيانات اعتماد صالح عن طريق الخطأ، فيجب على الطرف المعتمد إدراجه فورًا في استدعاء آخر لـ signalAllAcceptedCredentials(options) في أقرب وقت ممكن لـ "إظهار" مفتاح المرور. إذا لم يتم إخفاء مفتاح المرور بل تم إزالته، فلا يوجد الكثير لإصلاح الأمور.

Debugger Icon

Want to experiment with passkey flows? Try our Passkeys Debugger.

Try for Free

4.8 signalCurrentUserDetails#

تشير طريقة signalCurrentUserDetails(options) إلى اسم المستخدم الحالي واسم العرض الخاص بـ WebAuthn. عند استدعاء signalCurrentUserDetails(options)، يتبع العميل مجموعة من الخطوات المحددة لتنفيذ هذا الإجراء.

لنرى مثالاً. يقوم مستخدم لديه معرّف مستخدم WebAuthn A بتحديث اسمه في إعدادات الحساب لموقع ويب (example.com). بعد ذلك، يمكن لـ الطرف المعتمد تشغيل الكود التالي:

PublicKeyCredential.signalCurrentUserDetails({ rpId: "example.com", userId: "A", // user ID, Base64URL. name: "New user name", displayName: "New display name", });

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

4.9 signalUnknownCredential#

تشير طريقة signalUnknownCredential(options) إلى أن معرّف بيانات اعتماد WebAuthn غير معترف به من قبل الطرف المعتمد في WebAuthn، على سبيل المثال، إذا تم حذف مفتاح المرور من قبل المستخدم. على عكس signalAllAcceptedCredentials(options)، لا تتطلب هذه الطريقة توفير القائمة الكاملة لمعرّفات بيانات الاعتماد المقبولة ومعرّف المستخدم الخاص بـ WebAuthn، وبالتالي تمنع تسرب الخصوصية المحتمل للمتصلين غير المصادق عليهم.

لنرى مثالاً. يقوم مستخدم بحذف مفتاح مرور بـ معرّف بيانات اعتماد X على إعدادات حساب موقع ويب (example.com) (وبالتالي يتم حذف المفتاح العام). ومع ذلك، لا يزال المفتاح الخاص متاحًا على جهاز المستخدم. هذا يعني أنه في طلبات تسجيل الدخول المستقبلية باستخدام الواجهة الشرطية / الملء التلقائي لمفتاح المرور (مع قائمة allowCredentials فارغة)، لا يزال من الممكن تحديد مفتاح المرور. ستفشل محاولة تسجيل الدخول على الرغم من ذلك، حيث تم حذف المفتاح العام بالفعل، لذلك يجب على الطرف المعتمد تشغيل:

PublicKeyCredential.signalUnknownCredential({ rpId: "example.com", credentialId: "X", // credential ID the user just tried, Base64URL });

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

5. توفر إمكانيات عميل WebAuthn#

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

المتصفحالإصدار الذي يدعم إمكانيات العميلملاحظات
Chrome133حالة منصة Chrome و متتبع أخطاء Chromium
Safari17.4+أول متصفح يشحن getClientCapabilities(). اعتبارًا من أكتوبر 2024، يدعم Safari ميزات مثل conditionalCreate و conditionalMediation و hybridTransport و passkeyPlatformAuthenticator و userVerifyingPlatformAuthenticator.
Edge133مبني على Chromium 133. متتبع أخطاء Chromium
Firefox135بدأت Mozilla في تطبيق إمكانيات عميل WebAuthn المستوى 3 في Firefox 135 وما فوق.

من المرجح أن تتسارع وتيرة التبني مع نضوج المستوى 3 وشحن المزيد من المتصفحات لهذه الميزات. إذا كنت تريد أن ترى عدد المستخدمين الذين يمكنهم الاستفادة من getClientCapabilities() الآن، يمكنك التحقق من البيانات الواقعية باستخدام Passkeys Analyzer المجاني. راقب ملاحظات إصدار المتصفح والوثائق ذات الصلة للتخطيط لتوافق أوسع مع تطوره.

Analyzer Icon

Are your users passkey-ready?

Test Passkey-Readiness

6. توصيات للمطورين#

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

ومع ذلك، كن على علم بأن ليس كل المتصفحات تدعم بعد استدعاء واجهة برمجة التطبيقات getClientCapabilities() (اعتبارًا من نوفمبر 2024). يتوفر polyfill هنا، والذي يمكن استخدامه حتى تلحق جميع المتصفحات بالركب.

6.1 استدعاء getClientCapabilities() مبكرًا#

استخدم getClientCapabilities() في وقت مبكر من الكود الخاص بك لاكتشاف الميزات المدعومة من قبل العميل في بداية تحميل الصفحة / تدفق المصادقة. سيسمح لك ذلك بتخصيص التجربة ديناميكيًا، وتوفير ميزات مفاتيح المرور التي تعمل على الجهاز / المتصفح، على سبيل المثال، الدفع نحو المصادقة عبر المنصة عند دعمها أو تقديم طرق بديلة (مثل رموز OTP عبر الرسائل القصيرة أو مفاتيح الأمان المادية) إذا لم تكن مدعومة.

6.2 في التطبيقات القائمة على كلمات المرور، عزز تبني مفاتيح المرور باستخدام conditionalCreate#

إذا أضفت مفاتيح المرور إلى موقع ويب / تطبيق يستخدم حاليًا كلمات المرور، يمكن أن تكون ميزة conditionalCreate معززًا حقيقيًا لـ تبني مفاتيح المرور لديك. في الخلفية، أثناء الملء التلقائي لكلمة المرور باستخدام مدير بيانات اعتماد مناسب (فقط Apple Passwords اعتبارًا من أكتوبر 2024)، يتم إنشاء مفتاح مرور تلقائيًا وسيتم تفضيله في عمليات الملء التلقائي المستقبلية.

6.3 استخدم ConditionalGet قدر الإمكان#

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

6.4 في الأنظمة التي تعتمد على CDA-First أو Mobile-First، استخدم hybridTransport#

استخدم hybridTransport لتمكين المصادقة عبر الأجهزة (عبر رمز الاستجابة السريعة والبلوتوث)، مما يسمح للمستخدمين بتسجيل الدخول بسلاسة من هواتفهم الذكية، حتى لو كانوا يصلون إلى خدمتك على جهاز كمبيوتر مكتبي.

7. الخلاصة#

تمثل إمكانيات عميل WebAuthn خطوة مهمة إلى الأمام في معالجة الفجوات الحالية في مفاتيح المرور. في هذا المقال، تناولنا أسئلة رئيسية حول إمكانيات عميل WebAuthn:

  1. ما هي إمكانيات عميل WebAuthn؟ أوضحنا كيف تسمح هذه الميزات للمتصفحات والمنصات بالإشارة إلى دعمها لوظائف محددة، مما يمنح المطورين مزيدًا من التحكم في تدفقات المصادقة.
  2. ما هي إمكانيات عميل WebAuthn الموجودة؟ قدمنا نظرة عامة على الإمكانيات الجديدة المقدمة في معيار المستوى 3، بما في ذلك getClientCapabilities و conditionalCreate و hybridTransport والمزيد.
  3. كيف تحسن إمكانيات عميل WebAuthn تطبيقات مفاتيح المرور؟ ناقشنا كيف تبسط هذه الإمكانيات التكامل، وتعزز الاستخدام عبر الأجهزة، وتحسن الأمان.
  4. لماذا تعتبر إمكانيات عميل WebAuthn مهمة للمطورين؟ تساعد هذه الميزات في إنشاء تجارب مصادقة سلسة وآمنة تتماشى مع توقعات المستخدمين الحديثة، مما يجعل التنفيذ أسهل وأكثر فعالية.

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

Add passkeys to your app in <1 hour with our UI components, SDKs & guides.

Start Free Trial

Share this article


LinkedInTwitterFacebook

Enjoyed this read?

🤝 Join our Passkeys Community

Share passkeys implementation tips and get support to free the world from passwords.

🚀 Subscribe to Substack

Get the latest news, strategies, and insights about passkeys sent straight to your inbox.

Related Articles