أرسلت بواسطة John Zoeller – مهندس علاقات المطورين

هذا المنشور هو جزء من Wear OS Sotflight Week. اليوم ، نحن نركز على تنفيذ مدير بيانات الاعتماد على نظام التشغيل WEAR، تهدف إلى تبسيط تجربة المصادقة.
بالنسبة لجميع مطوري البرامج ، يعد صياغة تدفق المصادقة السريع والآمن أمرًا بالغ الأهمية ، وهذا بنفس القدر من الأهمية على نظام التشغيل Wear.
تتطلب أساليب نظام التشغيل التقليدية للمستخدمين أن يكون هناك هاتفهم في مكان قريب لإكمال المصادقة ، غالبًا مع تدفق الهاتف المحمول أو رمز المصادقة المكون من عاملين.
يؤدي وصول Manager Degination إلى تبسيط هذه العملية ، مما يتيح المصادقة مباشرة من ساعة المستخدم دون حاجة لهاتف قريب.
بصفتك واجهة برمجة تطبيقات موحدة ، يمكّنك مدير بيانات الاعتماد من إعادة استخدام رمز تطبيق الهاتف المحمول الخاص بك على نظام التشغيل ، وتبسيط التطوير عبر عوامل النماذج. بنقرة واحدة ، يمكن للمستخدمين المصادقة مع كلمات المرور أو الهويات الموحدة مثل تسجيل الدخول مع Google أو مفاتيح، معيار الصناعة الجديد للأمن.

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

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

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

تنفيذ مدير بيانات الاعتماد على نظام التشغيل WEAR
الإعداد الأساسي getCrediential
في جوهره ، يقوم مدير بيانات الاعتماد بتوحيد أساليب المصادقة المتعددة في مكالمة واجهة برمجة تطبيقات واحدة موحدة: getCrediential. عن طريق تكوين أ getCredentialRequest مع خيارات المصادقة الخاصة بك ، يمكنك استخدام الاستجابة للتحقق من صحة هوية المستخدم مع خادم التطبيق الخاص بك الذي يحتوي على بيانات الاعتماد ، مثل ذلك:
val request = GetCredentialRequest(getCredentialOptions()) val getCredentialResponse = credentialManager.getCredential(activity, request) login(getCredentialResponse.credential)
مزامنة بيانات الاعتماد مع روابط الأصول الرقمية
للحصول على تجربة سلسة حقًا ، يجب أن تتم مزامنة بيانات اعتماد المستخدم دون عناء من أجهزتهم الأخرى إلى مراقبتها ، حيث لا يمكن حاليًا إنشاء بيانات اعتماد على Over OS.
لتمكين هذا ، يجب عليك إضافة إدخال لنظام التشغيل Wear في الخاص بك روابط الأصول الرقمية لربط تطبيق ONES OS مع إصدارات أخرى من تطبيقك. تأكد من ملء إدخال رابط الأصول بدقة ، بما في ذلك تطبيقك ApplicationId وتجزئة التشفير SHA-256 من توقيع التطبيق الرقمي. يمكنك اختبارها مع دليل التحقق من ارتباط التطبيق الخاص بنا.
تأثيث getCrediential مع بيانات الاعتماد المدمجة
للسماح للمستخدمين بتسجيل الدخول مع مدير بيانات الاعتماد ، قدم getCrediential مع خيارات لأنواع المصادقة الثلاثة المدمجة: مركبات المرور وكلمات المرور والهويات الموحدة مثل تسجيل الدخول مع Google.
// Adding options is part of creating the credential request GetCredentialRequest(getCredentialOptions())) // Furnish list of CredentialOptions for the request suspend fun getCredentialOptions(): List<CredentialOption> { return listOf( // Passkey: Furnish a GetPublicKeyCredentialOption with public key // data from your authentication server GetPublicKeyCredentialOption(authServer.getPublicKeyRequestOptions()), // Password: Add the provided GetPasswordOption type in your list GetPasswordOption(), // Federated Identity: Add your desired option type (GetGoogleIdOption, below) // to orchestrate a token exchange with the federated identity server. GetGoogleIdOption.Builder().setServerClientId(SERVER_CLIENT_ID).build(), ) }
متى getCrediential يُطلق عليه ، سيستخدم مدير بيانات الاعتماد خيارات يقدمها مطورو العرض لتقديم مستخدمي واجهة مستخدم لاختيار كيفية تسجيل الدخول.

