Sdílet prostřednictvím


Kurz: Příprava mobilní aplikace pro Android na nativní ověřování

Tento kurz ukazuje, jak do mobilní aplikace pro Android přidat nativní sadu SDK pro ověřování Microsoft Authentication Library (MSAL).

V tomto kurzu se naučíte:

  • Přidejte závislosti MSAL.
  • Vytvořte konfigurační soubor.
  • Vytvořte instanci sady MSAL SDK.

Požadavky

  • Pokud jste to ještě neudělali, postupujte podle pokynů v ukázkové mobilní aplikaci Pro Android (Kotlin) pomocí nativního ověřování a zaregistrujte aplikaci ve vašem externím tenantovi. Ujistěte se, že jste dokončili následující kroky:
    • Zaregistrujte aplikaci.
    • Povolte veřejné klienty a nativní toky ověřování.
    • Udělení oprávnění rozhraní API
    • Vytvoření toku uživatele
    • Přidružte aplikaci k toku uživatele.
  • Projekt Pro Android. Pokud projekt Pro Android nemáte, vytvořte ho.

Přidání závislostí MSAL

  1. Otevřete projekt v Android Studiu nebo vytvořte nový projekt.

  2. Otevřete aplikaci build.gradle a přidejte následující závislosti:

    allprojects {
        repositories {
            //Needed for com.microsoft.device.display:display-mask library
            maven {
                url 'https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1'
                name 'Duo-SDK-Feed'
            }
            mavenCentral()
            google()
        }
    }
    //...
    
    dependencies { 
        implementation 'com.microsoft.identity.client:msal:5.+'
        //...
    }
    
  3. V Android Studiu vyberte Projekt synchronizace souborů>se soubory Gradle.

Vytvoření konfiguračního souboru

Požadované identifikátory tenanta, jako je ID aplikace (klienta), předáte sadě MSAL SDK prostřednictvím nastavení konfigurace JSON.

K vytvoření konfiguračního souboru použijte tento postup:

  1. V podokně projektu Android Studia přejděte na app\src\main\res.

  2. Klikněte pravým tlačítkem myši na možnost Res a vyberte Nový>adresář. Zadejte raw jako název nového adresáře a vyberte OK.

  3. V aplikaci\src\main\res\raw vytvořte nový soubor JSON s názvem auth_config_native_auth.json.

  4. auth_config_native_auth.json Do souboru přidejte následující konfigurace MSAL:

    { 
      "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 
      } 
    } 
     //...
    
  5. Nahraďte následující zástupné symboly hodnotami tenanta, které jste získali z Centra pro správu Microsoft Entra:

    • Enter_the_Application_Id_Here Zástupný symbol nahraďte ID aplikace (klienta) aplikace, kterou jste zaregistrovali dříve.
    • Enter_the_Tenant_Subdomain_Here Nahraďte subdoménou adresáře (tenanta). Pokud je například primární doména vašeho tenanta contoso.onmicrosoft.com, použijte contoso. Pokud nemáte název tenanta, přečtěte si, jak si přečíst podrobnosti o tenantovi.

    Typy výzvy jsou seznam hodnot, které aplikace používá k oznámení Microsoft Entra o metodě ověřování, kterou podporuje.

    • Pro toky registrace a přihlašování pomocí jednorázového hesla e-mailu použijte ["oob"].
    • Pro toky registrace a přihlašování pomocí e-mailu a hesla použijte ["oob","password"].
    • Pro samoobslužné resetování hesla (SSPR) použijte ["oob"].

    Přečtěte si další typy výzev.

Volitelné: Konfigurace protokolování

Zapněte protokolování při vytváření aplikace vytvořením zpětného volání protokolování, aby sada SDK mohl výstupní protokoly.

import com.microsoft.identity.client.Logger

fun initialize(context: Context) {
        Logger.getInstance().setExternalLogger { tag, logLevel, message, containsPII ->
            Logs.append("$tag $logLevel $message")
        }
    }

Pokud chcete nakonfigurovat protokolovací nástroj, musíte do konfiguračního souboru přidat oddíl: auth_config_native_auth.json

    //...
   { 
     "logging": { 
       "pii_enabled": false, 
       "log_level": "INFO", 
       "logcat_enabled": true 
     } 
   } 
    //...
  1. logcat_enabled: Povolí funkci protokolování knihovny.
  2. pii_enabled: Určuje, jestli se protokolují zprávy obsahující osobní údaje nebo data organizace. Pokud je nastavená hodnota false, protokoly nebudou obsahovat osobní údaje. Pokud je nastavená hodnota true, můžou protokoly obsahovat osobní údaje.
  3. log_level: Použijte ho k rozhodnutí, jakou úroveň protokolování chcete povolit. Android podporuje následující úrovně protokolů:
    1. CHYBA
    2. UPOZORNĚNÍ
    3. INFO
    4. PODROBNÁ

Další informace o protokolování MSAL naleznete v tématu Protokolování v MSAL pro Android.

Vytvoření instance sady MSAL SDK nativního ověřování

onCreate() V metodě vytvořte instanci MSAL, aby aplikace mohl provádět ověřování s vaším tenantem prostřednictvím nativního ověřování. Metoda createNativeAuthPublicClientApplication() vrátí instanci s názvem authClient. Předejte konfigurační soubor JSON, který jste vytvořili dříve jako parametr.

    //...
    authClient = PublicClientApplication.createNativeAuthPublicClientApplication( 
        this, 
        R.raw.auth_config_native_auth 
    )
    //...

Váš kód by měl vypadat podobně jako v následujícím fragmentu kódu:

    class MainActivity : AppCompatActivity() { 
        private lateinit var authClient: INativeAuthPublicClientApplication 
 
        override fun onCreate(savedInstanceState: Bundle?) { 
            super.onCreate(savedInstanceState) 
            setContentView(R.layout.activity_main) 
 
            authClient = PublicClientApplication.createNativeAuthPublicClientApplication( 
                this, 
                R.raw.auth_config_native_auth 
            ) 
            getAccountState() 
        } 
 
        private fun getAccountState() {
            CoroutineScope(Dispatchers.Main).launch {
                val accountResult = authClient.getCurrentAccount()
                when (accountResult) {
                    is GetAccountResult.AccountFound -> {
                        displaySignedInState(accountResult.resultValue)
                    }
                    is GetAccountResult.NoAccountFound -> {
                        displaySignedOutState()
                    }
                }
            }
        } 
 
        private fun displaySignedInState(accountResult: AccountState) { 
            val accountName = accountResult.getAccount().username 
            val textView: TextView = findViewById(R.id.accountText) 
            textView.text = "Cached account found: $accountName" 
        } 
 
        private fun displaySignedOutState() { 
            val textView: TextView = findViewById(R.id.accountText) 
            textView.text = "No cached account found" 
        } 
    } 
  • Načtěte účet uložený v mezipaměti pomocí objektu getCurrentAccount(), který vrací objekt, accountResult.
  • Pokud se účet najde v trvalém stavu, použijte GetAccountResult.AccountFound k zobrazení stavu přihlášení.
  • V opačném případě použijte GetAccountResult.NoAccountFound k zobrazení stavu odhlášení.

Nezapomeňte zahrnout příkazy importu. Android Studio by měl automaticky obsahovat příkazy pro import.

Další krok