Zelfstudie: De modus Gedeeld apparaat gebruiken in uw Android-toepassing
In deze zelfstudie leren Android-ontwikkelaars en Microsoft Entra-tenantbeheerders meer over de code, Authenticator-app en tenantinstellingen die nodig zijn om de modus gedeeld apparaat in te schakelen voor een Android-app.
In deze zelfstudie:
- Een codevoorbeeld downloaden
- Modus voor gedeelde apparaten inschakelen en detecteren
- Modus voor één account of modus voor meerdere accounts detecteren
- Een verandering van gebruiker detecteren en globale aanmelding en afmelding inschakelen
- Tenant instellen en de toepassing registreren
- Een Android-apparaat instellen in de modus voor gedeelde apparaten
- De voorbeeld-app uitvoeren
Vereisten
- Een Azure-account met een actief abonnement. Gratis een account maken
Ontwikkelaarsguide
Dit gedeelte van de zelfstudie biedt ontwikkelrichtlijnen voor het implementeren van de modus voor gedeelde apparaten in een Android-toepassing die gebruikmaakt van MSAL (Microsoft Authentication Library). Raadpleeg de Android-zelfstudie voor MSAL om te zien hoe u MSAL integreert met een Android-app, een gebruiker aanmeldt, Microsoft Graph aanroept, en een gebruiker afmeldt.
Het voorbeeld downloaden
Kloon de voorbeeldtoepassing vanuit GitHub. Het voorbeeld biedt de mogelijkheid om te werken in de modus voor één of meerdere accounts.
De MSAL SDK toevoegen aan uw lokale Maven-opslagplaats
Als u de voorbeeld-app niet gebruikt, voegt u als volgt de MSAL-bibliotheek als afhankelijkheid toe aan het build.gradle-bestand:
dependencies{
implementation 'com.microsoft.identity.client.msal:4.9.+'
}
Uw app configureren om de modus voor gedeelde apparaten te gebruiken
Raadpleeg de configuratiedocumentatie voor meer informatie over het instellen van het configuratiebestand.
Stel in het MSAL-configuratiebestand "shared_device_mode_supported"
in op true
.
Mogelijk bent u niet van plan om ondersteuning te bieden voor de modus voor meerdere accounts. Bijvoorbeeld omdat u geen gedeeld apparaat gebruikt, en de gebruiker zich met meer dan één account tegelijk kan aanmelden bij de app. Als dit het geval is, stelt u "account_mode"
in op "SINGLE"
. Dit zorgt ervoor dat de app altijd ISingleAccountPublicClientApplication
ontvangt, en vereenvoudigt uw MSAL-integratie aanzienlijk. De standaardwaarde "account_mode"
is "MULTIPLE"
, dus het is belangrijk om deze waarde in het configuratiebestand te wijzigen als u de modus gebruikt "single account"
.
Hier volgt een voorbeeld van het auth_config.json-bestand dat is opgenomen in de map app>main>res>raw van de voorbeeld-app:
{
"client_id": "Client ID after app registration at https://aka.ms/MobileAppReg",
"authorization_user_agent": "DEFAULT",
"redirect_uri": "Redirect URI after app registration at https://aka.ms/MobileAppReg",
"account_mode": "SINGLE",
"broker_redirect_uri_registered": true,
"shared_device_mode_supported": true,
"authorities": [
{
"type": "AAD",
"audience": {
"type": "AzureADandPersonalMicrosoftAccount",
"tenant_id": "common"
}
}
]
}
Modus voor gedeelde apparaten detecteren
De modus voor gedeelde apparaten stelt u in staat Android-apparaten te configureren zodat ze kunnen worden gedeeld door meerdere werknemers, terwijl u ook beheer op basis van Microsoft Identity voor het apparaat biedt. Werknemers kunnen zich aanmelden bij hun apparaten en snel toegang krijgen tot klantgegevens. Wanneer ze klaar zijn met hun dienst of taak, kunnen ze zich met één klik afmelden bij alle apps op het gedeelde apparaat en is het apparaat onmiddellijk klaar voor gebruik door de volgende werknemer.
Gebruik isSharedDevice()
om te bepalen of een app actief is op een apparaat dat zich in de modus voor gedeeld apparaten bevindt. Uw app kan deze vlag gebruiken om te bepalen of UX dienovereenkomstig moet worden gewijzigd.
Hier volgt een codefragment waarin wordt weergegeven hoe u isSharedDevice()
kunt gebruiken. Het is afkomstig uit de klasse SingleAccountModeFragment
in de voorbeeld-app:
deviceModeTextView.setText(mSingleAccountApp.isSharedDevice() ? "Shared" : "Non-Shared");
Het PublicClientApplication-object initialiseren
Als u "account_mode":"SINGLE"
instelt in het MSAL-configuratiebestand, kunt u het geretourneerde toepassingsobject veilig casten als een ISingleAccountPublicCLientApplication
.
private ISingleAccountPublicClientApplication mSingleAccountApp;
/*Configure your sample app and save state for this activity*/
PublicClientApplication.create(this.getApplicationCOntext(),
R.raw.auth_config,
new PublicClientApplication.ApplicationCreatedListener(){
@Override
public void onCreated(IPublicClientApplication application){
mSingleAccountApp = (ISingleAccountPublicClientApplication)application;
loadAccount();
}
@Override
public void onError(MsalException exception){
/*Fail to initialize PublicClientApplication */
}
});
Modus voor één account versus modus voor meerdere accounts detecteren
Als u een app schrijft die alleen wordt gebruikt voor frontlinemedewerkers op een gedeeld apparaat, raden we u aan uw app te schrijven om alleen de modus voor één account te ondersteunen. Dit omvat de meeste toepassingen die zijn gericht op taken, zoals apps voor medische dossiers of voor facturen, en de meeste Line-Of-Business-apps. Dit vereenvoudigt de ontwikkeling, omdat veel functies van de SDK niet hoeven te worden aangepast.
Als uw app ondersteuning biedt voor meerdere accounts en de modus voor gedeelde apparaten, moet u een typecontrole uitvoeren en casten naar de juiste interface, zoals hieronder wordt weergegeven.
private IPublicClientApplication mApplication;
if (mApplication instanceOf IMultipleAccountPublicClientApplication) {
IMultipleAccountPublicClientApplication multipleAccountApplication = (IMultipleAccountPublicClientApplication) mApplication;
...
} else if (mApplication instanceOf ISingleAccountPublicClientApplication) {
ISingleAccountPublicClientApplication singleAccountApplication = (ISingleAccountPublicClientApplication) mApplication;
...
}
Ga naar de aangemelde gebruiker en stel vast of een gebruiker op het apparaat is gewijzigd.
Met de methode loadAccount
wordt het account opgehaald bij de aangemelde gebruiker. Met de methode onAccountChanged
wordt bepaald of de aangemelde gebruiker is gewijzigd, en zo ja, dan wordt er opgeschoond:
private void loadAccount()
{
mSingleAccountApp.getCurrentAccountAsync(new ISingleAccountPublicClientApplication.CurrentAccountCallback())
{
@Override
public void onAccountLoaded(@Nullable IAccount activeAccount)
{
if (activeAccount != null)
{
signedInUser = activeAccount;
mSingleAccountApp.acquireTokenSilentAsync(SCOPES,"http://login.microsoftonline.com/common",getAuthSilentCallback());
}
}
@Override
public void onAccountChanged(@Nullable IAccount priorAccount, @Nullable Iaccount currentAccount)
{
if (currentAccount == null)
{
//Perform a cleanup task as the signed-in account changed.
updateSingedOutUI();
}
}
@Override
public void onError(@NonNull Exception exception)
{
}
}
}
Globaal aanmelden als een gebruiker
Hieronder wordt een gebruiker op het apparaat aangemeld bij andere apps die gebruikmaken van MSAL met de Authenticator-app:
private void onSignInClicked()
{
mSingleAccountApp.signIn(getActivity(), SCOPES, null, getAuthInteractiveCallback());
}
Globaal afmelden als een gebruiker
Hieronder wordt het aangemelde account verwijderd en worden de tokens opgeschoond die zijn opgeslagen in de cache, niet alleen van de app maar ook van het apparaat dat zich in de modus voor gedeelde apparaten bevindt:
private void onSignOutClicked()
{
mSingleAccountApp.signOut(new ISingleAccountPublicClientApplication.SignOutCallback()
{
@Override
public void onSignOut()
{
updateSignedOutUI();
}
@Override
public void onError(@NonNull MsalException exception)
{
/*failed to remove account with an exception*/
}
});
}
Uitzending ontvangen om globale afmelding te detecteren die is geïnitieerd vanuit andere toepassingen
Als u de uitzending van accountwijziging wilt ontvangen, moet u een broadcast-ontvanger registreren. Het is raadzaam om uw uitzendingsontvanger te registreren via de in context geregistreerde ontvangers.
Wanneer een uitzending voor accountwijziging wordt ontvangen, haalt u onmiddellijk de aangemelde gebruiker op en bepaalt u of een gebruiker op het apparaat is gewijzigd. Als er een wijziging wordt gedetecteerd, start u het opschonen van gegevens voor een eerder aangemeld account. Het wordt aanbevolen om alle bewerkingen correct te stoppen en gegevens op te ruimen.
In het volgende codefragment ziet u hoe u een broadcast-ontvanger kunt registreren.
private static final String CURRENT_ACCOUNT_CHANGED_BROADCAST_IDENTIFIER = "com.microsoft.identity.client.sharedmode.CURRENT_ACCOUNT_CHANGED";
private BroadcastReceiver mAccountChangedBroadcastReceiver;
private void registerAccountChangeBroadcastReceiver(){
mAccountChangedBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//INVOKE YOUR PRIOR ACCOUNT CLEAN UP LOGIC HERE
}
};
IntentFilter filter = new
IntentFilter(CURRENT_ACCOUNT_CHANGED_BROADCAST_IDENTIFIER);
this.registerReceiver(mAccountChangedBroadcastReceiver, filter);
}
Beheerdershandleiding
In de volgende stappen wordt beschreven hoe u uw toepassing instelt en uw apparaat in de modus gedeeld apparaat plaatst.
Registreer de toepassing
Registreer eerst de toepassing in uw organisatietenant. Geef vervolgens onderstaande waarden op in het auth_config.json-bestand om ervoor te zorgen dat de toepassing juist wordt uitgevoerd.
Raadpleeg Uw toepassing registreren voor meer informatie over hoe u dit doet.
Notitie
Gebruik de quickstart aan de linkerkant en selecteer vervolgens Android wanneer u de app registreert. U komt nu bij een pagina waar u wordt gevraagd om de Pakketnaam en de Hash voor ondertekening op te geven voor de app. Dit is heel belangrijk om ervoor te zorgen dat de app-configuratie werkt. U ontvangt vervolgens een configuratie-object dat u kunt gebruiken voor de app, dat u kunt knippen en plakken in het auth_config.json-bestand.
Selecteer Deze wijziging voor mij aanbrengen en geef vervolgens de waarden op waarnaar in de quickstart wordt gevraagd. Wanneer dat is gebeurd, genereren we alle configuratiebestanden die u nodig hebt.
een tenant instellen
Stel voor testdoeleinden het volgende in de tenant in: minstens twee werknemers, één cloudapparaatbeheerder, en één globale beheerder. Stel de cloudapparaat-Beheer istrator in door organisatierollen te wijzigen. Open uw organisatierollen door identiteitsrollen>en beheerdersrollen>en beheerders>alle rollen te selecteren en vervolgens cloudapparaat Beheer istrator te selecteren. Voeg de gebruikers toe die een apparaat in de gedeelde modus kunnen plaatsen.
Een Android-apparaat instellen in de gedeelde modus
De Authenticator-app downloaden
Download de Microsoft Authenticator-app uit de Google Play Store. Als u de app al hebt gedownload, controleert u of deze de nieuwste versie is.
Authenticator-app-instellingen en het apparaat registreren in de cloud
Start de Authenticator-app en ga naar de hoofdaccountpagina. Zodra u de pagina Account toevoegen ziet, kunt u het apparaat gaan delen.
Ga naar het deelvenster Instellingen met behulp van de menubalk aan de rechterkant. Selecteer Apparaatregistratie onder Werk- en schoolaccounts.
Wanneer u op deze knop klikt, wordt u gevraagd toegang te verlenen tot contactpersonen van het apparaat. Dit komt door de accountintegratie van Android op het apparaat. Kies Toestaan.
De cloudapparaatbeheerder moet het e-mailadres van de organisatie invoeren onder Of registreren als een gedeeld apparaat. Vervolgens moet de beheerder op de knop Registreren als gedeeld apparaat klikken en de referenties invoeren.
Het apparaat bevindt zich nu in de gedeelde modus.
Alle aanmeldingen en afmeldingen op het apparaat zijn globaal. Dit betekent dat ze van toepassing zijn op alle apps die zijn geïntegreerd met MSAL en Microsoft Authenticator op het apparaat. U kunt nu toepassingen implementeren op het apparaat waarop functies worden gebruikt van de modus voor gedeelde apparaten.
Het gedeelde apparaat weergeven
Zodra u een apparaat in de gedeelde modus hebt geplaatst, is het bekend in de organisatie en wordt het bijgehouden in de organisatietenant. U kunt uw gedeelde apparaten bekijken door naar het jointype te kijken.
De voorbeeld-app uitvoeren
De voorbeeldtoepassing is een eenvoudige app waarmee de Graph API van uw organisatie wordt aangeroepen. Bij de eerste uitvoering wordt u gevraagd toestemming te geven omdat de toepassing nieuw is voor uw werknemersaccount.
Volgende stappen
Meer informatie over het werken met de Microsoft Verification Library en de modus voor gedeelde apparaten op Android-apparaten:
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor