المصادقة باستخدام كلمات المرور

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

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

المتطلبات الأساسية

تعمل ميزة تنفيذ كلمات المرور في Credential Manager على الأجهزة التي تعمل بالإصدار 4.4 (المستوى 19 من واجهة برمجة التطبيقات) من نظام التشغيل Android والإصدارات الأحدث.

نظرة عامة

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

  • إضافة التبعيات إلى تطبيقك: أضِف مكتبات Credential Manager المطلوبة.
  • إنشاء مثيل لـ Credential Manager: أنشئ مثيلاً لـ Credential Manager.
  • حفظ كلمة مرور المستخدم: تخزين بيانات اعتماد المستخدم بأمان
  • تسجيل الدخول باستخدام كلمة مرور: استرداد بيانات الاعتماد المخزّنة واستخدامها لتسجيل الدخول
  • تحديد الحقول التي يجب استخدام ميزة "الملء التلقائي" فيها: استخدِم ميزة "الملء التلقائي" لتحسين تجربة المستخدم.
  • إضافة إمكانية استخدام روابط تنقل إلى مواد عرض رقمية: أضِف إمكانية مشاركة كلمات المرور بين التطبيقات والمواقع الإلكترونية المرتبطة.

إضافة التبعيات إلى تطبيقك

أضِف الاعتماديات التالية إلى ملف build.gradle الخاص بوحدة تطبيقك:

Kotlin

dependencies {
    implementation("androidx.credentials:credentials:1.7.0-alpha02")
}

Groovy

dependencies {
    implementation "androidx.credentials:credentials:1.7.0-alpha02"
}

إنشاء مثيل لـ Credential Manager

استخدِم سياق تطبيقك أو نشاطك لإنشاء عنصر CredentialManager.

// Use your app or activity context to instantiate a client instance of
// CredentialManager.
private val credentialManager = CredentialManager.create(context)

حفظ كلمة مرور مستخدم

عندما يسجّل المستخدم اشتراكه أو يغيّر كلمة المرور بنجاح في تطبيقك، احفظ بيانات الاعتماد هذه في مدير كلمات المرور.

  1. إنشاء طلب كلمة مرور: يحتوي العنصر CreatePasswordRequest على اسم المستخدم وكلمة المرور المطلوب حفظهما. اتّصِل بالرقم credentialManager.createCredential() لبدء عملية الحفظ.

  2. التعامل مع الرد: عالِج CreatePasswordResponse وأدِر أي أخطاء (على سبيل المثال، إذا ألغى المستخدم الطلب).

suspend fun registerPassword(username: String, password: String) {
    // Initialize a CreatePasswordRequest object.
    val createPasswordRequest =
        CreatePasswordRequest(id = username, password = password)

    // Create credential and handle result.
    coroutineScope {
        try {
            val result =
                credentialManager.createCredential(
                    // Use an activity based context to avoid undefined
                    // system UI launching behavior.
                    activityContext,
                    createPasswordRequest
                )
            // Handle register password result
        } catch (e: CreateCredentialException) {
            handleFailure(e)
        }
    }
}

تسجيل الدخول باستخدام كلمة مرور

لاسترداد بيانات الاعتماد المحفوظة، أنشئ GetCredentialRequest باستخدام GetPasswordOption واستدعِ getCredential(). لفلترة كلمات المرور التي يتم استرجاعها استنادًا إلى معرّفات المستخدمين المحدّدة، استخدِم الحقل الاختياري allowedUserIds.

val getPasswordOption = GetPasswordOption()

val credentialRequest = GetCredentialRequest.Builder()
    .addCredentialOption(getPasswordOption)
    .build()

تحديد الحقول التي يجب استخدام ميزة "الملء التلقائي" فيها

تساعد السمة android:isCredential مقدّمي بيانات الاعتماد في تحديد الحقول المخصّصة للملء التلقائي، ما يؤدي إلى توفير تجربة مستخدم أكثر سلاسة. تكمّل هذه السمة autofillHints الحالية.

تشمل مزايا تحديد حقول معيّنة لتكون مخصّصة للملء التلقائي ما يلي:

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

أدرِج السمة isCredential في حقول اسم المستخدم وكلمة المرور كما هو موضّح في المثال التالي:

<EditText
    android:id="@+id/username_edittext"
    android:autofillHints="username"
    android:isCredential="true" />

<EditText
    android:id="@+id/password_edittext"
    android:inputType="textPassword"
    android:autofillHints="password"
    android:isCredential="true" />

بدلاً من ذلك، أضِف السمة آليًا كما هو موضّح في المقتطف التالي:

if (android.os.Build.VERSION.SDK_INT >=
    android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { // Android 14
    usernameEditText.isCredential = true
    passwordEditText.isCredential = true
}

لضمان التوافق مع خدمات إدارة كلمات المرور، عليك ضبط Digital Asset Links بين تطبيقك وموقعك الإلكتروني. يتيح ذلك مشاركة بيانات الاعتماد بشكل آمن على كلتا المنصّتَين.