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
Otevřete projekt v Android Studiu nebo vytvořte nový projekt.
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.+' //... }
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:
V podokně projektu Android Studia přejděte na app\src\main\res.
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.V aplikaci\src\main\res\raw vytvořte nový soubor JSON s názvem
auth_config_native_auth.json
.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 } } //...
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 tenantacontoso.onmicrosoft.com
, použijtecontoso
. 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
}
}
//...
- logcat_enabled: Povolí funkci protokolování knihovny.
- 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.
- log_level: Použijte ho k rozhodnutí, jakou úroveň protokolování chcete povolit. Android podporuje následující úrovně protokolů:
- CHYBA
- UPOZORNĚNÍ
- INFO
- 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.