Oktatóanyag: Android-mobilalkalmazás előkészítése natív hitelesítéshez
Ez az oktatóanyag bemutatja, hogyan adhat hozzá natív Microsoft Authentication Library (MSAL) Natív hitelesítési SDK-t egy Android-mobilalkalmazáshoz.
Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:
- MSAL-függőségek hozzáadása.
- Konfigurációs fájl létrehozása.
- MSAL SDK-példány létrehozása.
Előfeltételek
- Ha még nem tette meg, kövesse az Android-minta (Kotlin) mobilalkalmazás bejelentkezési felhasználóinak utasításait natív hitelesítéssel , és regisztráljon egy alkalmazást a külső bérlőben. Győződjön meg arról, hogy végrehajtja a következő lépéseket:
- Alkalmazás regisztrálása.
- Nyilvános ügyfél- és natív hitelesítési folyamatok engedélyezése.
- API-engedélyek megadása.
- Felhasználói folyamat létrehozása.
- Az alkalmazás társítása a felhasználói folyamattal.
- Android-projekt. Ha nem rendelkezik Android-projektel, hozza létre.
MSAL-függőségek hozzáadása
Nyissa meg a projektet az Android Studióban, vagy hozzon létre egy új projektet.
Nyissa meg az alkalmazásait
build.gradle
, és adja hozzá a következő függőségeket: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.+' //... }
Az Android Studióban válassza a Fájlszinkronizálási>projekt és a Gradle Files lehetőséget.
Konfigurációs fájl létrehozása
A szükséges bérlőazonosítókat, például az alkalmazás (ügyfél) azonosítóját egy JSON-konfigurációs beállítással adhatja át az MSAL SDK-nak.
A következő lépésekkel hozhat létre konfigurációs fájlt:
Az Android Studio projektpaneljén lépjen az app\src\main\res elemre.
Kattintson a jobb gombbal a res elemre, és válassza az Új>könyvtár lehetőséget. Adja meg
raw
az új könyvtárnevet, és válassza az OK gombot.Az app\src\main\res\raw alkalmazásban hozzon létre egy új JSON-fájlt.
auth_config_native_auth.json
A fájlban
auth_config_native_auth.json
adja hozzá a következő MSAL-konfigurációkat:{ "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 } } //...
Cserélje le a következő helyőrzőket a Microsoft Entra felügyeleti központból beszerzett bérlői értékekre:
- Cserélje le a
Enter_the_Application_Id_Here
helyőrzőt a korábban regisztrált alkalmazás (ügyfél) azonosítójára. - Cserélje le a
Enter_the_Tenant_Subdomain_Here
könyvtár (bérlő) altartományára. Ha például a bérlő elsődleges tartománya,contoso.onmicrosoft.com
használja a következőtcontoso
: Ha nem rendelkezik a bérlő nevével, olvassa el a bérlő adatait.
A feladattípusok az értékek listája, amelyet az alkalmazás a Microsoft Entra értesítésére használ az általa támogatott hitelesítési módszerről.
- Az egyszeri pin-kóddal rendelkező regisztrációs és bejelentkezési folyamatokhoz használja
["oob"]
a következőt: . - Az e-mail-címmel és jelszóval rendelkező regisztrációs és bejelentkezési folyamatokhoz használja a következőt
["oob","password"]
: . - Az önkiszolgáló jelszó-visszaállításhoz (SSPR) használja a következőt
["oob"]
: .
További kihívástípusok.
- Cserélje le a
Nem kötelező: Naplózási konfiguráció
Kapcsolja be a naplózást az alkalmazás létrehozásakor egy naplózási visszahívás létrehozásával, hogy az SDK képes legyen a naplók kimenetére.
import com.microsoft.identity.client.Logger
fun initialize(context: Context) {
Logger.getInstance().setExternalLogger { tag, logLevel, message, containsPII ->
Logs.append("$tag $logLevel $message")
}
}
A naplózó konfigurálásához hozzá kell adnia egy szakaszt a konfigurációs fájlban: auth_config_native_auth.json
//...
{
"logging": {
"pii_enabled": false,
"log_level": "INFO",
"logcat_enabled": true
}
}
//...
- logcat_enabled: Engedélyezi a tár naplózási funkcióját.
- pii_enabled: Megadja, hogy a rendszer naplózza-e a személyes adatokat vagy szervezeti adatokat tartalmazó üzeneteket. Ha hamis értékre van állítva, a naplók nem tartalmaznak személyes adatokat. Ha igaz értékre van állítva, a naplók személyes adatokat tartalmazhatnak.
- log_level: Ezzel eldöntheti, hogy melyik naplózási szintet szeretné engedélyezni. Az Android a következő naplószinteket támogatja:
- Hiba
- FIGYELMEZTETÉS
- INFÓ
- RÉSZLETES
Az MSAL naplózásáról további információt az Androidhoz készült MSAL-naplózás című témakörben talál.
Natív hitelesítésŰ MSAL SDK-példány létrehozása
onCreate()
A metódusban hozzon létre egy MSAL-példányt, hogy az alkalmazás natív hitelesítéssel végezhesse el a hitelesítést a bérlővel. A createNativeAuthPublicClientApplication()
metódus egy úgynevezett authClient
példányt ad vissza. Adja át a korábban paraméterként létrehozott JSON-konfigurációs fájlt.
//...
authClient = PublicClientApplication.createNativeAuthPublicClientApplication(
this,
R.raw.auth_config_native_auth
)
//...
A kódnak az alábbi kódrészlethez hasonlónak kell lennie:
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"
}
}
- A gyorsítótárazott fiók lekérése az
getCurrentAccount()
objektumot visszaadó paranccsalaccountResult
. - Ha egy fiók állandóságban található, akkor a bejelentkezés állapotának megjelenítésére használható
GetAccountResult.AccountFound
. - Ellenkező esetben a kijelentkezés állapotának megjelenítésére használható
GetAccountResult.NoAccountFound
.
Győződjön meg arról, hogy tartalmazza az importálási utasításokat. Az Android Studiónak automatikusan tartalmaznia kell az importálási utasításokat.