Delen via


Zelfstudie: Uw mobiele Android-app voorbereiden op systeemeigen verificatie

Van toepassing op: Witte cirkel met een grijs X-symbool. Workforce-tenants Groene cirkel met een wit vinkje. Externe tenants (meer informatie)

Deze zelfstudie laat zien hoe u de systeemeigen VERIFICATIE-SDK (Microsoft Authentication Library) (MSAL) toevoegt aan een mobiele Android-app.

In deze zelfstudie leert u het volgende:

  • MSAL-afhankelijkheden toevoegen.
  • Maak een configuratiebestand.
  • Maak een MSAL SDK-exemplaar.

Voorwaarden

MSAL-afhankelijkheden toevoegen

  1. Open uw project in Android Studio of maak een nieuw project.

  2. Open de build.gradle van uw toepassing en voeg de volgende afhankelijkheden toe:

    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. Selecteer in Android Studio Bestand>Synchroniseer project met Gradle-bestanden.

Een configuratiebestand maken

U geeft de vereiste tenant-id's, zoals de toepassings-id (client), door aan de MSAL SDK via een JSON-configuratie-instelling.

Gebruik deze stappen om een configuratiebestand te maken:

  1. Navigeer in het projectvenster van Android Studio naar app\src\main\res.

  2. Klik met de rechtermuisknop op res en selecteer nieuwe>Directory. Voer raw in als de nieuwe mapnaam en selecteer OK-.

  3. Maak in app\src\main\res\raween nieuw JSON-bestand met de naam auth_config_native_auth.json.

  4. Voeg in het bestand auth_config_native_auth.json de volgende MSAL-configuraties toe:

    { 
      "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. Vervang de volgende tijdelijke aanduidingen door uw tenantwaarden die u hebt verkregen via het Microsoft Entra-beheercentrum:

    • Vervang de tijdelijke aanduiding Enter_the_Application_Id_Here door de toepassings-id (client) van de app die u eerder hebt geregistreerd.
    • Vervang de Enter_the_Tenant_Subdomain_Here door het subdomein map (tenant). Als uw primaire tenantdomein bijvoorbeeld is contoso.onmicrosoft.com, gebruikt u contoso. Als u uw tenantnaam niet hebt, leert u hoe u uw tenantgegevens kunt lezen.

    De uitdagingstypen zijn een lijst met waarden die door de app worden gebruikt om Microsoft Entra op de hoogte te stellen van de verificatiemethode die wordt ondersteund.

    • Gebruik ["oob"]voor aanmeldings- en aanmeldingsstromen met eenmalige wachtwoordcode voor e-mail.
    • Gebruik ["oob","password"]voor aanmeldings- en aanmeldingsstromen met e-mail en wachtwoord.
    • Gebruik ["oob"]voor zelfbediend wachtwoordherstel (SSPR).

    Lees meer over uitdagingtypes.

Optioneel: Configuratie van logboekregistratie

Schakel logboekregistratie in bij het maken van apps door een callback voor logboekregistratie te maken, zodat de SDK logboeken kan uitvoeren.

import com.microsoft.identity.client.Logger

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

Om het logboek te configureren, moet u een sectie in het configuratiebestand toevoegen auth_config_native_auth.json:

    //...
   { 
     "logging": { 
       "pii_enabled": false, 
       "log_level": "INFO", 
       "logcat_enabled": true 
     } 
   } 
    //...
  1. logcat_enabled: Hiermee schakelt u de logfunctionaliteit van de bibliotheek in.
  2. pii_enabled: hiermee geeft u op of berichten met persoonlijke gegevens of organisatiegegevens worden geregistreerd. Wanneer deze is ingesteld op onwaar, bevatten logboeken geen persoonlijke gegevens. Als deze waarde is ingesteld op waar, kunnen de logboeken persoonlijke gegevens bevatten.
  3. log_level: gebruik dit om te bepalen welk niveau van logboekregistratie moet worden ingeschakeld. Android ondersteunt de volgende logboekniveaus:
    1. FOUT
    2. WAARSCHUWING
    3. INFO
    4. LANGDRADIG

Voor meer informatie over MSAL-logboeken, zie Logboeken in MSAL voor Android.

Een MSAL SDK-exemplaar voor systeemeigen verificatie maken

Maak in de onCreate() methode een MSAL-exemplaar, zodat de app verificatie met uw tenant kan uitvoeren via systeemeigen verificatie. De methode createNativeAuthPublicClientApplication() retourneert een exemplaar met de naam authClient. Geef het JSON-configuratiebestand door dat u eerder hebt gemaakt als parameter.

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

Uw code moet er ongeveer uitzien als het volgende codefragment:

    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" 
        } 
    } 
  • Haal het account in de cache op met behulp van de getCurrentAccount(), die een object retourneert, accountResult.
  • Als er een account in persistentie is gevonden, gebruikt u GetAccountResult.AccountFound om een aangemelde status weer te geven.
  • Gebruik anders GetAccountResult.NoAccountFound om een afgemelde status weer te geven.

Zorg ervoor dat u de importinstructies opneemt. Android Studio moet automatisch de importinstructies voor u bevatten.

Volgende stap