Table of Contents
التعريف بمؤشرات التوحيد البيولوجي بشأن المقياس المقياس الكيميائي
وقد أصبح التوثيق البيولوجي حجر الزاوية في الأمن النقالي الحديث، مما يوفر توازنا بين الملاءمة والحماية، وبالنسبة لمطوري نظم المعلومات، يوفر إطار التوثيق المحلي أداة مباشرة ومع ذلك قوية لدمج الهوية المسية، والكشف عن هوية الوجه، والتحقق من رمز المرور بالأجهزة في التطبيقات، وهذه المادة تسير من خلال العملية الكاملة لتطبيق التوثيق البيولوجي باستخدام التوثيق المحلي، من خلال اتباع أفضل الممارسات الأولية لضمان سلامة الاستخدام.
وبحلول نهاية هذا الدليل، ستفهمون كيف تفحصون مدى توافر القياس الحيوي، ويعالجون المستعملون الفوريون التوثيق، ويتعاملون مع الأخطاء بشكل معقول، ويوفرون آليات للتراجع - في حين يتبعون مبادئ آبل التوجيهية المتعلقة بالخصوصية في المستعملين وحماية البيانات.
فهم إطار التوثيق المحلي
ويوفر إطار التوثيق المحلي، الذي بدأ العمل به في محطة iOS 8، وصلة وصل موحدة لتقييم هوية المستخدمين من خلال القياسات البيولوجية أو رمز مرور الأجهزة، ويستخلص الاختلافات الأساسية في المعدات بين هوية المس والوجه، مما يتيح لك كتابة منطق التوثيق الذي يعمل بلا هوادة على جميع أجهزة الإيوسوس المدعمة.
وتشمل العناصر الرئيسية للإطار ما يلي:
- LAContext:] The central object that manages authentication policies, localised reason strings, and fallback behaviour.
- LAPolicy:] Predefined policies that determine the authentication method. The two most common are (biometrics only) and ] (biometrics with passcode fallback).
- LAError:] Error codes that inform your app why authentication failed-biometry not available, user cancelled, passcode not set, and others.
وفي حين أن الإطار بسيط الاستعمال، فإن التنفيذ السليم يتطلب اهتماما دقيقا لخبرة المستعملين، ومناولة الأخطاء، والأمن، ولنبحث الخيارات المتعلقة بالسياسات بمزيد من التفصيل.
سياسات التوثيق
- - إذا كانت القياسات الأحيائية (Touch ID أو Face ID) مسجلة ومتاحة، فإن هذه السياسة تدفع المستعملين إلى التحقق من القياس البيولوجي فقط، وإذا لم تكن القياسات الأحيائية متاحة، فإن تقييم السياسات لا يقدم أي تراجع في رمز المرور، وهذا مناسب للعمليات المنخفضة المخاطر التي تريد فيها خبرة لا تحصى ويمكن أن يعالج نقص القياس الأحيائي بشكل معقول.
- - تحاول هذه السياسة أولا التحقق من القياس البيولوجي، وإذا لم يكن هناك قياس أحيائي، يفشل المستخدم في التسجيل، أو يلغي المستخدم المقياس البيولوجي، فإن تطبيقك يمكن أن يعود إلى رمز مرور الأجهزة، وهذا هو السياسة الموصى بها بالنسبة لأحدث سيناريوهات التوثيق لأنه يكفل أنه حتى عندما لا يكون القياس الأحيائي خيارا، فإن المستخدم لا يزال يستطيع التصديق على استخدام رمز المرور الخاص به.
ومن المهم ملاحظة أن تراجع رمز المرور لا يظهر إلا بعد أن يلغي المستخدم الاستدلال البيولوجي بسرعة أو إذا فشل القياس الأحيائي، وأن يستعمل " جهاز الالتفات " . ويجب أن تتعامل مع هذه الأحداث على نحو سليم لتجنب خلط المستعمل.
التنفيذ التدريجي
ويشمل تنفيذ التوثيق البيولوجي خمس خطوات واضحة: استيراد الإطار، وإنشاء حالة ، والتحقق مما إذا كان يمكن تقييم السياسة المنشودة، وإجراء التقييم، ومعالجة النتيجة، وينطوي على تحليل مفصل للأمثلة الرمزية.
1 - استيراد الإطار
بدايةً من استيراد في أي ملف سويفت حيث تخطط لاستخدام التوثيق، هذا الاستيراد يمنحك إمكانية الوصول إلى ، ، وجميع أنواع الأخطاء.
import LocalAuthentication
2- إنشاء نظام لاكونتكست
] هو الهدف الذي يستفسر عن النظام وينفذ تقييم التوثيق، ويمكنك أن تصادر بصورة اختيارية ممتلكات مثل ]الخط الفارغ: ٠١[ )الرسالة التي تظهر للمستعمل( و )النص الخاص بزر التثبيت( مثلاً، قد تغير عنوان التراجع إلى " الباس المستخدم " بدلاً من كلمة السر.
let context = LAContext()
context.localizedFallbackTitle = "Use Passcode"
3 - التحقق من توافر المواد الحيوية
وقبل أن تدفع المستعمل، ينبغي أن تتحقق مما إذا كان يمكن تقييم السياسة المختارة، وهذا الشيك ضروري لتجنب الفشل المفاجئ الذي يمكن أن يخلط بين المستخدم، واستخدام طريقة ، وتجاوز السياسة التي تعتزم استخدامها، والطريقة تعود إلى قيمة بوليان، وإذا ما عادت ، فإن البارامتر (نقطة [FL.
var error: NSError?
let canEvaluate = context.canEvaluatePolicy(.deviceOwnerAuthentication, error: &error)
if !canEvaluate {
// Handle the error – see section on error handling below
print("Authentication not available: \(error?.localizedDescription ?? "Unknown error")")
return
}
وتشمل الأسباب المشتركة للفشل: ألا يدعم الجهاز القياس الأحيائي، أو لا توجد بصمات أو وجه مسجل، أو أن رمز المرور الخاص بالجهاز غير محدد، أو أن التطبيق لا يكون له الحق في تحديد الهوية (انظر أفضل الممارسات).
4- تقييم السياسة
وبمجرد أن تؤكدوا أن السياسة يمكن تقييمها، فإنهم يدعون ].
context.evaluatePolicy(.deviceOwnerAuthentication, localizedReason: "Authenticate to access your secure data") { success, evaluateError in
DispatchQueue.main.async {
if success {
// Authentication successful
print("User authenticated successfully")
} else {
// Authentication failed or was cancelled
print("Authentication failed: \(evaluateError?.localizedDescription ?? "Unknown error")")
}
}
}
لاحظ أن معالج الإكمال غير مضمون ليجري على الخيط الرئيسي، ويرسل دائماً تحديثات للمرافقة العامة والمنطق التالي إلى التساؤل الرئيسي، كما هو مبين أعلاه.
5 - معالجة النتائج
وعندما تنجح عملية التوثيق، يمكن أن تسمحوا بثقة بالوصول إلى المحتوى أو الإجراءات المحمية، وعندما تفشل، تحتاجون إلى تحديد السبب بتفتيش .
- .userCancel:] The user tapped “Cancel” on the biometric prompt. You might simply dismiss the login flow or retry.
- .userFallback: The user tapped the fallback button (e.g., “Enter Password”). This triggers the passcode entry if using
.deviceOwnerAuthentication, but if you only used.deviceOwnerAuthenticationWithBiometrics, no fallback occurs. In that case, you should present your own passcode entry screen. - .biometryNotAvailable: Biometry is not available on this device (e.g., missing hardware). You should switch to passcode-only authentication.
- .biometryNotEnrolled: No biometric data is enrolled. Prompt the user to set up Touch ID or Face ID in Settings.
- .biometryLockout: Too many failed attempts; the system has locked biometry. You need to fall back to the passcode. The system passcode will reset the lockout.
- .passcodeNotSet: The device has no passcode configured. The user must set a passcode for biometry to work. Display an alert directing them to Settings.
Handling each of these cases gracefully is essential for a smooth user experience. For a production app, consider centralising your authentication logic in a manager class and providing clear feedback to the user.
Complete Example with Error Handling
Below is a more complete example that demonstrates a real-world authentication flow. It checks availability, handles errors with appropriate user alerts, and provides a fallback to a custom passcode entry if the user cancels biometry.
import LocalAuthentication
import UIKit
class BiometricAuthManager {
static let shared = BiometricAuthManager()
private let context = LAContext()
func authenticate(completion: @escaping (Bool, String?) -> Void) {
var error: NSError?
context.localizedFallbackTitle = "Use Passcode"
guard context.canEvaluatePolicy(.deviceOwnerAuthentication, error: &error) else {
// Determine the reason why authentication is unavailable
let message = errorMessage(for: error)
completion(false, message)
return
}
// Possibly show a loading state
context.evaluatePolicy(.deviceOwnerAuthentication, localizedReason: "Authenticate to access your account") { success, evaluateError in
DispatchQueue.main.async {
if success {
completion(true, nil)
} else {
let message = self.errorMessage(for: evaluateError as? LAError)
completion(false, message)
}
}
}
}
private func errorMessage(for error: LAError?) -> String {
guard let error = error else {
return "Authentication could not be completed."
}
switch error.code {
case .biometryNotAvailable:
return "Biometric authentication is not available on this device."
case .biometryNotEnrolled:
return "No biometric data is enrolled. Please set up Face ID or Touch ID in Settings."
case .biometryLockout:
return "Too many failed attempts. Please use your passcode to unlock biometrics."
case .passcodeNotSet:
return "A device passcode is required to use biometric authentication."
case .userCancel:
return "Authentication cancelled by user."
case .userFallback:
return "User chose to use the passcode."
default:
return "Authentication failed: \(error.localizedDescription)"
}
}
}
ويلخص هذا الفصل منطق التوثيق ويعيد نتيجة نجاح/فشل نظيفة برسالة سهلة الاستعمال ويمكن لمراقبي وجهات نظركم أن يدعوا ويستجيبوا لذلك.
أفضل الممارسات والاعتبارات الإنتاجية
وفي حين أن المدونة المذكورة أعلاه توفر أساسا صلبا، فإن العديد من الممارسات الإضافية ستكفل تنفيذكم على نحو قوي وآمن وسهل الاستعمال.
دائماً تقدمين "التفاضة الباسكود"
وحتى إذا استخدمتم سياسة ، ينبغي أن تكونوا جاهزين لشاشة دخولكم الخاصة بنظام المرور، وقد لا يكون لدى كثير من المستعملين بيانات قياسية بيولوجية مسجلة أو قد يفضلون استخدام رمز المرور في حالات معينة، وتوصي المبادئ التوجيهية للوجه البشري بتقديم بديل واضح للمقاييس الأحيائية.
استخدام نظام الحكم المحلي الوصفي
ويظهر هذا الخيط في النظام بسرعة، وينبغي أن يكون موجزا ومحددا للإجراء الذي سيصدره المستخدم، فعلى سبيل المثال، فإن " القيد في حسابك " أفضل من " التوثيق المطلوب " .
احترام خصوصية المستعمل
لا تخزن أبدا بيانات القياس الحيوي (النموذجات الجاهزة أو خرائط الوجه) بنفسك النظام يدير بأمان هذه البيانات عن الإنكليز الآمن
اختبار على الأجهزة الحقيقية
لدى المحفز قدرات محدودة في مجال المحاكاة ذات القياس الحيوي، ويختبر دائما هوية المس وتاريخ الهوية على أيفونات وأجهزة آيباد فعلية، كما يجب أن تشمل، في مواجهة الهوية، مفتاح في ؛ وإلا فإن التطبيق سينهار عند محاولة تقييم الهوية الشخصية في الوجه.
ناولين دراجة الحياة
وإذا استخدم تطبيقك التوثيق البيولوجي لضمان دولة خلفية، فنظر في إعادة التوثيق عندما يعود التذاكر إلى الملعب، ويمكنك ملاحظة ودفع التوثيق مرة أخرى، غير أن تجنب طلب التوثيق في كثير من الأحيان - أي نمط مشترك هو اشتراط إعادة التوثيق بعد فترة انقطاع.
كومبين مع كيشاين من أجل الأمن الأقوى
ولا يتحقق التوثيق البيولوجي وحده إلا من هوية المستخدم في لحظة الشيك، أما بالنسبة للأمن المستمر (مثل تخزين الأنهار الجليدية) فيجمع بين القياسات البيولوجية مع الكين، ويستخدم صف مع أو العلمان لضمان عدم إمكانية الوصول تلقائياً إلى الأسرار المخزنة إلا بعد إجراء قياس بيولوجي ناجح.
"فالباك بعد "لوكوت
وعندما يتم تأمين القياس الحيوي بسبب العديد من المحاولات الفاشلة، يجب أن تعود إلى رمز المرور الخاص بالجهاز، وسيعيد نظام الدخول إلى نظام القياس الحيوي تلقائياً، لذا بعد دخول نظام المرور بنجاح، ستنجح المحاولات المستقبلية للمسح الحيوي مرة أخرى، ولا تحاول تجاوز هذا؛ فهو سمة أمنية لحماية الهجمات التي تشنها قوة فركية.
الاختلافات بين الهوية المسية والوجه
وعلى الرغم من أن إطار التوثيق المحلي يستخلص معظم الاختلافات، فإن هناك عدداً قليلاً من المعاني التي ينبغي أن تُراعى فيها:
- Face ID requires a tool with a TrueDepth camera.] You should check after calling to determine which biometric type is available. This allows you to adjust your UI labels and icons accordingly.
- Face ID has higher sensitivity to travel.] The user must look directly at the tool. Make sure your ] explains why the app needs Face ID.
- Alternate appearance for Face ID:] iOS 15.4 and later allow users to set up an alternate appearance (e.g., with glass or a mask). Your app does not need to do anything special; the system handles it automatically.
- Mask support with Face ID:] Recent iOS versions support unlocking with a mask using the Apple Watch. For app-level authentication, the standard Face ID prompt may still require full face recognition unless the user has opted into mask use with Apple Watch. Your app’s fallback to the passcode will cover this scenario.
معالجة الغضب العميق
وقد غطينا بإيجاز الأخطاء المشتركة، ولكن من الجدير أن نتوسع في كيفية الاستجابة لكل خطأ بطريقة سهلة الاستعمال.
| Error Code | User Feedback |
|---|---|
biometryNotAvailable | Show an alert: “Face ID / Touch ID is not available on this device. Please use your passcode.” Then offer your custom passcode screen. |
biometryNotEnrolled | Present an alert that directs the user to Settings > Face ID & Passcode (or Touch ID & Passcode). You can open Settings directly using UIApplication.openSettingsURLString. |
biometryLockout | Prompt the user to authenticate using the device passcode. The system passcode entry will reset the lockout. If you use the .deviceOwnerAuthentication policy, the system automatically handles the passcode prompt. If you used .deviceOwnerAuthenticationWithBiometrics, you must fall back to your own passcode entry or invoke the .deviceOwnerAuthentication policy again to trigger the system passcode UI. |
passcodeNotSet | Alert the user that a device passcode is required. Direct them to Settings to set one. You cannot continue until the passcode is configured. |
userCancel | Simply dismiss or return to the previous screen. Do not show an error; the user intentionally cancelled. |
userFallback | The user chose the fallback option. Present your own passcode entry screen (or rely on the system passcode if you used the combined policy). |
الأداء والقراءة
وطريقة غير متجانسة ولا تحجب الخيط الرئيسي، غير أنه يمكن دعوة معالج الإكمال إلى خيط خلفية، وإرسال تحديثات موحدة دائماً إلى السؤال الرئيسي، بالإضافة إلى تجنب إنشاء جديد لكل محاولة للتوثيق؛ وإعادة استخدام حالة إن أمكن، ولكن يكون على علم بأن السياق يمكن أن يصبح غير صحيح بعد وضع جهاز جديد للراحة.
اختبار التوثيق البيولوجي
ويمكنكم تحفيز التوثيق البيولوجي في جهاز محاكاة أجهزة التدقيق باستخدام قائمة أجهزة الموجات الصلبة، ويمكنكم، بالنسبة للتعرف على الهوية المسية، اختيار " هوية التمس " ثم " اللمس الممتص " أو " اللمسات المماطل " .
وبالإضافة إلى ذلك، يمكن استخدام خطط اختبار إكسيد لكتابة اختبارات الوحدة حول مدير التوثيق الخاص بك عن طريق السخرية من ]] الدرجة التي قدمتموها لكم تصميم شفرة الخاص بك وحقن الإعالة، وهذا يتيح لكم اختبار الخطأ في التعامل مع المنطق دون الاعتماد على المعدات الفعلية.
الموارد الخارجية
وللحصول على مزيد من القراءة والوثائق الرسمية، يرجى الرجوع إلى ما يلي:
- Apple’s Local Authentication Documentation]
- LAContext Class Reference]
- WDC 2017 - Building Apps with Face ID]
- Keychain Services and Biometric Access Control]
خاتمة
وتنفيذ التوثيق البيولوجي مع إطار التوثيق المحلي هو عملية مباشرة تعزز إلى حد كبير وضع جهاز التشغيل الإلكتروني الخاص بك، مع الحفاظ على خبرة مستخدمين سوائل، وبفحص مدى توافرها، ومعالجة الأخطاء بشكل معقول، وتوفير خيارات موثوقة للتراجع، يمكن أن تبني نظاما للتوثيق يحترم خصوصية المستعملين ويفي بالمبادئ التوجيهية الصارمة التي وضعها آبل.
تذكر أن التوثيق البيولوجي هو مجرد جزء من استراتيجية أمنية شاملة، إذ أنه يحتوي على تخزين آمن عن طريق كيشاين، وأمن الشبكة، وإدارة الدورة السليمة لتوفير أعلى مستوى من الحماية لمستعمليكم، ومع اقتسام المدونة وأفضل الممارسات في هذه المادة، فإنكم مجهزون تجهيزا جيدا لإدماج الهوية المسية والوجه في مشروعكم المقبل لنظام المعلومات البيئية.