Megosztás a következőn keresztül:


Oktatóanyag: Webes tartalék támogatás androidos alkalmazásban

Ez az oktatóanyag bemutatja, hogyan isBrowserRequired() történik a hiba, és hogyan háríthatja el. A segédprogram módszer isBrowserRequired() ellenőrzi, hogy szükség van-e tartalék mechanizmusra olyan különböző helyzetekben, ahol a natív hitelesítés nem elegendő a hitelesítési folyamat funkcionális és biztonságos befejezéséhez.

Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:

  • Ellenőriz isBrowserRequired()
  • Fogantyú isBrowserRequired()

Előfeltételek

Webes tartalék

Webes tartalék mechanizmus használata olyan forgatókönyvekhez, ahol a natív hitelesítés nem elegendő a felhasználói hitelesítési folyamat befejezéséhez.

Az Android SDK inicializálásakor meg kell adnia a mobilalkalmazás által támogatott kihívástípusokat, például az oobot és a jelszót.

Ha az ügyfélalkalmazás nem tudja támogatni a Microsoft Entra által igényelt kihívástípust, a Microsoft Entra válasza azt jelzi, hogy az ügyfélalkalmazásnak folytatnia kell a böngészőben a hitelesítési folyamatot. Például inicializálja az SDK-t oob challenge típussal, de a Microsoft Entra felügyeleti központban egy jelszó-hitelesítési módszerrel konfigurálja az alkalmazást.

Ebben az esetben a segédprogram metódusa isBrowserRequired() igaz értéket ad vissza.

Mintafolyamat

Tekintsünk meg egy példafolyamatot, amely visszaadja isBrowserRequired(), és hogyan kezelheti azt:

  1. Az inicializálás során az SDK-nak átadott JSON-konfigurációs fájlban csak az oob challenge típust adja hozzá az alábbi kódrészletnek megfelelően:

    PublicClientApplication.createNativeAuthPublicClientApplication( 
        requireContext(), 
        R.raw.native_auth_config  // JSON configuration file 
    ) 
    

    A native_auth_config.json konfiguráció a következő kódrészletet tartalmazza:

    {
      "client_id" : "{Enter_the_Application_Id_Here}",
       "authorities" : [
        {
          "type": "CIAM",
          "authority_url": "https://{Enter_the_Tenant_Subdomain_Here}.ciamlogin.com/{Enter_the_Tenant_Subdomain_Here}.onmicrosoft.com/"
        }
      ],
      "challenge_types" : ["oob"],
      "logging": {
        "pii_enabled": false,
        "log_level": "INFO",
        "logcat_enabled": true
      }
    } 
    
  2. A Microsoft Entra Felügyeleti központban konfigurálja a felhasználói folyamatot úgy, hogy a jelszóval ellátott e-maileket használja hitelesítési módszerként.

  3. Regisztrációs folyamat indítása az SDK metódusával signUp(username) . A Microsoft Entra a jelszó és az oob kihívás típusának megfelelően adja át SignUpError az isBrowserRequired() ellenőrzést, de az SDK-t csak oob használatával konfigurálta.

  4. Az ellenőrzéshez és a isBrowserRequired()kezeléshez használja a következő kódrészletet:

    val actionResult = authClient.signUp( 
        username = email 
    ) 
    if (actionResult is SignUpError && actionResult.isBrowserRequired()) { 
        // Handle "browser required" error
    } 
    

    A kód azt jelzi, hogy a hitelesítési folyamat nem fejezhető be natív hitelesítéssel, és hogy böngészőt kell használni.

Handle isBrowserRequired() error

A hiba kezeléséhez az ügyfélalkalmazásnak el kell indítania egy böngészőt, és újra kell indítania a hitelesítési folyamatot. Ezt a Microsoft Authentication Library (MSAL) acquireToken() metódussal teheti meg.

Ehhez a következőket kell tennie:

  1. Ha átirányítási URI-t szeretne hozzáadni a korábban regisztrált alkalmazáshoz, kövesse a Platformátirányítási URL-cím hozzáadása című szakasz lépéseit.

  2. Az ügyfélalkalmazás konfigurációs fájljának frissítéséhez kövesse az átirányítási URI konfigurálása az SDK konfigurációjában című cikket.

  3. A következő kódrészlet használatával szerezhet be jogkivonatot a acquireToken() metódussal:

    val actionResult = authClient.signUp(
        username = email
    )
    if (actionResult is SignUpError && actionResult.isBrowserRequired()) {
        authClient.acquireToken(
            AcquireTokenParameters(
                AcquireTokenParameters.Builder()
                    .startAuthorizationFromActivity(requireActivity())
                    .withScopes(getScopes())
                    .withCallback(getAuthInteractiveCallback())
            )
            // Result will contain account and tokens retrieved through the browser.
        )
    } 
    

A biztonsági jogkivonatok, vagyis az azonosító jogkivonat, a hozzáférési jogkivonat és a frissítési jogkivonat, a natív hitelesítési folyamaton keresztüli lekérés megegyezik a böngésző által delegált folyamaton keresztül kapott jogkivonattal.