---
url: 'https://www.corbado.com/ar/blog/وسائل-نقل-webauthn-الداخلية-والهجينة'
title: 'وسائل نقل WebAuthn: النقل الداخلي والهجين'
description: 'استكشف كيفية عمل وسائل نقل WebAuthn في واجهات برمجة تطبيقات المتصفح، وخدمات المصادقة في iOS، ومدير بيانات الاعتماد في Android للمصادقة عبر الأجهزة باستخدام مفاتيح المرور.'
lang: 'ar'
author: 'Vincent Delitz'
date: '2025-10-31T14:40:47.585Z'
lastModified: '2026-03-25T10:06:24.821Z'
keywords: 'وسائل نقل webauthn'
category: 'Passkeys Implementation'
---

# وسائل نقل WebAuthn: النقل الداخلي والهجين

### التعامل مع وسائل نقل المنصة: مرجع سريع

| المنصة             | أدوات مصادقة المنصة                                                                                                                 | مفاتيح الأمان    |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------- | ---------------- |
| **متصفحات الويب**  | Windows Hello: `["internal"]`<br />Google Password Manager: `["internal", "hybrid"]`<br />iCloud Keychain: `["internal", "hybrid"]` | `["usb", "nfc"]` |
| **Android الأصلي** | `["internal", "hybrid"]`                                                                                                            | `["usb", "nfc"]` |
| **iOS الأصلي**     | ⚠️ **مصفوفة فارغة `[]`** (iCloud Keychain)                                                                                          | `["usb", "nfc"]` |

_ملاحظة: وفقًا لمواصفات WebAuthn، تعني مصفوفة وسائل النقل الفارغة أن جميع وسائل النقل
مدعومة._

## 1. مقدمة: وسائل نقل WebAuthn للمصادقة عبر الأجهزة

عند تطبيق مفاتيح المرور (Passkeys) عبر المنصات المختلفة، يواجه المطورون قرارًا مهمًا:

- **كيف يجب التعامل مع وسائل نقل WebAuthn، وخاصة وسائل النقل الداخلية والهجينة، لضمان أفضل
  تجربة مصادقة عبر الأجهزة؟**

