Sdílet prostřednictvím


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

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 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

Přidání závislostí MSAL

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

  2. Otevřete ve své 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:6.+'
        //...
    }
    
  3. V Android Studio vyberte Soubor>Synchronizovat projekt s Gradle soubory.

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 na res a vyberte Nový adresář>. Zadejte raw jako název nového adresáře a vyberte OK.

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

  4. Do souboru auth_config_native_auth.json 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:

    • Zástupný symbol Enter_the_Application_Id_Here nahraďte ID aplikace (klienta), kterou jste zaregistrovali dříve.
    • Nahraďte Enter_the_Tenant_Subdomain_Here subdoménou adresáře (tenanta). Pokud je například primární doména vašeho tenanta contoso.onmicrosoft.com, použijte contoso. Pokud neznáte název svého nájemce, naučte se, jak zobrazit podrobnosti o nájemci.

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

    • Pro toky registrace a přihlašování s jednorázovým e-mailovým heslem 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"].

    Další informace o typech výzev .

Volitelné: Konfigurace protokolování

Zapněte protokolování při vytvoření aplikace vytvořením zpětného volání pro protokolování, aby mohl SDK zaznamenávat 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. VAROVÁNÍ
    3. Informace
    4. ROZVLEKLÝ

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

Vytvořte instanci balíčku MSAL SDK pro nativní ověřování

V metodě onCreate() vytvořte instanci MSAL, aby aplikace mohla 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 přidat příkazy importu. Android Studio by pro vás měl automaticky zahrnout příkazy pro import.

Další krok