قم بتكوين خيارات المصادقة في تطبيق Android باستخدام Microsoft Azure Active Directory B2C

توضح هذه المقالة كيف يمكنك تمكين وتخصيص وتحسين تجربة مصادقة Microsoft Azure Active Directory B2C لتطبيق Android الخاص بك.

قبل البدء، لابد من الاطلاع على المقالات التالية:

استخدام مجال مخصص

باستخدام custom domain، يمكنك وضع علامة تجارية كاملة على عنوان URL للمصادقة. من منظور المستخدم، يظل المستخدمون في المجال الخاص بك أثناء عملية المصادقة، بدلاً من إعادة توجيههم إلى اسم مجال Microsoft Azure Active Directory B2C b2clogin.com.

لإزالة كافة الإشارات إلى "b2c" في عنوان URL، يمكنك أيضاً استبدال اسم مستأجر B2C الخاص بك، contoso.onmicrosoft.com، في عنوان URL لطلب المصادقة مع معرف المستأجر GUID. على سبيل المثال، يمكنك تغيير https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/ إلى https://account.contosobank.co.uk/<tenant ID GUID>/.

لاستخدام مجال مخصص ومعرف المستأجر الخاص بك في عنوان URL للمصادقة، اتبع الإرشادات الموجودة في تمكين المجالات المخصصة. ابحث عن مكتبة مصادقة Microsoft (كائن تكوين MSAL، ثم قم بتحديث المراجع باستخدام اسم المجال المخصص ومعرف المستأجر.

يُظهر رمز Kotlin التالي كائن تكوين MSAL قبل التغيير:

val parameters = AcquireTokenParameters.Builder()
        .startAuthorizationFromActivity(activity)
        .fromAuthority("https://contoso.b2clogin.com/fabrikamb2c.contoso.com/B2C_1_susi")
        // More settings here
        .build()

b2cApp!!.acquireToken(parameters)

يُظهر رمز Kotlin التالي كائن تكوين MSAL بعد التغيير:

val parameters = AcquireTokenParameters.Builder()
        .startAuthorizationFromActivity(activity)
        .fromAuthority("https://custom.domain.com/00000000-0000-0000-0000-000000000000/B2C_1_susi")
        // More settings here
        .build()

b2cApp!!.acquireToken(parameters)

ملء اسم تسجيل الدخول مسبقًا

أثناء قيام المستخدم بتسجيل الدخول، قد يستهدف تطبيقك مستخدماً معيناً. عندما يستهدف أحد التطبيقات مستخدماً، يمكنه تحديد معلمة طلب البحث login_hint في طلب التفويض باسم تسجيل دخول المستخدم. يملأ Microsoft Azure Active Directory B2C اسم تسجيل الدخول تلقائياً، ويحتاج المستخدم إلى توفير كلمة المرور فقط.

لملء اسم تسجيل الدخول مسبقاً، قم بما يلي:

  1. لو كنت تستخدم نهجًا مخصصًا، فأضف مطالبة الإدخال المطلوبة، كما هو موضح في إعداد تسجيل الدخول المباشر.
  2. ابحث عن كائن تكوين MSAL الخاص بك، ثم أضف الطريقة withLoginHint() مع تلميح تسجيل الدخول.
val parameters = AcquireTokenParameters.Builder()
    .startAuthorizationFromActivity(activity)
    .withLoginHint("bob@contoso.com") 
    // More settings here
    .build()

b2cApp!!.acquireToken(parameters)

حدد موفر الهوية مسبقاً

إذا قمت بتكوين رحلة «sign-in» لتطبيقك من أجل تضمين الحسابات الاجتماعية، مثل Facebook أو LinkedIn أو Google، يمكنك تحديد المعلمة domain_hint. توفر معلمة الاستعلام تلميح إلى Azure AD B2C حول موفر الهوية الاجتماعية التي يجب استخدامها لـ «sign-in». على سبيل المثال، إذا حدد التطبيق domain_hint=facebook.com، ينتقل تدفق تسجيل الدخول مباشرة إلى صفحة تسجيل الدخول إلى Facebook.

لإعادة توجيه المستخدمين إلى موفر هوية خارجي، قم بما يلي:

  1. تحقق من اسم المجال لموفر الهوية الخارجي الخاص بك. لمزيد من المعلومات، راجع إعادة توجيه تسجيل الدخول إلى موفر خدمة اجتماعية.
  2. إنشاء أو استخدام كائن قائمة موجود لتخزين معلمات الاستعلام الإضافية.
  3. أضف المعلمة domain_hint مع اسم المجال المقابل إلى القائمة (على سبيل المثال، facebook.com).
  4. قم بتمرير قائمة معلمات الاستعلام الإضافية إلى أسلوب كائن تكوين MSAL withAuthorizationQueryStringParameters.
val extraQueryParameters: MutableList<Pair<String, String>> = ArrayList()
extraQueryParameters.add(Pair("domain_hint", "facebook.com"))

val parameters = AcquireTokenParameters.Builder()
    .startAuthorizationFromActivity(activity)
    .withAuthorizationQueryStringParameters(extraQueryParameters) 
    // More settings here
    .build()

b2cApp!!.acquireToken(parameters)

حدد لغة واجهة المستخدم

يتيح تخصيص اللغة في Microsoft Azure Active Directory B2C تدفق المستخدم لاستيعاب مجموعة متنوعة من اللغات لتناسب احتياجات عملائك. لمزيد من المعلومات، راجع تخصيص اللغة.

لتعيين اللغة المفضلة، قم بما يلي:

  1. تكوين تخصيص اللغة.
  2. إنشاء أو استخدام كائن قائمة موجود لتخزين معلمات الاستعلام الإضافية.
  3. أضف المعلمة ui_locales مع رمز اللغة المطابق إلى القائمة (على سبيل المثال، en-us).
  4. قم بتمرير قائمة معلمات الاستعلام الإضافية إلى أسلوب كائن تكوين MSAL withAuthorizationQueryStringParameters.
val extraQueryParameters: MutableList<Map.Entry<String, String>> = ArrayList()

val mapEntry   = object : Map.Entry<String, String> {
      override val key: String = "ui_locales"
      override val value: String = "en-us"
    }   
    
extraQueryParameters.add(mapEntry )

val parameters = AcquireTokenParameters.Builder()
    .startAuthorizationFromActivity(activity)
    .withAuthorizationQueryStringParameters(extraQueryParameters) 
    // More settings here
    .build()

b2cApp!!.acquireToken(parameters)

قم بتمرير معلمة سلسلة طلب بحث مخصصة

باستخدام النُهج المخصصة، يمكنك تمرير معلمة سلسلة طلب بحث مخصصة. من الأمثلة الجيدة على حالة الاستخدام عندما تريد تغيير محتوى الصفحة ديناميكياً.

لتمرير معلمة سلسلة طلب بحث مخصصة، قم بما يلي:

  1. تكوينعنصر ContentDefinitionParameters.
  2. إنشاء أو استخدام كائن قائمة موجود لتخزين معلمات الاستعلام الإضافية.
  3. أضف معلمة سلسلة الاستعلام المخصصة، مثل campaignId. قم بتعيين قيمة المعلمة (على سبيل المثال، germany-promotion).
  4. قم بتمرير قائمة معلمات الاستعلام الإضافية إلى أسلوب كائن تكوين MSAL withAuthorizationQueryStringParameters.
val extraQueryParameters: MutableList<Pair<String, String>> = ArrayList()
extraQueryParameters.add(Pair("campaignId", "germany-promotion"))

val parameters = AcquireTokenParameters.Builder()
    .startAuthorizationFromActivity(activity)
    .withAuthorizationQueryStringParameters(extraQueryParameters) 
    // More settings here
    .build()

b2cApp!!.acquireToken(parameters)

تمرير تلميح رمز معرف

يمكن لتطبيق الطرف المعتمد إرسال رمز ويب JSON وارد (JWT) كجزء من طلب تفويض OAuth2. الرمز المميز الوارد هو تلميح حول المستخدم أو طلب التفويض. يتحقق Microsoft Azure Active Directory B2C من صحة الرمز المميز ثم يستخرج المطالبة.

لتضمين تلميح رمز مميز للمعرف في طلب المصادقة، قم بما يلي:

  1. في سياستك المخصصة، حدد ملف تعريف تقني تلميح رمز مميز للمعرف.
  2. في التعليمات البرمجية الخاصة بك، قم بإنشاء أو الحصول على رمز مميز للمعرف، ثم قم بتعيين الرمز المميز إلى متغير (على سبيل المثال، idToken).
  3. إنشاء أو استخدام كائن قائمة موجود لتخزين معلمات الاستعلام الإضافية.
  4. أضف المعلمة id_token_hint مع المتغير المقابل الذي يخزن الرمز المميز للمعرف.
  5. قم بتمرير قائمة معلمات الاستعلام الإضافية إلى أسلوب كائن تكوين MSAL withAuthorizationQueryStringParameters.
val extraQueryParameters: MutableList<Pair<String, String>> = ArrayList()
extraQueryParameters.add(Pair("id_token_hint", idToken))

val parameters = AcquireTokenParameters.Builder()
    .startAuthorizationFromActivity(activity)
    .withAuthorizationQueryStringParameters(extraQueryParameters) 
    // More settings here
    .build()

b2cApp!!.acquireToken(parameters)

تجربة عرض الويب المضمنة

متصفحات الويب مطلوبة للمصادقة التفاعلية. بشكل افتراضي، تستخدم مكتبة MSAL عرض ويب النظام. أثناء تسجيل الدخول، تنبثق مكتبة MSAL من عرض الويب لنظام Android بواجهة مستخدم Microsoft Azure Active Directory B2C.

لمزيد من المعلومات، راجع مقالة تمكين SSO عبر التطبيقات على Android باستخدام MSAL.

بناءً على متطلباتك، يمكنك استخدام عرض الويب المضمن. توجد اختلافات في سلوك تسجيل الدخول المرئي والمفرد بين عرض الويب المضمن وعرض ويب النظام في MSAL.

لقطة شاشة توضح الفرق بين تجربة عرض الويب للنظام وتجربة عرض الويب المضمنة.

هام

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

لتغيير هذا السلوك، افتح ملف app/src/main/res/raw/auth_config_b2c.json. ثم أضف السمة authorization_user_agent بقيمة WEBVIEW. يوضح المثال التالي كيفية تغيير نوع عرض الويب إلى طريقة العرض المضمنة:

{
  "authorization_user_agent": "WEBVIEW" 
}

الخطوات التالية