Share via


Zelfstudie: Uw mobiele Android-app voorbereiden op systeemeigen verificatie

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.

Vereisten

MSAL-afhankelijkheden toevoegen

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

  2. Open de toepassing build.gradle 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 Het File Sync-project>met Gradle Files.

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. Ga in het projectdeelvenster van Android Studio naar app\src\main\res.

  2. Klik met de rechtermuisknop op res en selecteer Nieuwe>map. Voer raw de naam van de nieuwe map in en selecteer OK.

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

  4. Voeg in het auth_config_native_auth.json bestand 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 Enter_the_Application_Id_Here tijdelijke aanduiding door de toepassings-id (client) van de app die u eerder hebt geregistreerd.
    • Vervang het 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, leest u de details van uw tenant.

    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 voor aanmeldings- en aanmeldingsstromen met eenmalige wachtwoordcode ["oob"]voor e-mail.
    • Gebruik ["oob","password"]voor aanmeldings- en aanmeldingsstromen met e-mail en wachtwoord.
    • Gebruik voor selfservice voor wachtwoordherstel (SSPR).["oob"]

    Meer informatie over uitdagingstypen.

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")
        }
    }

Als u de logboekregistratie wilt configureren, moet u een sectie toevoegen in het configuratiebestand: auth_config_native_auth.json

    //...
   { 
     "logging": { 
       "pii_enabled": false, 
       "log_level": "INFO", 
       "logcat_enabled": true 
     } 
   } 
    //...
  1. logcat_enabled: hiermee schakelt u de functionaliteit voor logboekregistratie 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. WARNING
    3. INFO
    4. VERBOSE

Zie Logboekregistratie in MSAL voor Android voor meer informatie over MSAL-logboekregistratie.

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 createNativeAuthPublicClientApplication() methode 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(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" 
        } 
    } 
  • 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 deze om de status Aangemeld weer te geven GetAccountResult.AccountFound .
  • GetAccountResult.NoAccountFound Gebruik anders 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