Freigeben über


Tutorial: Vorbereiten Ihrer mobilen Android-App für die native Authentifizierung

In diesem Tutorial wird veranschaulicht, wie Sie einer mobilen Android-App das Microsoft Authentication Library (MSAL)-SDK für die native Authentifizierung hinzufügen.

In diesem Tutorial lernen Sie Folgendes:

  • Hinzufügen von MSAL-Abhängigkeiten
  • Erstellen Sie eine Konfigurationsdatei.
  • Erstellen der MSAL-SDK-Instanz

Voraussetzungen

  • Falls noch nicht geschehen, folgen Sie den Anweisungen in Anmelden von Benutzern in einer mobilen Android-Beispiel-App (Kotlin) mithilfe der nativen Authentifizierung, und registrieren Sie eine App in Ihrem externen Mandanten. Führen Sie unbedingt die folgenden Schritte aus:
    • Registrieren einer Anwendung.
    • Aktivieren Sie öffentliche Client- und native Authentifizierungsabläufe.
    • Gewähren von API-Berechtigungen
    • Erstellen Sie einen Benutzerflow.
    • Zuordnen der Anwendung zum Benutzerflow
  • Ein Android-Projekt Wenn Sie kein Android-Projekt haben, erstellen Sie eines.

Hinzufügen von MSAL-Abhängigkeiten

  1. Öffnen Sie Ihr Projekt in Android Studio, oder erstellen Sie ein neues Projekt.

  2. Öffnen Sie das build.gradle-Element Ihrer Anwendung, und fügen Sie die folgenden Abhängigkeiten hinzu:

    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. Klicken Sie in Android Studio auf File>Sync Project with Gradle Files (Datei > Projekt mit Gradle-Dateien synchronisieren).

Erstellen einer Konfigurationsdatei

Die erforderlichen Mandantenbezeichner, wie z. B. die Anwendungs-ID (Client), werden dem MSAL-SDK über eine JSON-Konfigurationsdatei übergeben.

Führen Sie diese Schritte aus, um eine Konfigurationsdatei zu erstellen:

  1. Navigieren Sie im Projektbereich von Android Studio zu app\src\main\res.

  2. Klicken Sie mit der rechten Maustaste auf res, und wählen Sie New>Directory („Neu“ > „Verzeichnis“) aus. Geben Sie raw als neuen Verzeichnisnamen ein, und wählen Sie OK.

  3. Erstellen Sie in app\src\main\res\raw eine neue JSON-Datei namens auth_config_native_auth.json.

  4. Fügen Sie in der Datei auth_config_native_auth.json die folgenden MSAL-Konfigurationen hinzu:

    { 
      "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. Ersetzen Sie die folgenden Platzhalter durch Ihre Mandantenwerte, die Sie im Microsoft Entra Admin Center finden:

    • Ersetzen Sie Enter_the_Application_Id_Here durch die Anwendungs-ID (Client) der zuvor von Ihnen registrierten App.
    • Ersetzen Sie Enter_the_Tenant_Subdomain_Here durch die Unterdomäne des Verzeichnisses (Mandant). Wenn Ihre primäre Mandantendomäne beispielsweise contoso.onmicrosoft.com lautet, verwenden Sie contoso. Wenn Sie Ihren Mandantennamen nicht kennen, erfahren Sie hier, wie Sie Ihre Mandantendetails auslesen.

    Aufforderungstypen sind Listen von Werten, die von der App verwendet werden, um Microsoft Entra über die unterstützte Authentifizierungsmethode zu benachrichtigen.

    • Verwenden Sie für Flows zur Registrierung und Anmeldung mit E-Mail-Adresse und einem Einmal-Passcode ["oob"].
    • Verwenden Sie für Flows zur Registrierung und Anmeldung mit E-Mail-Adresse und Kennwort ["oob","password"].
    • Verwenden Sie für die Self-Service-Kennwortzurücksetzung (SSPR) ["oob"].

    Erfahren Sie mehr über Aufforderungstypen.

Optional: Konfiguration der Protokollierung

Aktivieren Sie die Protokollierung bei der App-Erstellung, indem Sie einen Protokollierungsrückruf erstellen, damit das SDK Protokolle ausgeben kann.

import com.microsoft.identity.client.Logger

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

Um die Protokollierung zu konfigurieren, müssen Sie einen Abschnitt in der Konfigurationsdatei auth_config_native_auth.json hinzufügen:

    //...
   { 
     "logging": { 
       "pii_enabled": false, 
       "log_level": "INFO", 
       "logcat_enabled": true 
     } 
   } 
    //...
  1. logcat_enabled: Aktiviert die Protokollierungsfunktionalität der Bibliothek.
  2. pii_enabled: Gibt an, ob Nachrichten, die personenbezogene Daten oder Organisationsdaten enthalten, protokolliert werden. Wenn dieser Wert auf „false“ festgelegt ist, enthalten Protokolle keine personenbezogenen Daten. Ist er auf „true“ festgelegt, können die Protokolle personenbezogene Daten enthalten.
  3. log_level: Wird verwendet, um zu entscheiden, welche Protokollebene aktiviert werden soll. Android unterstützt die folgenden Protokollebenen:
    1. FEHLER
    2. WARNING
    3. INFO
    4. VERBOSE

Weitere Informationen zur MSAL-Protokollierung finden Sie unter Protokollierung in MSAL für Android.

Erstellen der MSAL-SDK-Instanz für die native Authentifizierung

Erstellen Sie in der onCreate()-Methode eine MSAL-Instanz, damit die App die Authentifizierung bei Ihrem Mandanten über die native Authentifizierung durchführen kann. Die createNativeAuthPublicClientApplication()-Methode gibt eine Instanz mit der Bezeichnung authClient zurück. Übergeben Sie die zuvor erstellte JSON-Konfigurationsdatei als Parameter.

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

Ihr Code sollte in etwa wie folgt aussehen:

    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(accountState: 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" 
        } 
    } 
  • Rufen Sie das zwischengespeicherte Konto mithilfe der getCurrentAccount()-Methode ab, die das accountResult-Objekt zurückgibt.
  • Wenn ein Konto gefunden wurde, verwenden Sie GetAccountResult.AccountFound, um den Anmeldestatus anzuzeigen.
  • Verwenden Sie andernfalls GetAccountResult.NoAccountFound, um den Abmeldestatus anzuzeigen.

Stellen Sie sicher, dass Sie die Importanweisungen hinzufügen. Android Studio sollte die Importanweisungen automatisch enthalten.

Nächster Schritt