Sdílet prostřednictvím


Kurz: Podpora webové záložní aplikace pro Android

Tento kurz ukazuje, jak isBrowserRequired() k chybě dochází a jak ji můžete vyřešit. Metoda isBrowserRequired() nástroje kontroluje potřebu náhradního mechanismu pro různé scénáře, kdy nativní ověřování nestačí k dokončení toku ověřování funkčním a bezpečným způsobem.

V tomto kurzu se naučíte:

  • Kontrolovat isBrowserRequired()
  • Klika isBrowserRequired()

Požadavky

Záložní webová aplikace

Pro scénáře, kdy nativní ověřování nestačí k dokončení toku ověřování uživatelů, použijte mechanismus pro použití náhradního webu.

Při inicializaci sady Android SDK zadáte typy výzvy, které vaše mobilní aplikace podporuje, například oob a heslo.

Pokud vaše klientská aplikace nemůže podporovat typ výzvy, který Microsoft Entra vyžaduje, odpověď Microsoft Entra indikuje, že klientská aplikace musí pokračovat v toku ověřování v prohlížeči. Například inicializujete sadu SDK s typem výzvy oob , ale v Centru pro správu Microsoft Entra nakonfigurujete aplikaci pomocí e-mailu s metodou ověřování hesla.

V tomto případě metoda utility isBrowserRequired() vrátí hodnotu true.

Ukázkový tok

Podívejme se na příklad toku, který se vrátí isBrowserRequired()a jak ho můžete zpracovat:

  1. V konfiguračním souboru JSON, který předáte sadě SDK během inicializace, přidejte pouze typ výzvy oob , jak ukazuje následující fragment kódu:

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

    Konfigurace native_auth_config.json má následující fragment kódu:

    {
      "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. V Centru pro správu Microsoft Entra nakonfigurujte tok uživatele tak, aby jako metodu ověřování používal e-mail s heslem.

  3. Spusťte tok registrace pomocí metody sady SDK signUp(username) . Získáte SignUpError kontrolu, která předá isBrowserRequired() kontrolu, protože Microsoft Entra očekává heslo a typ výzvy oob, ale nakonfigurovali jste sadu SDK pouze s oob.

  4. Ke kontrole a zpracování isBrowserRequired()kódu použijte následující fragment kódu:

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

    Kód označuje, že tok ověřování nejde dokončit prostřednictvím nativního ověřování a že se musí použít prohlížeč.

Chyba handle isBrowserRequired()

Pro zpracování této chyby musí klientská aplikace spustit prohlížeč a restartovat tok ověřování. Můžete toho dosáhnout pomocí metody MSAL acquireToken() (Microsoft Authentication Library).

Můžete to udělat podle následujících kroků:

  1. Pokud chcete do aplikace, kterou jste zaregistrovali dříve, přidat identifikátor URI přesměrování, použijte postup v části Přidání adresy URL pro přesměrování platformy.

  2. Pokud chcete aktualizovat konfigurační soubor klientské aplikace, použijte postup konfigurace identifikátoru URI přesměrování v konfiguraci sady SDK.

  3. K získání tokenu pomocí acquireToken() metody použijte následující fragment kódu:

    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.
        )
    } 
    

Tokeny zabezpečení, tokeny ID, přístupový token a obnovovací token, projdete nativním ověřovacím tokem stejně jako token, který získáte prostřednictvím toku delegovaného prohlížečem.