تعرّف على دور واجهة برمجة تطبيقات الويب للبلوتوث (Web Bluetooth API) في استخدام مفاتيح المرور (Passkeys)! اكتشف كيف يعزز الكشف عن توفر البلوتوث من تجربة المصادقة عبر الأجهزة (CDA) باستخدام WebAuthn.
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.
تُعد مفاتيح المرور (Passkeys) معيار تسجيل الدخول الجديد على الويب. ومن أهم ميزاتها الأساسية هي المصادقة عبر الأجهزة (CDA) باستخدام البلوتوث ورموز الاستجابة السريعة (QR). وفي هذا السياق، تبرز أهمية واجهة برمجة تطبيقات ويب أخرى، وهي Web Bluetooth API.
من خلال تمكين تطبيقات الويب من التفاعل مباشرة مع أجهزة البلوتوث، تلعب واجهة برمجة تطبيقات الويب للبلوتوث دورًا حاسمًا في ضمان عمليات مصادقة آمنة وفعالة (خاصةً للمصادقة عبر الأجهزة CDA).
في هذا المقال، سنستعرض آلية عمل واجهة برمجة تطبيقات الويب للبلوتوث ونبحث في أهمية الكشف عن البلوتوث لـمصادقة مفاتيح المرور. ونهدف إلى الإجابة على الأسئلة التالية:
Recent Articles
واجهة برمجة تطبيقات الويب للبلوتوث هي واجهة جافاسكريبت (JavaScript) تسمح لتطبيقات الويب بالوصول إلى أجهزة البلوتوث والتواصل معها. وهي جزء من معيار HTML5 ومدعومة من متصفحات مثل Chrome وEdge وOpera. تمكّن هذه الواجهة تطبيقات الويب من:
هناك ثلاث وظائف رئيسية لواجهة برمجة تطبيقات الويب للبلوتوث.
تعيد الدالة getAvailability()
وعدًا (promise) يُحل إلى قيمة منطقية (Boolean) تشير إلى ما إذا كان وكيل المستخدم يدعم البلوتوث (أي أن الجهاز يحتوي على وحدة بلوتوث). تسمح بعض وكلاء المستخدم للمستخدم بتكوين خيار يحدد القيمة التي تعيدها هذه الدالة.
navigator.bluetooth.getAvailability().then((available) => { if (available) { console.log("This device supports Bluetooth!"); } else { console.log("Doh! Bluetooth is not supported"); } });
تعيد الدالة getDevices()
وعدًا يُحل إلى مصفوفة من BluetoothDevices
التي يُسمح للمصدر بالوصول إليها (بما في ذلك الأجهزة التي تكون خارج النطاق أو مطفأة). يتم الحصول على الإذن عبر استدعاءات سابقة لـ Bluetooth.requestDevice()
.
navigator.bluetooth.getDevices().then((devices) => { devices.forEach((device) => { console.log("Device:", device.name); }); });
تعيد الدالة requestDevice()
وعدًا لكائن BluetoothDevice
مع خيارات محددة. إذا لم تكن هناك واجهة مستخدم للاختيار، فإن هذه الدالة تعيد أول جهاز يطابق المعايير.
navigator.bluetooth .requestDevice({ filters: [ { services: ["battery_service"], }, ], }) .then((device) => { console.log("Device:", device.name); }) .catch((error) => { console.log("Error:", error); });
يمكن العثور على التفاصيل ومقتطفات الشفرة هنا. تجدون أيضًا معيار W3C لـ Web Bluetooth هنا.
navigator.bluetooth.requestDevice
من خلال إجراء من المستخدم، مثل لمسة أو نقرة بالماوس، لأسباب أمنية.للتحقق من دعم واجهة برمجة تطبيقات الويب للبلوتوث، يمكنك استخدام الشفرة التالية:
if ("bluetooth" in navigator) { // Web Bluetooth API is supported console.log("Web Bluetooth is supported!"); } else { // Web Bluetooth API is not supported console.log("Web Bluetooth is not supported!"); }
تم شرح كيفية استدعاء الوظائف المحددة أعلاه.
تقدم واجهة برمجة تطبيقات الويب للبلوتوث عدة مزايا للمطورين والمستخدمين:
على الرغم من فوائدها، فإن واجهة برمجة تطبيقات الويب للبلوتوث لها قيود:
getAvailability()
للقيمة false
حتى لو كان محول البلوتوث موجودًا. يتم التحكم في ذلك عبر Permissions-Policy:Bluetooth
. وبالمثل، حتى لو أعادت getAvailability()
القيمة true
، فقد لا يكون محول البلوتوث قيد التشغيل، أو قد يرفض المستخدمون الإذن باستخدام الواجهة عند مطالبتهم بذلك.لا يزال تبني واجهة برمجة تطبيقات الويب للبلوتوث في تزايد. اعتبارًا من يونيو 2024، ووفقًا لـ Can I Use، فإن 76.53% من المستخدمين العالميين لديهم أجهزة تدعم واجهة برمجة تطبيقات الويب للبلوتوث.
ومع ذلك، يظل عدم وجود دعم في Safari وFirefox عقبة كبيرة، مما يؤثر على تجربة المستخدم في تلك المتصفحات. أيضًا، يجب تشغيل بعض الميزات (مثل Bluetooth.getDevices()
) بشكل صريح من قبل المستخدم، مما قد يمثل تحديًا لاستخدام الواجهة في الخلفية.
اعثر على أحدث البيانات على: https://developer.mozilla.org/en-US/docs/Web/API/Web_Bluetooth_API#browser_compatibility
هناك سبب رئيسي واحد يجعل الأطراف المعتمدة (relying parties) بحاجة إلى معرفة مدى توفر البلوتوث، عندما يرغبون في تقديم مفاتيح المرور في مواقعهم وتطبيقاتهم.
إحدى الميزات الجديدة والمبتكرة لمفاتيح المرور هي المصادقة عبر الأجهزة (CDA) – المعروفة أيضًا باسم المصادقة الهجينة. تتيح هذه الميزة للمستخدمين المصادقة على جهاز واحد (عادةً ما يكون جهاز كمبيوتر مكتبي أو محمول) باستخدام أجهزتهم المحمولة عبر رموز QR والبلوتوث. تعزز طريقة المصادقة الهجينة هذه الأمان والراحة، مما يوفر تجربة مستخدم سلسة. معظم المستخدمين غير التقنيين معتادون اليوم على مسح رموز QR، سواء كان ذلك أثناء جائحة COVID للتسجيل أو عبر تطبيقات المراسلة التي تعتمد على الهاتف المحمول أولاً ثم أضافت دعمًا لسطح المكتب (مثل WhatsApp أو Telegram).
يُعد اتخاذ قرار بشأن استراتيجية CDA أمرًا بالغ الأهمية في بداية أي مشروع لمفاتيح المرور. كلما زاد اعتمادك على CDA، كان من الضروري أن يكون الدعم والموثوقية أفضل. وبالتالي، فإن الكشف عن توفر البلوتوث على الجهاز أمر ضروري.
ومع ذلك، لا تحتوي جميع الأجهزة على إمكانيات البلوتوث أو قد يكون البلوتوث مطفأً. بالنسبة للأطراف المعتمدة التي تقدم مفاتيح المرور، من الضروري الكشف عن توفر البلوتوث لتحديد ما إذا كان يمكن استخدام CDA أو إذا كانت هناك حاجة إلى طريقة مصادقة بديلة. توفر واجهة برمجة تطبيقات الويب للبلوتوث حلاً من خلال تمكين تطبيقات الويب من التحقق من توفر البلوتوث على أجهزة المستخدم.
يرجى الأخذ في الاعتبار أن CDA ليست مستقرة دائمًا، حيث تفشل أحيانًا في الاتصال دون أسباب واضحة. علاوة على ذلك، نظرًا لحداثة الواجهة، يتم أحيانًا إرجاع نتائج خاطئة من قبل الواجهة.
يُعد عدم توفر واجهة برمجة تطبيقات الويب للبلوتوث في Firefox وSafari مشكلة، خاصة بالنسبة لـ Firefox.
يمثل Safari مشكلة أقل لأن أجهزة macOS، حيث قد يتم إجراء CDA، تحتوي على بلوتوث مدمج منذ الطرازات الأولى. ومع ذلك، إذا كان البلوتوث على macOS لا يعمل، فقد يواجه المستخدمون مشكلات في المصادقة عبر الأجهزة ويحتاجون إلى استكشاف إعداداتهم أو العودة إلى طريقة بديلة. تحتوي أجهزة iPhone التي تعمل بنظام Safari على بلوتوث مدمج منذ إنشائها.
ومع ذلك، يمثل Firefox مشكلة كبيرة لأنه شائع على أجهزة Windows. إذا كان المستخدم يستخدم Firefox ويريد استخدام CDA، فإن الطرف المعتمد لا يمكنه تحديد ما إذا كان البلوتوث متاحًا بشكل موثوق، حيث لم يتم تنفيذ واجهة برمجة تطبيقات الويب للبلوتوث. قد يؤدي هذا إلى تجربة مستخدم سيئة، حيث قد يعلق المستخدمون في نقاط معينة دون معرفة ما يجب عليهم فعله.
كما رأينا في مدونات سابقة، تتخلف أجهزة Windows أيضًا من حيث تبني مفاتيح المرور (انظر أيضًا State of Passkeys). دعونا نلقي نظرة على مدى شيوع توفر البلوتوث.
لا يفرض Windows 10 متطلبًا صارمًا للبلوتوث، ولكن معظم أجهزة الكمبيوتر المحمولة والمكتبية الحديثة تأتي مزودة بإمكانيات البلوتوث. ومع ذلك، قد يقوم المستخدم بإيقاف تشغيله، أو قد لا يكون متاحًا في بعض التكوينات، خاصة على أجهزة الكمبيوتر المكتبية المخصصة.
لا يفرض Windows 11، على غرار Windows 10، وجود بلوتوث. ومع ذلك، فإن الاتجاه نحو أجهزة أكثر تكاملاً وحداثة يعني أن معظم الأجهزة المتوافقة مع Windows 11 ستحتوي على الأرجح على إمكانيات البلوتوث. ومع ذلك، يمكن للمستخدمين تعطيله، مما يؤثر على تطبيقات CDA.
في الجدول التالي، يمكنك معرفة ما إذا كان بإمكانك تحديد ما إذا كان جهاز سطح المكتب جاهزًا للبلوتوث وبالتالي يمكن استخدامه كعميل CDA:
نظام التشغيل | دعم عتاد البلوتوث | الكشف عن البلوتوث في المتصفح | |||
---|---|---|---|---|---|
Chrome | Edge | Firefox | Safari | ||
Windows 10 | منخفض | ✅ | ✅ | ❌ | ❌ |
Windows 11 | متوسط | ✅ | ✅ | ❌ | ❌ |
macOS | مرتفع | ✅ | ❌ | ❌ | ❌ |
ضع في اعتبارك أنه حتى لو كان جهازك جاهزًا للبلوتوث، فقد يتم إيقاف تشغيل وظيفة البلوتوث من قبل المستخدم. عندما يتم إيقاف تشغيل البلوتوث، لا يزال بإمكان المستخدم استخدام CDA لأنه لا يزال بإمكانه اختيار تفعيله، وهو ما يعمل مع Windows و Mac: طلب macOS لتشغيل البلوتوث
طلب Windows 11 لتشغيل البلوتوث
تعتبر معلومات توفر البلوتوث مثيرة للاهتمام بشكل خاص على Windows 10 و Windows 11، حيث يكون دعم البلوتوث أقل وهناك احتمال كبير جدًا بأن تتم المصادقة عبر الأجهزة (في تسجيل الدخول القائم على مفتاح المرور). جميع أجهزة macOS الحديثة تدعم البلوتوث. قد تتمكن أجهزة macOS هذه أيضًا من الوصول إلى مفاتيح المرور المخزنة في iCloud Keychain مباشرةً، لذا فهي ليست مصدر قلق.
على Windows 10 و Windows 11: استخدم getAvailability()
لمعرفة ما إذا كان البلوتوث يمكن أن يعمل. في حال كان لدى المستخدم مفاتيح مرور غير خاصة بـ Windows فقط، يمكنك الرجوع فورًا إلى خيارات مصادقة أخرى.
في حالة توفر مفاتيح مرور هجينة فقط، فإن تشغيل مصادقة مفتاح المرور لن يؤدي إلى مصادقة ناجحة، بل إلى طريق مسدود للمستخدم. بالنسبة لجميع المتصفحات الأخرى على Windows 10 و Windows 11، للأسف، لا توجد طريقة أخرى لمعرفة ما إذا كان هناك دعم لـ CDA.
تمثل واجهة برمجة تطبيقات الويب للبلوتوث أداة قوية لتعزيز مصادقة مفاتيح المرور من خلال إمكانيات البلوتوث. من خلال فهم هذه الواجهة والاستفادة منها، يمكن للمطورين إنشاء طرق مصادقة أكثر أمانًا وسهولة في الاستخدام. ومع ذلك، يجب عليهم أيضًا التعامل مع قيودها وضمان وجود آليات بديلة قوية للحفاظ على تجربة مستخدم سلسة عبر مختلف المتصفحات والأجهزة.
مع هذا المقال، قدمنا إجابة على الأسئلة الأساسية الثلاثة:
getAvailability()
و getDevices()
و requestDevice()
للتحقق من دعم البلوتوث، وسرد الأجهزة التي يمكن الوصول إليها، وطلب الاقتران بالأجهزة.لمزيد من المعلومات حول واجهة برمجة تطبيقات الويب للبلوتوث ومجموعة من الأمثلة، يرجى النقر هنا.
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
Table of Contents