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

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.

Configure your Android app page

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.

Configure your project page

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.

Authenticator add account screen

Ga naar het deelvenster Instellingen met behulp van de menubalk aan de rechterkant. Selecteer Apparaatregistratie onder Werk- en schoolaccounts.

Authenticator settings screen

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.

Authenticator allow access confirmation screen

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.

Device registration screen in app

App screenshot showing Microsoft sign-in page

Het apparaat bevindt zich nu in de gedeelde modus.

App screen showing shared device mode enabled

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.

Screenshot that shows the all devices pane

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.

Application configuration info screen

Volgende stappen

Meer informatie over het werken met de Microsoft Verification Library en de modus voor gedeelde apparaten op Android-apparaten: