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
- Als u dat nog niet hebt gedaan, volgt u de instructies in gebruikers aanmelden in een voorbeeld van een mobiele Android-app (Kotlin) met behulp van systeemeigen verificatie en registreert u een app in uw externe tenant. Zorg ervoor dat u de volgende stappen uitvoert:
- Een toepassing registreren.
- Schakel openbare client- en systeemeigen verificatiestromen in.
- API-machtigingen verlenen.
- Maak een gebruikersstroom.
- Koppel de app aan de gebruikersstroom.
- Een Android-project. Als u geen Android-project hebt, maakt u het.
MSAL-afhankelijkheden toevoegen
Open uw project in Android Studio of maak een nieuw project.
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.+' //... }
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:
Ga in het projectdeelvenster van Android Studio naar app\src\main\res.
Klik met de rechtermuisknop op res en selecteer Nieuwe>map. Voer
raw
de naam van de nieuwe map in en selecteer OK.Maak in app\src\main\res\raw een nieuw JSON-bestand met de naam
auth_config_native_auth.json
.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 } } //...
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 iscontoso.onmicrosoft.com
, gebruikt ucontoso
. 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"]
- Vervang de
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
}
}
//...
- logcat_enabled: hiermee schakelt u de functionaliteit voor logboekregistratie van de bibliotheek in.
- 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.
- log_level: Gebruik dit om te bepalen welk niveau van logboekregistratie moet worden ingeschakeld. Android ondersteunt de volgende logboekniveaus:
- FOUT
- WARNING
- INFO
- 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.