Megosztás a következőn keresztül:


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

  1. Nyissa meg a projektet az Android Studióban, vagy hozzon létre egy új projektet.

  2. 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.+'
        //...
    }
    
  3. 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:

  1. Az Android Studio projektpaneljén lépjen az app\src\main\res elemre.

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

  3. Az app\src\main\res\raw alkalmazásban hozzon létre egy új JSON-fájlt.auth_config_native_auth.json

  4. 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 
      } 
    } 
     //...
    
  5. 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.comhasználja a következőt contoso: 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.

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 
     } 
   } 
    //...
  1. logcat_enabled: Engedélyezi a tár naplózási funkcióját.
  2. 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.
  3. log_level: Ezzel eldöntheti, hogy melyik naplózási szintet szeretné engedélyezni. Az Android a következő naplószinteket támogatja:
    1. Hiba
    2. FIGYELMEZTETÉS
    3. INFÓ
    4. 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 authClientpé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ó paranccsal accountResult.
  • 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.

Következő lépés