عندما ينشئ مستخدم مفتاح مرور، يحفظ خادم الجهة المستندة بعض التفاصيل، بينما يحفظ مزوّد بيانات الاعتماد، مثل "مدير كلمات المرور في Google"، تفاصيل أخرى. على وجه التحديد:
- يحفظ خادم الجهة المستندة بيانات اعتماد المفتاح العام.
- يحفظ مزوّد بيانات الاعتماد اسم المستخدم واسم العرض والمفتاح الخاص والبيانات الوصفية الأخرى المرتبطة. تساعد هذه البيانات الوصفية المستخدمين في تحديد مفتاح المرور المطلوب واختياره أثناء تسجيل الدخول.
يمكن أن تؤدي أوجه التناقض المحتملة بين البيانات المحفوظة على خادم الجهة المستندة ومزوّد بيانات الاعتماد إلى تجارب سيئة للمستخدمين. قد تنشأ مشاكل في السيناريوهات التالية:
- يتم حذف بيانات اعتماد على خادم الجهة المستندة ولكن ليس على مزوّد بيانات الاعتماد، ما يؤدي إلى عرض مزوّد بيانات الاعتماد لبيانات الاعتماد المحذوفة للمستخدم.
- يتم تعديل اسم المستخدم أو اسم العرض على خادم الجهة المستندة ولكن ليس على مزوّد بيانات الاعتماد، ما يؤدي إلى عرض مزوّد بيانات الاعتماد للتفاصيل القديمة.
تتيح واجهة برمجة التطبيقات Signal في "أداة إدارة بيانات الاعتماد" للجهات المستندة التواصل مع مزوّدي بيانات الاعتماد لحذف بيانات الاعتماد وتعديل البيانات الوصفية للمستخدم، مثل اسم المستخدم واسم العرض. هناك ثلاثة أنواع طلبات متاحة لسيناريوهات مختلفة:
SignalUnknownCredentialRequest- يشير إلى أنّ بيانات اعتماد معيّنة لم تعُد صالحة ويجب إخفاؤها أو إزالتها من مزوّد بيانات الاعتماد.
SignalAllAcceptedCredentialIdsRequest- يقدّم قائمة بمعرّفات بيانات الاعتماد المقبولة إلى مزوّد بيانات الاعتماد.
SignalCurrentUserDetailsRequest- يعدّل تفاصيل البيانات الوصفية للمستخدم.
التوافق مع الإصدارات
تتوفّر واجهة برمجة التطبيقات Signal على الأجهزة التي تعمل بالإصدار 15 من نظام التشغيل Android أو الإصدارات الأحدث، وتتوفّر بدءًا من الإصدار 1.6.0-beta03 من مكتبة androidx.credentials.
التنفيذ
لاستخدام واجهة برمجة التطبيقات Signal، يُرجى اتّباع الخطوات التالية:
أضِف تبعية Credential Manager إلى مشروعك.
Kotlin
dependencies { implementation("androidx.credentials:credentials:1.7.0-alpha01") }
Groovy
dependencies { implementation "androidx.credentials:credentials:1.7.0-alpha01" }
استدعاء واجهة برمجة التطبيقات Signal
لإرسال طلب إشارة إلى مزوّد بيانات الاعتماد، استخدِم طلب إشارة متوافقًا. يتطلّب كل نوع من أنواع طلبات الإشارة طلب JSON، كما هو موضّح في الأمثلة التالية:
بيانات اعتماد غير معروفة (
SignalUnknownCredentialRequest)استخدِم
SignalUnknownCredentialRequestللإشارة إلى رفض بيانات اعتماد واعتبارها غير معروفة. عندما يتلقّى مزوّد بيانات الاعتماد هذه الإشارة، يخفي بيانات الاعتماد أو يحذفها.الاستخدام
استخدِم هذه الإشارة عندما يتعذّر على الجهة المستندة التحقّق من تأكيد مفتاح مرور. يعني ذلك أنّ مفتاح المرور غير صالح ويجب إخفاؤه أو إزالته من قِبل مزوّد بيانات الاعتماد.
المَعلمتان JSON المطلوبتان لهذا الطلب هما
rpIdوcredentialId. لمزيد من المعلومات عن بنية JSON، يُرجى الاطّلاع على خيارات signalUnknownCredential.credentialManager.signalCredentialState( SignalUnknownCredentialRequest( requestJson = JSONObject().apply { put("rpId", rpId /* [String] RP ID of the relying party */) put("credentialId", credentialId /* [String] Credential ID of the credential to be hidden or deleted */) }.toString() ) )كل بيانات الاعتماد المقبولة (
SignalAllAcceptedCredentialIdsRequest)استخدِم
SignalAllAcceptedCredentialIdsRequestلإشعار مزوّدي بيانات الاعتماد بمجموعة كل بيانات الاعتماد المقبولة. بعد أن يتلقّى مزوّد بيانات الاعتماد الإشارة، يخفي أو يحذف أي بيانات اعتماد غير مضمّنة في هذه القائمة، أو يظهر أي بيانات اعتماد مخفية سابقًا ومضمّنة الآن في القائمة.الاستخدام
استخدِم هذه الإشارة عندما يتعذّر على الجهة المستندة التحقّق من مفتاح مرور. يعني هذا الخطأ أنّ مفتاح المرور غير صالح ويجب إخفاؤه أو إزالته من قِبل مزوّد بيانات الاعتماد. يمكنك أيضًا استخدام هذه الإشارة متى احتجت إلى نشر مجموعة معرّفات بيانات الاعتماد المعروفة لمزوّدي بيانات الاعتماد.
المَعلمات JSON المطلوبة لهذا الطلب هي
rpIdوuserIdوallAcceptedCredentialIds. لمزيد من المعلومات عن بنية JSON ، يُرجى الاطّلاع على خيارات signalAllAcceptedCredential.credentialManager.signalCredentialState( SignalAllAcceptedCredentialIdsRequest( requestJson = JSONObject().apply { put("rpId", rpId /* [String] RP ID of the relying party */) put("userId", userId /* [String] User ID of the current user */) put( "allAcceptedCredentialIds", JSONArray(credentialIdsList /* [List<String>] List of accepted Credential IDs */) ) }.toString() ) )تفاصيل المستخدم الحالي (
SignalCurrentUserDetailsRequest)استخدِم
SignalCurrentUserDetailsRequestلإشعار مزوّدي بيانات الاعتماد بأنّه تم تعديل البيانات الوصفية، مثل اسم المستخدم واسم العرض لمستخدم معيّن، ويجب أن تظهر في مزوّد بيانات الاعتماد.الاستخدام
استخدِم هذه الإشارة عندما يعدّل المستخدم أو الجهة المستندة البيانات الوصفية لمفتاح المرور المرتبطة بحساب المستخدم.
المَعلمات JSON المطلوبة لهذا الطلب هي
rpIdوuserIdوnameوdisplayName. لمزيد من المعلومات عن بنية JSON ، يُرجى الاطّلاع على خيارات signalCurrentUserDetails.credentialManager.signalCredentialState( SignalCurrentUserDetailsRequest( requestJson = JSONObject().apply { put("rpId", rpId /* [String] RP ID of the relying party */) put("userId", userId /* [String] User ID of the current user */) put("name", name /* [String] New Name to be updated for the current user */) put("displayName", displayName /* [String] New display name to be updated for the current user */) }.toString() ) )
اختبار التنفيذ
لاختبار تنفيذ واجهة برمجة التطبيقات Signal، يُرجى اتّباع الخطوات التالية:
ثبِّت نموذج مزوّد بيانات الاعتماد باسم MyVault.
فعِّل MyVault كمزوّد لبيانات الاعتماد في الإعدادات > كلمات المرور ومفاتيح المرور والحسابات > الخدمة المفضّلة.
فعِّل كل الإشعارات لتطبيق MyVault في الإعدادات > التطبيقات > MyVault > الإشعارات.
تأكَّد من تفعيل الظهور على الشاشة للإشعارات في الإعدادات > التطبيقات > MyVault > الإشعارات > الفئات > قناة إشعارات واجهة برمجة التطبيقات Signal.
في تطبيقك، شغِّل المسارات التي تُرسِل طلبات الإشارة إلى مزوّد بيانات الاعتماد. من المفترض أن تظهر إشعارات من MyVault على الشاشة. يؤكّد ذلك أنّ مزوّد بيانات الاعتماد قد تلقّى الطلبات.