Get your free and exclusive 80-page Banking Passkey Report
web bluetooth cover

واجهة برمجة تطبيقات الويب للبلوتوث (Web Bluetooth API) ومفاتيح المرور (Passkeys)

تعرّف على دور واجهة برمجة تطبيقات الويب للبلوتوث (Web Bluetooth API) في استخدام مفاتيح المرور (Passkeys)! اكتشف كيف يعزز الكشف عن توفر البلوتوث من تجربة المصادقة عبر الأجهزة (CDA) باستخدام WebAuthn.

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. مقدمة: واجهة برمجة تطبيقات الويب للبلوتوث (Web Bluetooth API) ومفاتيح المرور (Passkeys)#

تُعد مفاتيح المرور (Passkeys) معيار تسجيل الدخول الجديد على الويب. ومن أهم ميزاتها الأساسية هي المصادقة عبر الأجهزة (CDA) باستخدام البلوتوث ورموز الاستجابة السريعة (QR). وفي هذا السياق، تبرز أهمية واجهة برمجة تطبيقات ويب أخرى، وهي Web Bluetooth API.

من خلال تمكين تطبيقات الويب من التفاعل مباشرة مع أجهزة البلوتوث، تلعب واجهة برمجة تطبيقات الويب للبلوتوث دورًا حاسمًا في ضمان عمليات مصادقة آمنة وفعالة (خاصةً للمصادقة عبر الأجهزة CDA).

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

  1. ما هي واجهة برمجة تطبيقات الويب للبلوتوث (Web Bluetooth API)؟
  2. كيف نستخدم واجهة برمجة تطبيقات الويب للبلوتوث؟
  3. لماذا يُعد الكشف عن البلوتوث مهمًا لمفاتيح المرور؟

2. ما هي واجهة برمجة تطبيقات الويب للبلوتوث (Web Bluetooth API)؟#

واجهة برمجة تطبيقات الويب للبلوتوث هي واجهة جافاسكريبت (JavaScript) تسمح لتطبيقات الويب بالوصول إلى أجهزة البلوتوث والتواصل معها. وهي جزء من معيار HTML5 ومدعومة من متصفحات مثل Chrome وEdge وOpera. تمكّن هذه الواجهة تطبيقات الويب من:

  • البحث عن أجهزة البلوتوث منخفض الطاقة (Energy) (BLE) القريبة.
  • طلب إذن للاقتران.
  • تبادل البيانات باستخدام بروتوكول السمات العام (GATT).

هناك ثلاث وظائف رئيسية لواجهة برمجة تطبيقات الويب للبلوتوث.

2.1 getAvailability()#

تعيد الدالة getAvailability() وعدًا (promise) يُحل إلى قيمة منطقية (Boolean) تشير إلى ما إذا كان وكيل المستخدم يدعم البلوتوث (أي أن الجهاز يحتوي على وحدة بلوتوث). تسمح بعض وكلاء المستخدم للمستخدم بتكوين خيار يحدد القيمة التي تعيدها هذه الدالة.

navigator.bluetooth.getAvailability().then((available) => { if (available) { console.log("This device supports Bluetooth!"); } else { console.log("Doh! Bluetooth is not supported"); } });
Substack Icon

Subscribe to our Passkeys Substack for the latest news.

Subscribe

2.2 getDevices()#

تعيد الدالة getDevices() وعدًا يُحل إلى مصفوفة من BluetoothDevices التي يُسمح للمصدر بالوصول إليها (بما في ذلك الأجهزة التي تكون خارج النطاق أو مطفأة). يتم الحصول على الإذن عبر استدعاءات سابقة لـ Bluetooth.requestDevice().

navigator.bluetooth.getDevices().then((devices) => { devices.forEach((device) => { console.log("Device:", device.name); }); });

2.3 requestDevice()#

تعيد الدالة 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 هنا.

Slack Icon

Become part of our Passkeys Community for updates & support.

Join

3. خصائص واجهة برمجة تطبيقات الويب للبلوتوث#

  • HTTPS فقط: تتوفر واجهة برمجة تطبيقات الويب للبلوتوث فقط في السياقات الآمنة (HTTPS)، مما يضمن نقل البيانات بشكل آمن.
  • تتطلب إجراءً من المستخدم: يجب أن يتم تشغيل اكتشاف الأجهزة عبر navigator.bluetooth.requestDevice من خلال إجراء من المستخدم، مثل لمسة أو نقرة بالماوس، لأسباب أمنية.

4. كيف نستخدم واجهة برمجة تطبيقات الويب للبلوتوث#

للتحقق من دعم واجهة برمجة تطبيقات الويب للبلوتوث، يمكنك استخدام الشفرة التالية:

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!"); }

تم شرح كيفية استدعاء الوظائف المحددة أعلاه.

5. فوائد واجهة برمجة تطبيقات الويب للبلوتوث#

تقدم واجهة برمجة تطبيقات الويب للبلوتوث عدة مزايا للمطورين والمستخدمين:

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

6. مشكلات واجهة برمجة تطبيقات الويب للبلوتوث#

على الرغم من فوائدها، فإن واجهة برمجة تطبيقات الويب للبلوتوث لها قيود:

  • عدم دعمها من قبل Safari وFirefox: لا تدعم جميع المتصفحات هذه الواجهة. والجدير بالذكر أن Safari وFirefox لا يدعمانها، مما قد يؤثر على شريحة كبيرة من المستخدمين.
  • الاعتماد على قدرات الجهاز: تعمل الواجهة فقط مع أجهزة البلوتوث منخفض الطاقة (Energy) (BLE) المتوافقة. بالإضافة إلى ذلك، قد لا تكون الأجهزة قابلة للاكتشاف بسبب عوامل مثل انخفاض البطارية أو كونها خارج النطاق.
  • مواصفات متطورة: نظرًا لكونها مواصفات مسودة، فإن واجهة برمجة تطبيقات الويب للبلوتوث تخضع للتغييرات. يحتاج المطورون إلى البقاء على اطلاع بآخر التطورات وتوافق المتصفحات.
  • نتائج إيجابية خاطئة: يمكن للواجهة أحيانًا أن تشير إلى دعم البلوتوث بينما هو غير متوفر فعليًا.
  • التوفر الذي يتحكم فيه المستخدم: يمكن للمستخدمين والمتصفحات تعطيل أذونات البلوتوث، مما يتسبب في إعادة getAvailability() للقيمة false حتى لو كان محول البلوتوث موجودًا. يتم التحكم في ذلك عبر Permissions-Policy:Bluetooth. وبالمثل، حتى لو أعادت getAvailability() القيمة true، فقد لا يكون محول البلوتوث قيد التشغيل، أو قد يرفض المستخدمون الإذن باستخدام الواجهة عند مطالبتهم بذلك.

7. تبني واجهة برمجة تطبيقات الويب للبلوتوث#

لا يزال تبني واجهة برمجة تطبيقات الويب للبلوتوث في تزايد. اعتبارًا من يونيو 2024، ووفقًا لـ Can I Use، فإن 76.53% من المستخدمين العالميين لديهم أجهزة تدعم واجهة برمجة تطبيقات الويب للبلوتوث.

ومع ذلك، يظل عدم وجود دعم في Safari وFirefox عقبة كبيرة، مما يؤثر على تجربة المستخدم في تلك المتصفحات. أيضًا، يجب تشغيل بعض الميزات (مثل Bluetooth.getDevices()) بشكل صريح من قبل المستخدم، مما قد يمثل تحديًا لاستخدام الواجهة في الخلفية.

اعثر على أحدث البيانات على: https://developer.mozilla.org/en-US/docs/Web/API/Web_Bluetooth_API#browser_compatibility

8. لماذا يُعد الكشف عن البلوتوث مهمًا لمفاتيح المرور؟#

هناك سبب رئيسي واحد يجعل الأطراف المعتمدة (relying parties) بحاجة إلى معرفة مدى توفر البلوتوث، عندما يرغبون في تقديم مفاتيح المرور في مواقعهم وتطبيقاتهم.

8.1 الميزة الأساسية لمفاتيح المرور: المصادقة عبر الأجهزة (CDA) باستخدام رموز QR والبلوتوث#