التعامل مع أنواع الاعتماد المدمجة
بعد أن يختار المستخدم بيانات الاعتماد المطلوبة في واجهة مستخدم Manager Manager ، استخدم نتيجة getCrediential (الذي يحتوي على بيانات الاعتماد المحددة) لتوجيه معالجات المصادقة الخاصة بك.
// getCredential returns the selected credential login(getCredentialResponse.credential) // Route to your credential handling functions to login suspend fun login(credential: Credential): LoginResult { when (credential) { is PublicKeyCredential -> { return authHandler.loginWithPasskey(credential.authenticationResponseJson) } is PasswordCredential -> { return authHandler.loginWithPassword(credential.id, credential.password) } is CustomCredential -> { return authHandler.loginWithCustomCredential( credential.type, credential.data) } // ‘else’ case, etc…
منطق المناولة لكل مما سبق loginwith’x ‘ الطرق مختلفة بعض الشيء ، على الرغم من أنها جميعها تقوم بإعداد مكالمات الشبكة إلى نقاط نهاية المصادقة المخصصة. فيما يلي إصدارات مبسطة من هذه الطرق التي توضح مكالمات الشبكة لمصادقة المستخدمين بناءً على طريقتهم المحددة.
مفاتيح تتطلب بيانات JSON الموقعة الموقعة. سيستخدم الخادم الخاص بك هذه البيانات للتحقق من المستخدم بشكل تشفير.
suspend fun loginWithPasskey(passkeyResponseJSON: String): LoginResult { val validatedPasskey = httpClient.post( "myendpoint/passkey", passkeyResponseJSON, /*other args*/) return LoginResult(validatedPasskey) }
كلمات المرور تتطلب منطق الشبكة للتحقق من صحة اسم المستخدم وكلمة المرور ، ويستخدم مثالنا المكالمات اللاحقة للتحقق من صحة اسم المستخدم أولاً. ستتحقق الواجهة الخلفية الخاصة بك من صحة هذه قاعدة بيانات المستخدم الخاصة بها.
suspend fun loginWithPassword(userName: String, password: String): LoginResult { val validatedUserName = httpClient.post( "myendpoint/username", userName, /*other args*/) val validatedPassword = httpClient.post( "myendpoint/password", password, validatedUserName, /*other args*/) return LoginResult(ValidatedPassword) }
الهويات الموحدة مثل تسجيل الدخول مع Google ، تتطلب إنشاء اتصال آمن بين الخادم والتطبيق الخاص بك. تُظهر عينة لدينا تدفق استجابة التحدي الذي بدأ من الخادم ، لكن العميل الذي تم إنشاؤه غير يعمل أيضًا.
يوفر خادم العينة لدينا تحديًا لتطبيقنا عند الطلب (FederatedSessionID، أدناه) الذي يتم استخدامه لاحقًا للتحقق من صحة الرمز المميز الموحد لمصادقة المستخدم.
suspend fun loginWithCustomCredential(type: String, data: Bundle): LoginResult { if (type == GoogleIdTokenCredential.TYPE_GOOGLE_ID_TOKEN_CREDENTIAL) { token = GoogleIdTokenCredential.createFrom(data).idToken } // Establish a federated session for with your server and obtain its info val federatedSessionId = httpClient.post("myendpoint/ObtainFederatedSession", /*federated backend address=*/"https://accounts.google.com") // Validate the token with the established federated session. val validatedCustomCredential = httpClient.post( "myendpoint/verifyToken", token, federatedSessionID, /*federated backend address=*/"https://accounts.google.com") return LoginResult(validatedCustomCredential) }
التعامل مع أنواع الاعتماد الثانوية
إذا تم استبعاد انقرات المستخدم ، أو يعود إلى مديرة الاعتماد ، أ getCredentialCancellationException سيتم إلقاؤها للمطورين لاستخدامها للانتقال إلى شاشات تسجيل الدخول الاحتياطية الخاصة بهم ، والتي ستوفر خيارات مصادقة ثانوية للمستخدمين. هذه الخيارات مفصلة في تصميم المصادقة مع مدير الاعتماد القسم ، أعلاه.
// Catch the user dismissal catch (e: GetCredentialCancellationException) { // Trigger event that navigates to ‘BackupLoginScreen’ uiEvents.send(UiEvent.NavigateToBackupLogin) }
ملاحظة خاصة: يتم الآن إهمال إصدار تسجيل الدخول إلى Google الموجود خارج مدير الاعتماد وسيتم إزالته ، و لا ينبغي تقديمها كخيار ثانوي لتجنب تقديم زرين لنفس الغرض.
انظر دليل انتقال OS OS لمزيد من التفاصيل.
ابدأ مع مدير بيانات الاعتماد على نظام التشغيل Wear OS
يعد تنفيذ مدير بيانات الاعتماد على WEAR OS عملية واضحة توفر فوائد كبيرة. من خلال تبني واجهة برمجة التطبيقات هذه ، يمكنك تزويد المستخدمين بطريقة آمنة وسلسة وفعالة للمصادقة. لبدء التنفيذ ، استكشف وثائق المطورين وتطبيق العينة الرسمية.
لمعرفة كيفية ترحيل التطبيقات إلى مدير بيانات الاعتماد على نظام التشغيل WEAR ، تحقق من دراسة الحالة الخاصة بنا مع ToDoist ، الذين تمكنوا من تبسيط مصادقةهم مع إعادة استخدام تنفيذ الهاتف المحمول.
لإلقاء نظرة على كيفية تحسين معدل نجاح Basskeys ، يمكنك قراءة كل شيء حول كيفية تعتمد X على تحقيق تجربة مصادقة أكثر أمانًا وسهلة الاستخدام.
أخيرًا ، يمكنك مشاهدة مدونة فيديو Manager Manager الجديدة على YouTube لتعزيز كل ما تعلمته هنا.
ترميز سعيد!