يكمن الجواب في فهم **وسائل نقل WebAuthn** - وهي تفصيل تقني يحدد كيفية تواصل أدوات المصادقة
(authenticators) مع الأطراف المعتمدة (relying parties). على الرغم من أن وسائل النقل تبدو
بسيطة نظريًا، إلا أن تطبيقها يختلف بشكل كبير عبر متصفحات الويب، وتطبيقات
[iOS](https://www.corbado.com/blog/how-to-enable-passkeys-ios) الأصلية، وتطبيقات
[Android](https://www.corbado.com/blog/how-to-enable-passkeys-android) الأصلية، خاصة فيما يتعلق بالتعامل مع وسائل
النقل الداخلية والهجينة.

يستعرض هذا المقال كيفية عمل وسائل نقل WebAuthn عبر المنصات المختلفة ويقدم نهجين مختلفين
للتعامل مع وسائل النقل الداخلية والهجينة، ولكل منهما مزاياه وعيوبه.

**يغطي هذا المقال:**

1. **وسائل نقل WebAuthn: الداخلية، والهجينة، وأدوات مصادقة المنصة عبر الويب، و iOS، و
   Android**
2. **نهجان: التعامل المتوافق مع المواصفات مقابل التعامل المحسّن لوسائل النقل الداخلية
   والهجينة**
3. **أفضل الممارسات والتوصيات لتنفيذ المصادقة عبر الأجهزة**

## 2. فهم وسائل نقل WebAuthn: الداخلية، والهجينة، وأدوات مصادقة المنصة

### 2.1 أنواع وسائل نقل WebAuthn: الداخلية، والهجينة، وUSB، وNFC، وBLE، والبطاقات الذكية

تُعرّف وسائل نقل WebAuthn طرق الاتصال بين أدوات المصادقة وأجهزة العميل. تحدد
[مواصفات WebAuthn Level 3](https://www.w3.org/TR/webauthn-3/#enum-transport) ستة أنواع من
وسائل النقل:

**`usb`**: تستخدمها مفاتيح الأمان المادية التي تتصل عبر منافذ USB، مثل YubiKeys أو غيرها
من رموز أمان [FIDO2](https://www.corbado.com/glossary/fido2).

**`nfc`**: تتيح الاتصال مع أدوات المصادقة عبر تقنية الاتصال قريب المدى (NFC)، مما يسمح
للمستخدمين بملامسة مفاتيح الأمان الخاصة بهم أو الأجهزة التي تدعم NFC.

**`ble`**: تسهل المصادقة عبر تقنية بلوتوث منخفض الطاقة (Bluetooth Low
[Energy](https://www.corbado.com/passkeys-for-energy))، مما يتيح الاتصال اللاسلكي مع أدوات المصادقة الخارجية.

**`smart-card`**: تُستخدم مع قارئات البطاقات الذكية، مما يسمح بالمصادقة عبر البطاقات
الذكية.

**`hybrid`**: تتيح المصادقة عبر الأجهزة، حيث يقوم المستخدم عادةً بمسح رمز QR للمصادقة بين
الأجهزة، مثل استخدام الهاتف للمصادقة على متصفح سطح المكتب، أو العكس. يمكن أن يؤدي هذا
النقل إلى ظهور مطالبات رمز QR على كل من أجهزة سطح المكتب والأجهزة المحمولة، وهو ما قد لا
يكون مرغوبًا دائمًا حسب السياق. ملاحظة: تمت إضافة `hybrid` في
[WebAuthn Level 3](https://www.corbado.com/blog/passkeys-prf-webauthn).

**`internal`**: تكون أداة المصادقة مدمجة داخل الجهاز نفسه، مثل
[iCloud Keychain](https://www.corbado.com/glossary/icloud-keychain) (التي يتم التحقق منها عبر
[Face ID](https://www.corbado.com/faq/is-face-id-passkey) أو Touch ID) على أجهزة iPhone، أو
[Windows Hello](https://www.corbado.com/glossary/windows-hello) على أجهزة الكمبيوتر، أو
[Google Password Manager](https://www.corbado.com/blog/how-to-use-google-password-manager) على أجهزة
[Android](https://www.corbado.com/blog/how-to-enable-passkeys-android). هذه هي أدوات مصادقة المنصة.

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

### 2.2 السلوك الخاص بالمنصات

يختلف التعامل مع وسائل النقل بشكل كبير عبر المنصات، مما يخلق تحديات التوافق التي يواجهها
المطورون.

#### 2.2.1 متصفحات الويب

تستقبل المتصفحات معلومات وسائل النقل من أدوات المصادقة وتلتزم بها أثناء عمليات المصادقة.
عند إنشاء مفتاح مرور في Chrome أو Safari أو Edge، يوفر مدير بيانات الاعتماد في المتصفح
بيانات وسائل النقل التي تختلف بناءً على أداة المصادقة الأساسية:

**أدوات مصادقة المنصة**: يوفر [Windows Hello](https://www.corbado.com/glossary/windows-hello) `["internal"]` فقط،
مما يعكس طبيعته المرتبطة بالجهاز. ومع ذلك، عندما يستخدم Chrome مدير كلمات مرور Google
كأداة مصادقة، فإنه يوفر `["internal", "hybrid"]` لأن مدير كلمات مرور Google يدعم المصادقة
عبر الأجهزة من خلال هواتف [Android](https://www.corbado.com/blog/how-to-enable-passkeys-android).

**مفاتيح الأمان المادية**: توفر وسائل نقل محددة مثل `["usb", "nfc"]` بناءً على قدراتها
الفعلية.

**مديرو بيانات الاعتماد المتزامنة مع السحابة**: يوفر
[iCloud Keychain](https://www.corbado.com/glossary/icloud-keychain) في Safari ومدير كلمات مرور Google في Chrome
عادةً `["internal", "hybrid"]` لدعم كل من عمليات المصادقة المحلية وعبر الأجهزة.

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

**التوثيق**:
[W3C WebAuthn Specification](https://w3c.github.io/webauthn/#sctn-issuing-cred-request-to-authenticator)

#### 2.2.2 تطبيقات Android الأصلية

تتصرف
[واجهة برمجة تطبيقات مدير بيانات الاعتماد](https://developer.android.com/identity/sign-in/credential-manager)
في Android بشكل مشابه لمتصفحات الويب. عند إنشاء مفاتيح مرور في تطبيقات Android الأصلية،
يوفر مدير بيانات الاعتماد معلومات وسائل النقل التي تعكس سلوك الويب - حيث تبلغ أدوات مصادقة
المنصة عن قدراتها بدقة، ويتعامل النظام مع بيانات وسائل النقل باستمرار. يمكن لمطوري Android
الاعتماد على هذه المعلومات دون الحاجة إلى معالجة خاصة.

**التوثيق**:
[Android Credential Manager](https://developer.android.com/training/sign-in/passkeys)

#### 2.2.3 تطبيقات iOS الأصلية

يمثل [iOS](https://www.corbado.com/blog/how-to-enable-passkeys-ios) وضعًا أكثر تعقيدًا. يتعامل
[إطار عمل AuthenticationServices](https://developer.apple.com/documentation/authenticationservices)
من Apple مع وسائل النقل بشكل مختلف اعتمادًا على نوع أداة المصادقة:

**أدوات مصادقة المنصة** (iCloud Keychain، التي يتم التحقق منها عبر
[Face ID](https://www.corbado.com/faq/is-face-id-passkey) أو Touch ID): غالبًا ما تُرجع **مصفوفات وسائل نقل
فارغة** أثناء إنشاء مفتاح المرور. هذا لا يعني أن مفتاح المرور يفتقر إلى قدرات النقل، بل
يعني ببساطة أن [iOS](https://www.corbado.com/blog/how-to-enable-passkeys-ios) لا يبلغ عنها بشكل صريح. وفقًا
لمعيار WebAuthn، فإن عدم تحديد وسائل النقل يعني أن أي وسيلة نقل مقبولة، لذا ستظل المصادقة
الهجينة تعمل.

**مفاتيح الأمان**: توفر معلومات وسائل النقل (مثل `["usb"]`، `["nfc"]`) عند استخدامها مع
أجهزة iOS، متبعةً النمط المتوقع.

**التوثيق**:
[Apple AuthenticationServices](https://developer.apple.com/documentation/authenticationservices/public-private_key_authentication/supporting_passkeys)

## 3. نهجان للتعامل مع وسائل نقل WebAuthn

يواجه المطورون خيارًا: اتباع المواصفات بدقة، أو تحسين وسائل النقل الداخلية والهجينة لتحسين
تجربة المستخدم. لكل نهج مزايا وعيوب.

### 3.1 النهج المتوافق مع المواصفات: الثقة بوسائل النقل الداخلية والهجينة

يتوافق هذا النهج مع مواصفات WebAuthn: استخدام وسائل النقل تمامًا كما توفرها أداة المصادقة
أثناء تسجيل بيانات الاعتماد، وإرسالها مرة أخرى دون تغيير أثناء المصادقة.

**التنفيذ**: عند إنشاء مفتاح مرور، احتفظ بمصفوفة `transports` من استجابة أداة المصادقة.
أثناء المصادقة، قم بتضمين وسائل النقل هذه بالضبط في قائمة `allowCredentials`:

```json
{
    "allowCredentials": [
        {
            "id": "credential-id-base64",
            "type": "public-key",
            "transports": ["internal", "hybrid"]
        }
    ]
}
```

**المزايا**:

- **الامتثال للمواصفات**: يتبع معايير WebAuthn بدقة، مما يضمن التوافق مع تحديثات المنصات
  المستقبلية.
- **موثوقية مفاتيح الأمان**: يعمل بشكل مثالي مع مفاتيح الأمان المادية (YubiKeys، إلخ) التي
  توفر دائمًا معلومات نقل دقيقة.
- **منع الخيارات غير الصالحة**: يتجنب عرض طرق المصادقة غير المدعومة حقًا - على سبيل
  المثال، لن يؤدي إلى تشغيل رموز QR لبيانات اعتماد
  [Windows Hello](https://www.corbado.com/glossary/windows-hello).

**العيوب**:

- **سلوك المصفوفة الفارغة في iOS**: تُرجع أدوات مصادقة المنصة في iOS وسائل نقل فارغة، مما
  يعني وفقًا للمواصفات "أي وسيلة نقل" - وهذا قد يعرض جميع خيارات المصادقة بما في ذلك
  مفاتيح الأمان.
- **قد يعرض خيارات غير مرغوب فيها**: يمكن أن يقدم خيارات مفتاح الأمان (USB، NFC) في
  التطبيقات الاستهلاكية حيث لا تكون متوقعة.
- **تجربة مستخدم غير متسقة**: تقدم المنصات المختلفة خيارات مصادقة مختلفة لنفس الحساب.

**الأفضل لـ**: التطبيقات التي تعطي الأولوية للامتثال للمعايير، وبيئات الشركات التي بها
أنواع متنوعة من أدوات المصادقة.

### 3.2 نهج تحسين وسائل النقل: التحكم في النقل الداخلي والهجين للمصادقة عبر الأجهزة

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

#### 3.2.1 حالة الاستخدام 1: إزالة خيارات مفتاح الأمان من مفاتيح iOS

**المشكلة**: تُرجع أدوات مصادقة منصة iOS مصفوفات وسائل نقل فارغة. عند تركها فارغة أو ملؤها
بواسطة الواجهات الخلفية، قد يرى المستخدمون مطالبات مفتاح الأمان (USB، NFC) جنبًا إلى جنب
مع خيارات المنصة، مما يخلق ارتباكًا في التطبيقات الاستهلاكية.

**الحل**: اضبط وسائل النقل بشكل صريح على `["hybrid", "internal"]` لأدوات مصادقة منصة iOS.
هذا يضمن تقديم مصادقة المنصة والتدفقات عبر الأجهزة فقط، وإخفاء خيارات مفتاح الأمان.

```typescript
// عند الاحتفاظ ببيانات اعتماد أداة مصادقة منصة iOS
if (platform === "iOS" && authenticatorAttachment === "platform") {
    transports = ["hybrid", "internal"];
}
```

**النتيجة**: واجهة مستخدم مصادقة نظيفة بدون مطالبات مفتاح الأمان لمفاتيح المرور التي تم
إنشاؤها على iOS.

#### 3.2.2 حالة الاستخدام 2: منع رموز QR على الأجهزة المحمولة

**المشكلة**: عند المصادقة على الأجهزة المحمولة، يؤدي عرض رموز QR للمصادقة عبر الأجهزة إلى
تجربة مستخدم سيئة - فالمستخدمون موجودون بالفعل على جهاز محمول تتوفر فيه مفاتيح المرور
الخاصة بهم.

**الحل**: قم بإزالة وسيلة النقل `hybrid` عندما يقوم المستخدم بالمصادقة من جهاز محمول، مع
ترك `["internal"]` فقط.

```typescript
// عند بناء allowCredentials للمصادقة
const transports = isMobileDevice
    ? credentials.transports.filter((t) => t !== "hybrid")
    : credentials.transports;
```

**النتيجة**: يرى مستخدمو الأجهزة المحمولة خيارات المصادقة المباشرة فقط دون مطالبات رمز QR
غير الضرورية.

**⚠️ تحذير**: لا يؤدي التلاعب بوسائل النقل دائمًا إلى نتائج متسقة عبر المنصات. يُظهر
الاختبار المكثف أن مجموعات المتصفحات وأنظمة التشغيل تتعامل مع وسائل النقل بشكل مختلف:

- تعرض بعض المنصات رموز QR حتى عند استبعاد `hybrid` من وسائل النقل.
- تخفي منصات أخرى رموز QR حتى عند تضمين `hybrid`.
- يختلف السلوك بشكل كبير بين Chrome و Edge و Safari و Firefox عبر Windows و macOS و iOS.

**خطر الوصول إلى طرق مسدودة**: يمكن أن يؤدي التصفية المفرطة لوسائل النقل إلى إنشاء طرق
مسدودة للمصادقة حيث لا يمكن للمستخدمين تسجيل الدخول على الإطلاق. على سبيل المثال، قد يؤدي
إزالة `hybrid` إلى منع سيناريوهات المصادقة المشروعة عبر الأجهزة حيث يحتاج المستخدم إلى
المصادقة من جهاز مستعار. قم دائمًا بتوفير طرق مصادقة بديلة واختبر بدقة عبر المنصات
المستهدفة قبل نشر تحسينات وسائل النقل.

#### 3.2.3 اعتبارات هامة

**هذه تلميحات للتحسين**: يوفر WebAuthn آليات أخرى لتحسين تجربة مستخدم المصادقة بخلاف
التلاعب بوسائل النقل - مثل
[التلميحات (hints)](https://www.w3.org/TR/webauthn-3/#enum-hints).

**سلوك وسائل النقل لا يمكن التنبؤ به**: تُظهر المصادقة عبر الأجهزة (CDA) عبر وسيلة النقل
`hybrid` سلوكًا غير متسق عبر مجموعات المتصفحات وأنظمة التشغيل. يُظهر الاختبار في العالم
الحقيقي أن قيم وسائل النقل لا تضمن سلوكًا محددًا لواجهة المستخدم - فالمنصات تفسر وتتعامل
مع وسائل النقل بشكل مختلف، مما يؤدي إلى نتائج غير متوقعة.

**التعقيد الخاص بالمنصة**: عند التحكم الصريح في وسائل النقل، يجب أن تأخذ في الاعتبار
اختلافات المنصات:

- **iOS**: يرسل مصفوفات فارغة لأدوات مصادقة المنصة؛ يتطلب ملؤها.
- **Windows Hello**: يجب أن يظل `["internal"]` فقط؛ إضافة `hybrid` يؤدي إلى ظهور رموز QR
  غير مرغوب فيها.
- **الويب و Android**: يوفران بشكل عام معلومات نقل دقيقة.
- **تنوعات CDA**: قد تظهر مطالبات رمز QR أو تختفي بغض النظر عن وجود `hybrid` في مصفوفة
  وسائل النقل.

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

**المزايا**:

- **تجربة مستخدم مخصصة**: التحكم الدقيق في خيارات المصادقة التي يراها المستخدمون في سياقات
  محددة.
- **حل مشكلة المصفوفة الفارغة في iOS**: يحدد وسائل النقل بشكل صريح حيث لا يوفرها iOS.
- **تحسين مدرك للسياق**: تكييف واجهة مستخدم المصادقة بناءً على نوع الجهاز.

**العيوب**:

- **سلوك لا يمكن التنبؤ به**: لا يضمن التلاعب بوسائل النقل سلوكًا متسقًا لواجهة المستخدم -
  يُظهر الاختبار المكثف أن المنصات تفسر وسائل النقل بشكل مختلف، وأحيانًا تعرض أو تخفي
  الخيارات بغض النظر عن قيم وسائل النقل.
- **خطر الوصول إلى طرق مسدودة للمصادقة**: يمكن أن تمنع التصفية المفرطة لوسائل النقل
  المستخدمين من المصادقة تمامًا، خاصة في سيناريوهات عبر الأجهزة.
- **الانحراف عن المواصفات**: الابتعاد عن توصيات المواصفات، مما قد يسبب مشاكل مع تغييرات
  المنصات المستقبلية.
- **عبء الصيانة**: يتطلب منطقًا خاصًا بالمنصة وتحديثات مستمرة مع تطور المنصات.
- **التعقيد**: يجب التعامل مع مصفوفات iOS الفارغة، وقيود Windows Hello، وغيرها من خصوصيات
  المنصات يدويًا.
- **عبء الاختبار**: تحتاج كل قاعدة تحسين إلى التحقق عبر جميع مجموعات المنصات.

**الأفضل لـ**: التطبيقات الاستهلاكية ذات متطلبات تجربة المستخدم المحددة، والفرق التي لديها
الموارد اللازمة للحفاظ على منطق خاص بالمنصة، والسيناريوهات التي تعطي الأولوية لتدفقات
المصادقة المبسطة على الامتثال الصارم للمواصفات.

### 3.3 استراتيجية وسائل نقل WebAuthn: أدوات مصادقة المنصة والمصادقة عبر الأجهزة

لا يوجد التعامل مع وسائل نقل WebAuthn بمعزل عن غيره - إنه جزء من استراتيجيتك الشاملة
لتطبيق مفاتيح المرور. يظهر نهجان شائعان في عمليات النشر الإنتاجية، ولكل منهما آثار مختلفة
على استخدام وسائل النقل الداخلية والهجينة.

#### 3.3.1 الاستراتيجية 1: أقصى قدر من التوافق مع المعايير وحرية المستخدم

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

**خصائص التنفيذ**:

- **واجهة مستخدم المصادقة**: يظهر زر مفتاح المرور جنبًا إلى جنب مع خيارات تسجيل الدخول
  الحالية (اسم المستخدم/كلمة المرور).
- **allowCredentials**: يتم تعيينها على مصفوفة فارغة `[]`، مما يسمح بمطابقة أي بيانات
  اعتماد.
- **أنواع أدوات المصادقة**: مفاتيح الأمان، والمصادقة عبر الأجهزة (رموز QR)، وأدوات مصادقة
  المنصة كلها مدعومة.
- **متطلبات التطبيق الأصلي**: يجب أن يدعم جميع طرق المصادقة، بما في ذلك مفاتيح الأمان.
- **preferImmediatelyAvailableCredentials**: لا يمكن استخدامها، لأنها تستبعد مفاتيح الأمان
  وتسجيلات الدخول برمز QR بحكم تعريفها.
- **التعامل مع وسائل النقل**: يجب أن يستوعب جميع أنواع وسائل النقل، بما في ذلك وسائل نقل
  مفاتيح الأمان (`usb`، `nfc`، `ble`).

**الآثار المترتبة على وسائل النقل**:

مع `allowCredentials` الفارغة، تصبح وسائل النقل أقل أهمية أثناء المصادقة - حيث تعرض المنصة
جميع الخيارات المتاحة. ومع ذلك، هذا يعني أن المستخدمين قد يرون مطالبات مفاتيح الأمان،
ورموز QR، وخيارات المنصة في وقت واحد، مما قد يخلق شللاً في اتخاذ القرار في التطبيقات
الاستهلاكية.

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

#### 3.3.2 الاستراتيجية 2: أدوات مصادقة المنصة المخصصة للمستهلك

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

**خصائص التنفيذ**:

- **إنشاء مفتاح المرور**: يُسمح فقط بأدوات مصادقة المنصة عبر
  `authenticatorAttachment: "platform"`.
- **تدفق المصادقة**: يبدأ بالمعرّف - يدخل المستخدمون البريد الإلكتروني/اسم المستخدم قبل
  المصادقة.
- **allowCredentials**: يتم ملؤها ببيانات الاعتماد المحددة للمستخدم (ليست فارغة) بمجرد
  معرفة المعرّف.
- **أنواع أدوات المصادقة**: أدوات مصادقة المنصة والمصادقة عبر الأجهزة؛ عادةً ما يتم
  استبعاد مفاتيح الأمان.
- **تحسين التطبيق الأصلي**: يمكن استخدام `preferImmediatelyAvailableCredentials`، الذي
  يستبعد مفاتيح الأمان والمصادقة عبر الأجهزة بحكم تعريفه.
- **المصادقة عبر الأجهزة**: متاحة على الويب؛ غير متاحة عند استخدام
  `preferImmediatelyAvailableCredentials` في التطبيقات الأصلية، ولكن هذا السيناريو نادر
  (عادةً ما يكون لدى المستخدمين مفاتيح مرور على الجهاز الذي يستخدمونه).
- **التعامل مع وسائل النقل**: يركز على وسائل النقل `internal` و `hybrid` فقط.

**الآثار المترتبة على وسائل النقل**:

نظرًا لأن `allowCredentials` تحتوي على بيانات اعتماد محددة مع وسائل النقل الخاصة بها، يصبح
التعامل مع وسائل النقل أمرًا بالغ الأهمية.

**الأفضل لـ**: التطبيقات الاستهلاكية، وتطبيقات الهاتف المحمول الأصلية، والسيناريوهات التي
تعطي الأولوية لتجربة المستخدم المبسطة على مرونة أداة المصادقة، والمنصات التي توجد بها
بالفعل تدفقات تبدأ بالمعرّف.

#### 3.3.3 مصفوفة المقارنة

| الخاصية                                | التوافق مع المعايير           | مخصص للمستهلك                                      |
| -------------------------------------- | ----------------------------- | -------------------------------------------------- |
| **allowCredentials**                   | مصفوفة فارغة                  | بيانات اعتماد خاصة بالمستخدم                       |
| **أنواع أدوات المصادقة**               | الكل (منصة، مفاتيح أمان، CDA) | منصة + CDA                                         |
| **واجهة برمجة تطبيقات التطبيق الأصلي** | WebAuthn القياسي              | يمكن استخدام preferImmediatelyAvailableCredentials |
| **مفاتيح الأمان**                      | مدعومة                        | مستبعدة عادةً                                      |
| **أهمية وسائل النقل**                  | منخفضة (قائمة سماح فارغة)     | عالية (بيانات اعتماد محددة)                        |
| **رموز QR على الهاتف المحمول**         | قد تظهر                       | يمكن تحسينها لإزالتها                              |
| **تجربة المستخدم**                     | خيارات أكثر، تعقيد أكثر       | مبسطة، قرارات أقل                                  |
| **تعقيد التنفيذ**                      | أقل                           | أعلى                                               |
| **احتكاك المستهلك**                    | أعلى (خيارات مصادقة متعددة)   | أقل (محسّنة لتدفقات المستهلك)                      |

#### 3.3.4 التدفقات التي تبدأ بالمعرّف وتعداد الحسابات

بالنسبة للمنصات التي تسرب بالفعل وجود الحساب أو تستخدم تدفقات تبدأ بالمعرّف (يدخل المستخدم
البريد الإلكتروني قبل رؤية خيارات تسجيل الدخول)، يتوافق النهج المخصص للمستهلك بشكل طبيعي.
بمجرد أن يقدم المستخدم معرّفه:

1. تستعلم الواجهة الخلفية عن مفاتيح المرور الموجودة.
2. تُرجع `allowCredentials` مع بيانات اعتماد محددة ووسائل النقل الخاصة بها.
3. يمكن للمنصة تحسين واجهة مستخدم المصادقة بناءً على وسائل النقل.
4. لا يوجد خطر إضافي لتعداد الحسابات (تم تقديم المعرّف بالفعل).

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

**توصية**: بالنسبة للمنصات التي تستخدم بالفعل تدفقات تبدأ بالمعرّف أو حيث لا يمثل تعداد
الحسابات مصدر قلق، يوفر النهج المخصص للمستهلك مع التعامل الصريح مع وسائل النقل تجربة
مستخدم متفوقة، خاصة في تطبيقات الهاتف المحمول الأصلية حيث يتيح
`preferImmediatelyAvailableCredentials` المصادقة البيومترية السلسة.

## 4. أفضل ممارسات تنفيذ وسائل نقل WebAuthn

بغض النظر عن النهج الذي تختاره للتعامل مع وسائل النقل الداخلية والهجينة، اتبع هذه
الممارسات لتقليل المشكلات:

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

**التعامل مع المصفوفات الفارغة بسلاسة**: عند تلقي مصفوفة وسائل نقل فارغة من أدوات مصادقة
منصة iOS:

- **النهج المتوافق مع المواصفات**: اتركها فارغة أو احذف خاصية وسائل النقل - يعني أن "أي
  وسيلة نقل" مقبولة.
- **نهج التحسين**: املأها بـ `["internal", "hybrid"]` للتحكم في خيارات المصادقة التي يتم
  عرضها.

**الاختبار على جميع المنصات المستهدفة**: قم بإنشاء مصفوفة اختبار تغطي جميع المجموعات:

- التسجيل: الويب، iOS الأصلي، Android الأصلي
- المصادقة: الويب، iOS الأصلي، Android الأصلي
- تحقق من ظهور رموز QR عند الحاجة وإخفائها عندما لا تكون مناسبة.

**فهم الفرق بين المصفوفة الفارغة والخاصية المفقودة**: عادةً ما يتم التعامل مع كل من مصفوفة
وسائل النقل الفارغة `[]` وخاصية وسائل النقل المفقودة على أنها "أي وسيلة نقل مقبولة" وفقًا
للمواصفات. ومع ذلك، تختلف تفاصيل التنفيذ عبر المنصات.

**مراقبة تغييرات المنصات**: تتطور تطبيقات WebAuthn باستمرار. تقوم Apple و Google و
Microsoft بتحديث سلوكيات أدوات المصادقة الخاصة بهم بانتظام. ابق على اطلاع بالتغييرات التي
قد تؤثر على التعامل مع وسائل النقل.

## 5. الخلاصة: اختيار استراتيجية وسائل نقل WebAuthn الخاصة بك

وسائل نقل WebAuthn - وخاصة وسائل النقل الداخلية والهجينة - هي تفاصيل تقنية لها تأثير عملي
كبير على المصادقة عبر الأجهزة. يجب أن تتماشى استراتيجية التعامل مع وسائل النقل الخاصة بك
مع نهج تنفيذ مفاتيح المرور الأوسع والمنصات المستهدفة.

### 5.1 النقاط الرئيسية

**قرارات وسائل النقل تندرج ضمن استراتيجية أوسع**: تعتمد كيفية تعاملك مع وسائل النقل على ما
إذا كنت تبني لتحقيق أقصى قدر من المرونة (باستخدام `allowCredentials` فارغة) أو لتحسين
تجربة المستخدم للمستهلك (باستخدام تدفق يبدأ بالمعرّف مع بيانات اعتماد محددة). هذا الأخير
يجعل وسائل النقل حاسمة للتحسين.

**اختلافات المنصات تتطلب معالجة**: يوفر الويب و Android معلومات نقل موثوقة، بينما تُرجع
أدوات مصادقة منصة iOS مصفوفات فارغة. يرسل Windows Hello فقط `["internal"]`. فهم هذه
الاختلافات ضروري لعمليات النشر الإنتاجية.

**نهجان صالحان لوسائل النقل**: النهج المتوافق مع المواصفات (الثقة بوسائل نقل أداة
المصادقة) يعمل بشكل جيد لبيئات الشركات وسيناريوهات المرونة القصوى. التحكم الصريح (تحسين
وسائل النقل) يناسب التطبيقات الاستهلاكية ذات التدفقات التي تبدأ بالمعرّف وتطبيقات الهاتف
المحمول الأصلية.

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

### 5.2 اختيار استراتيجيتك

**للشركات / المرونة القصوى**:

- استخدم `allowCredentials` فارغة لدعم جميع أنواع أدوات المصادقة.
- ثق بوسائل النقل التي توفرها أداة المصادقة.
- اقبل أن يرى المستخدمون المزيد من خيارات المصادقة.
- تنفيذ أبسط، توافق أوسع.

**للتطبيقات الاستهلاكية / التطبيقات الأصلية**:

- نفذ تدفق مصادقة يبدأ بالمعرّف.
- اقتصر على أدوات مصادقة المنصة (`authenticatorAttachment: "platform"`).
- استخدم `allowCredentials` مع بيانات اعتماد محددة ووسائل نقل محسّنة.
- قم بتمكين `preferImmediatelyAvailableCredentials` في التطبيقات الأصلية.
- املأ مصفوفات iOS الفارغة بـ `["hybrid", "internal"]`.
- قم بتصفية `hybrid` على الأجهزة المحمولة لمنع رموز QR.
- تجربة مستخدم متفوقة مع خيارات مصادقة مبسطة.

**للمنصات التي لديها بالفعل تدفقات تبدأ بالمعرّف**:

- لم يعد تعداد الحسابات مشكلة.
- يتوافق النهج المخصص للمستهلك بشكل طبيعي مع تجربة المستخدم الحالية.
- يوفر تحسين وسائل النقل فوائد فورية لتجربة المستخدم.
- **النهج الموصى به** لمعظم التطبيقات الاستهلاكية.

### 5.3 توصية التنفيذ

**ابدأ بالامتثال للمواصفات**، ثم قم بالتحسين بناءً على استراتيجيتك:

1. احتفظ بوسائل النقل تمامًا كما تم استلامها أثناء التسجيل.
2. حدد استراتيجيتك الشاملة (المرونة القصوى مقابل المخصصة للمستهلك).
3. إذا كانت مخصصة للمستهلك: نفذ تدفقًا يبدأ بالمعرّف وقم بتحسين وسائل النقل.
4. تعامل مع مصفوفات iOS الفارغة بشكل مناسب لاستراتيجيتك المختارة.
5. اختبر بدقة عبر منصات الويب و iOS الأصلي و Android الأصلي.

يستمر مشهد WebAuthn في التطور. يقوم موردو المنصات بتحديث تطبيقاتهم بانتظام، وتقدم مواصفات
مثل [WebAuthn Level 3](https://www.corbado.com/blog/passkeys-prf-webauthn) إمكانيات جديدة. يضمن بناء أنظمة مرنة
توائم بين التعامل مع وسائل النقل واستراتيجية المصادقة الأوسع أن يظل تطبيق مفاتيح المرور
الخاص بك قويًا ويوفر تجارب مستخدم ممتازة مع نضوج النظام البيئي.