إحدى الميزات الجديدة والمبتكرة لمفاتيح المرور هي المصادقة عبر الأجهزة (CDA) – المعروفة أيضًا باسم المصادقة الهجينة. تتيح هذه الميزة للمستخدمين المصادقة على جهاز واحد (عادةً ما يكون جهاز كمبيوتر مكتبي أو محمول) باستخدام أجهزتهم المحمولة عبر رموز QR والبلوتوث. تعزز طريقة المصادقة الهجينة هذه الأمان والراحة، مما يوفر تجربة مستخدم سلسة. معظم المستخدمين غير التقنيين معتادون اليوم على مسح رموز QR، سواء كان ذلك أثناء جائحة COVID للتسجيل أو عبر تطبيقات المراسلة التي تعتمد على الهاتف المحمول أولاً ثم أضافت دعمًا لسطح المكتب (مثل WhatsApp أو Telegram).

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

8.2 البلوتوث ليس موجودًا دائمًا ويمكن أن يكون سيئًا لتجربة المستخدم في CDA#

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

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

8.3 تأثير مختلف لعدم توفر البلوتوث في Firefox وSafari#

يُعد عدم توفر واجهة برمجة تطبيقات الويب للبلوتوث في Firefox وSafari مشكلة، خاصة بالنسبة لـ Firefox.

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

ومع ذلك، يمثل Firefox مشكلة كبيرة لأنه شائع على أجهزة Windows. إذا كان المستخدم يستخدم Firefox ويريد استخدام CDA، فإن الطرف المعتمد لا يمكنه تحديد ما إذا كان البلوتوث متاحًا بشكل موثوق، حيث لم يتم تنفيذ واجهة برمجة تطبيقات الويب للبلوتوث. قد يؤدي هذا إلى تجربة مستخدم سيئة، حيث قد يعلق المستخدمون في نقاط معينة دون معرفة ما يجب عليهم فعله.

كما رأينا في مدونات سابقة، تتخلف أجهزة Windows أيضًا من حيث تبني مفاتيح المرور (انظر أيضًا State of Passkeys). دعونا نلقي نظرة على مدى شيوع توفر البلوتوث.

9. هل يتطلب Windows 10 وجود بلوتوث؟#

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

10. هل يتطلب Windows 11 وجود بلوتوث؟#

لا يفرض Windows 11، على غرار Windows 10، وجود بلوتوث. ومع ذلك، فإن الاتجاه نحو أجهزة أكثر تكاملاً وحداثة يعني أن معظم الأجهزة المتوافقة مع Windows 11 ستحتوي على الأرجح على إمكانيات البلوتوث. ومع ذلك، يمكن للمستخدمين تعطيله، مما يؤثر على تطبيقات CDA.

11. توصية#

في الجدول التالي، يمكنك معرفة ما إذا كان بإمكانك تحديد ما إذا كان جهاز سطح المكتب جاهزًا للبلوتوث وبالتالي يمكن استخدامه كعميل CDA:

نظام التشغيلدعم عتاد البلوتوثالكشف عن البلوتوث في المتصفح
ChromeEdgeFirefoxSafari
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.

12. الخلاصة: واجهة برمجة تطبيقات الويب للبلوتوث لمفاتيح المرور#

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

مع هذا المقال، قدمنا إجابة على الأسئلة الأساسية الثلاثة:

  1. ما هي واجهة برمجة تطبيقات الويب للبلوتوث؟ هي واجهة جافاسكريبت تسمح لتطبيقات الويب بالوصول إلى أجهزة البلوتوث والتواصل معها، مما يسهل التفاعلات الآمنة.
  2. كيف نستخدم واجهة برمجة تطبيقات الويب للبلوتوث؟ نستخدمها عن طريق استدعاء وظائف مثل getAvailability() و getDevices() و requestDevice() للتحقق من دعم البلوتوث، وسرد الأجهزة التي يمكن الوصول إليها، وطلب الاقتران بالأجهزة.
  3. لماذا يُعد الكشف عن البلوتوث مهمًا لمفاتيح المرور؟ من خلال دمج واجهة برمجة تطبيقات الويب للبلوتوث في استراتيجية تنفيذ مفاتيح المرور الخاصة بك، يمكنك بناء حل مصادقة رائع قائم على مفاتيح المرور يعود إلى CDA فقط إذا كانت هناك أجهزة يمكنها اكتشاف دعم البلوتوث.

لمزيد من المعلومات حول واجهة برمجة تطبيقات الويب للبلوتوث ومجموعة من الأمثلة، يرجى النقر هنا.

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