Sdílet prostřednictvím


Návod: Podpora záložního mechanismu pro web v aplikaci pro Android

Platí pro: Zelený kruh se symbolem bílé značky zaškrtnutí, který označuje následující obsah platí pro externí tenanty. Externí tenanti (další informace)

Tento kurz ukazuje, jak isBrowserRequired() k chybě dochází a jak ji můžete vyřešit. Metoda nástroje isBrowserRequired() 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:

  • Zkontrolovat isBrowserRequired()
  • Rukojeť isBrowserRequired()

Požadavky

Záložní web

Pro scénáře, kdy nativní ověřování nestačí k dokončení toku ověřování uživatele, 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 výzvy typu, ale v Centru pro správu Microsoft Entra nakonfigurujete aplikaci pomocí metody ověřování pomocí e-mailu a hesla.

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

Ukázkový tok

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

  1. Do souboru JSON konfigurace, který předáte sadě SDK během inicializace, přidejte pouze typ výzvy oob, jak je zobrazeno na následujícím fragmentu kódu:

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

    Konfigurace native_auth_config.json obsahuje 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živatelů, aby použil jako metodu ověření e-mail s heslem.

  3. Spusťte tok registrace pomocí metody signUp(parameters) sady SDK. Získáte SignUpError, který projde isBrowserRequired() kontrolou, protože Microsoft Entra očekává heslo a výzvu typu , ale nakonfigurovali jste svou sadu SDK pouze s oob.

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

    val parameters = NativeAuthSignUpParameters(username = email)
    val actionResult: SignUpResult = authClient.signUp(parameters)
    
    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č.

Zpracování chyby 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 (Microsoft Authentication Library acquireToken()).

Provedete to pomocí následujících kroků:

  1. Pokud chcete přidat adresu URI pro přesměrování do dříve zaregistrované aplikace, použijte postup v Přidání adresy URL pro přesměrování platformy.

  2. Pokud chcete aktualizovat konfigurační soubor klientské aplikace, postupujte podle kroků v části Konfigurace ukázkové aplikace.

  3. Pomocí následujícího fragmentu kódu získejte token pomocí metody acquireToken():

    val parameters = NativeAuthSignUpParameters(username = email)
    val actionResult: SignUpResult = authClient.signUp(parameters)
    
    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í, tedy tokeny ID, přístupové tokeny a obnovovací tokeny, které získáte prostřednictvím nativního ověřovacího toku, jsou stejné jako tokeny, které získáte prostřednictvím toku delegovaného prohlížečem.

  • Přečtěte si, jak spustit ukázkovou aplikaci pro iOS
  • Prozkoumejte referenci nativního rozhraní API pro ověřování pomocí jednorázového kódu zaslaného e-mailem .
  • Seznamte se s typy výzev .