Modus voor gedeeld apparaat voor Android-apparaten

Frontlinemedewerkers zoals retailmedewerkers, flight crew members en field service workers gebruiken vaak een gedeeld mobiel apparaat om hun werk uit te voeren. Deze gedeelde apparaten kunnen beveiligingsrisico's opleveren als uw gebruikers hun wachtwoorden of pincodes, opzettelijk of niet, delen om toegang te krijgen tot klant- en bedrijfsgegevens op het gedeelde apparaat.

Met de modus Gedeeld apparaat kunt u een Android 8.0- of hoger apparaat configureren, zodat werknemers het apparaat veilig kunnen delen. Werknemers kunnen zich eenmaal aanmelden en eenmalige aanmelding (SSO) krijgen voor alle apps die deze functie ondersteunen, zodat ze sneller toegang krijgen tot informatie. Wanneer werknemers zich afmelden na het voltooien van hun dienst of taak, worden ze automatisch afgemeld bij het apparaat en alle ondersteunde toepassingen, zodat het apparaat klaar is voor de volgende gebruiker.

Als u wilt profiteren van de functie Modus Gedeeld apparaat, werken app-ontwikkelaars en cloudapparaatbeheerders samen:

  1. Apparaatbeheerders bereiden het apparaat voor om handmatig te worden gedeeld of met behulp van een MDM-provider (Mobile Device Management), zoals Microsoft Intune. De voorkeursoptie is het gebruik van een MDM, omdat hiermee het apparaat op grote schaal in de gedeelde apparaatmodus kan worden ingesteld via zero-touchconfiguratie. De MDM pusht de Microsoft Authenticator-app naar de apparaten en schakelt 'Gedeelde modus' voor elk apparaat in via een beheerde configuratie-update naar het apparaat. Deze instelling voor de gedeelde modus wijzigt het gedrag van de ondersteunde apps op het apparaat. Met deze configuratie van de MDM-provider wordt de modus gedeeld apparaat voor het apparaat ingesteld en wordt registratie van gedeelde apparaten geactiveerd met behulp van de Authenticator-app.

  2. Toepassingsontwikkelaars schrijven een app met één account (apps met meerdere accounts worden niet ondersteund in de modus voor gedeelde apparaten) om het volgende scenario af te handelen:

    • Meld een gebruiker apparaatbreed aan via een ondersteunde toepassing
    • Een gebruiker op apparaatniveau afmelden via een ondersteunde toepassing
    • De status van het apparaat opvragen om te bepalen of uw toepassing zich op een apparaat bevindt dat zich in de modus gedeeld apparaat bevindt
    • Voer een query uit op de apparaatstatus van de gebruiker om wijzigingen in uw toepassing te bepalen sinds het laatste gebruik

    Ondersteuning voor de modus voor gedeelde apparaten moet worden beschouwd als een functie-upgrade voor uw toepassing en kan helpen bij het verhogen van de acceptatie in omgevingen waarin hetzelfde apparaat wordt gebruikt voor meerdere gebruikers.

    Important

    Microsoft toepassingen die ondersteuning bieden voor de modus gedeeld apparaat op Android, hoeven geen wijzigingen te worden aangebracht en hoeven alleen op het apparaat te worden geïnstalleerd om de voordelen te krijgen die worden geleverd met de modus gedeeld apparaat.

Apparaat instellen in de modus voor gedeelde apparaten

Als u uw Android-apparaat wilt configureren ter ondersteuning van de modus gedeeld apparaat, moet android OS 8.0 of hoger worden uitgevoerd. Het apparaat moet ook worden gewist door fabrieksinstellingen terug te zetten of alle Microsoft en andere apps met gedeelde apparaten te verwijderen en opnieuw te installeren.

Microsoft Intune biedt ondersteuning voor zero-touch-inrichting voor apparaten in Microsoft Entra modus voor gedeelde apparaten. Dit betekent dat het apparaat kan worden ingesteld en ingeschreven bij Intune met minimale interactie van de frontlinemedewerker. Zie Inschrijving voor apparaten in de modus voor gedeelde apparaten van Microsoft Entra instellen om een apparaat in te stellen in de modus voor gedeelde apparaten wanneer u Microsoft Intune als MDM gebruikt.

Uw Android-toepassing wijzigen ter ondersteuning van de modus gedeeld apparaat

Uw gebruikers zijn afhankelijk van u om ervoor te zorgen dat hun gegevens niet naar een andere gebruiker worden gelekt. De volgende secties bevatten nuttige signalen om aan te geven aan uw toepassing dat er een wijziging is opgetreden en moet worden verwerkt. U bent ervoor verantwoordelijk telkens wanneer uw app wordt gebruikt te controleren welke gebruiker op het apparaat actief is en vervolgens de gegevens van de vorige gebruiker te wissen. Dit geldt ook als het opnieuw wordt geladen uit de achtergrond bij multitasking. Bij een wijziging van een gebruiker moet u ervoor zorgen dat zowel de gegevens van de vorige gebruiker worden gewist als dat alle gegevens in de cache worden weergegeven in uw toepassing worden verwijderd. We raden u en uw bedrijf ten zeerste aan een beveiligingsbeoordelingsproces uit te voeren na het bijwerken van uw app ter ondersteuning van de modus voor gedeelde apparaten.

De MICROSOFT AUTHENTICATION LIBRARY (MSAL) SDK toevoegen aan de afhankelijkheden van uw toepassing

Voeg de MSAL-bibliotheek als een afhankelijkheid toe aan uw build.gradle-bestand, bijvoorbeeld:

dependencies{
  implementation 'com.microsoft.identity.client.msal:5.+'
}

Uw app configureren om de modus voor gedeelde apparaten te gebruiken

Toepassingen die zijn geschreven met de MSAL SDK (Microsoft Authentication Library) kunnen één of meerdere accounts beheren. Raadpleeg de modus voor één account of de modus voor meerdere accounts voor meer informatie. Apps voor gedeelde apparaten werken alleen in de modus voor één account.

Als u niet van plan bent de modus voor meerdere accounts te ondersteunen, stelt u "account_mode" in op "SINGLE" in uw msal-configuratiebestand. 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 configuratiebestand:

{
  "client_id": "Client ID after app registration at https://aka.ms/MobileAppReg",
  "authorization_user_agent": "WEBVIEW",
  "redirect_uri": "Redirect URI after app registration at https://aka.ms/MobileAppReg",
  "account_mode": "SINGLE",
  "broker_redirect_uri_registered": true,
  "authorities": [
    {
      "type": "AAD",
      "audience": {
        "type": "AzureADandPersonalMicrosoftAccount",
        "tenant_id": "common"
      }
    }
  ]
}

Raadpleeg de configuratiedocumentatie voor meer informatie over het instellen van het configuratiebestand.

Ondersteuning voor zowel één account als meerdere accounts

Uw app kan worden gebouwd ter ondersteuning van de uitvoering op zowel persoonlijke als gedeelde apparaten. Als uw app momenteel meerdere accounts ondersteunt en u de modus gedeelde apparaten wilt ondersteunen, voegt u ondersteuning toe voor de modus voor één account.

Mogelijk wilt u ook het gedrag van uw app wijzigen, afhankelijk van het type apparaat waarop deze wordt uitgevoerd. Gebruik ISingleAccountPublicClientApplication.isSharedDevice() om te bepalen wanneer u wilt uitvoeren in de modus voor één account.

Er zijn twee verschillende interfaces die het type apparaat vertegenwoordigen waarop uw toepassing zich bevindt. Wanneer u een toepassingsexemplaar aanvraagt bij de toepassingsfactory van MSAL wordt het juiste toepassingsobject automatisch opgegeven.

Het volgende objectmodel illustreert het type object dat u kunt ontvangen en wat dit betekent in de context van een gedeeld apparaat:

overnamemodel voor openbare clienttoepassingen

U moet een typecontrole uitvoeren en casten naar de juiste interface wanneer u uw PublicClientApplication object krijgt. De volgende code controleert op meerdere accountmodi of een enkele accountmodus en wijst het toepassingsobject op de juiste manier toe.

private IPublicClientApplication mApplication;

        // Running in personal-device mode?
        if (mApplication instanceOf IMultipleAccountPublicClientApplication) {
          IMultipleAccountPublicClientApplication multipleAccountApplication = (IMultipleAccountPublicClientApplication) mApplication;
          ...
        // Running in shared-device mode?
        } else if (mApplication instanceOf ISingleAccountPublicClientApplication) {
           ISingleAccountPublicClientApplication singleAccountApplication = (ISingleAccountPublicClientApplication) mApplication;
            ...
        }

De volgende verschillen zijn van toepassing, afhankelijk van of uw app wordt uitgevoerd op een gedeeld of persoonlijk apparaat:

Apparaat in gedeelde modus Persoonlijk apparaat
Rekeningen Eén account Meerdere accounts
Aanmelden Globaal Globaal
Afmelden Globaal Elke toepassing kan bepalen of de afmelding lokaal is voor de app.
Ondersteunde accounttypen Alleen werkaccounts Zowel persoonlijke als werkaccounts worden ondersteund

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;

PublicClientApplication.create(
    this.getApplicationCOntext(),
    R.raw.auth_config_single_account,
    new PublicClientApplication.ApplicationCreatedListener() {

        @Override
        public void onCreated(IPublicClientApplication application){
            mSingleAccountApp = (ISingleAccountPublicClientApplication)application;
        }

        @Override
        public void onError(MsalException exception){
            /*Fail to initialize PublicClientApplication */
        }
    });

Modus voor gedeeld apparaat detecteren

Het detecteren van de modus voor gedeelde apparaten is belangrijk voor uw toepassing. Veel toepassingen vereisen een wijziging in hun gebruikerservaring (UX) wanneer de toepassing wordt gebruikt op een gedeeld apparaat. Uw toepassing kan bijvoorbeeld een functie 'Registreren' hebben, die niet geschikt is voor een frontlinewerker, omdat ze waarschijnlijk al een account hebben. Mogelijk wilt u ook extra beveiliging toevoegen aan de verwerking van gegevens van uw toepassing als deze zich in de modus gedeeld apparaat bevindt.

Gebruik de isSharedDevice API in de IPublicClientApplication api om te bepalen of een app wordt uitgevoerd op een apparaat in de modus gedeeld apparaat.

In de volgende codefragmenten ziet u voorbeelden van het gebruik van de isSharedDevice API.

deviceModeTextView.setText(mSingleAccountApp.isSharedDevice() ? "Shared" : "Non-Shared");

De aangemelde gebruiker ophalen en bepalen of de gebruiker op het apparaat is gewijzigd

Een ander belangrijk onderdeel van het ondersteunen van de modus gedeeld apparaat is het bepalen van de status van de gebruiker op het apparaat en het wissen van toepassingsgegevens als een gebruiker is gewijzigd of als er helemaal geen gebruiker op het apparaat is. U bent verantwoordelijk voor het controleren of gegevens niet naar een andere gebruiker worden gelekt.

U kunt getCurrentAccountAsync de API gebruiken om het account dat momenteel op het apparaat is aangemeld, op te vragen.

Met de methode loadAccount wordt het account van de aangemelde gebruiker opgehaald. Met de methode onAccountChanged wordt bepaald of de aangemelde gebruiker is gewijzigd; als dat het geval is, wordt er opgeruimd.

private void loadAccount()
{
  mSingleAccountApp.getCurrentAccountAsync(new ISingleAccountPublicClientApplication.CurrentAccountCallback())
  {
    @Override
    public void onAccountLoaded(@Nullable IAccount activeAccount)
    {
      if (activeAccount != null)
      {
        signedInUser = activeAccount;
        final AcquireTokenSilentParameters silentParameters = new AcquireTokenSilentParameters.Builder()
                        .fromAuthority(signedInUser.getAuthority())
                        .forAccount(signedInUser)
                        .withScopes(Arrays.asList(getScopes()))
                        .withCallback(getAuthSilentCallback())
                        .build();
        mSingleAccountApp.acquireTokenSilentAsync(silentParameters);
      }
    }
    @Override
    public void onAccountChanged(@Nullable IAccount priorAccount, @Nullable Iaccount currentAccount)
    {
      if (currentAccount == null)
      {
        //Perform a cleanup task as the signed-in account changed.
        cleaUp();
      }
    }
    @Override
    public void onError(@NonNull Exception exception)
    {
        //getCurrentAccountAsync failed
    }
  }
}

Globaal aanmelden als een gebruiker

Wanneer een apparaat is geconfigureerd als een gedeeld apparaat, kan uw toepassing de signIn API aanroepen om u aan te melden bij het account. Het account is wereldwijd beschikbaar voor alle in aanmerking komende apps op het apparaat nadat de eerste app zich heeft aangemeld bij het account.

final SignInParameters signInParameters = ... /* create SignInParameters object */
mSingleAccountApp.signIn(signInParameters);

Een gebruiker wereldwijd afmelden

Met de volgende code wordt het aangemelde account verwijderd en worden tokens in de cache gewist van niet alleen de app, maar ook van het apparaat dat zich in de modus gedeeld apparaat bevindt. De gegevens uit uw toepassing worden echter niet gewist. U moet de gegevens uit uw toepassing wissen en alle gegevens in de cache wissen die uw toepassing mogelijk aan de gebruiker weergeeft.

mSingleAccountApp.signOut(new ISingleAccountPublicClientApplication.SignOutCallback() {
    @Override
    public void onSignOut() {
        // clear data from your application
    }

    @Override
    public void onError(@NonNull MsalException exception) {
        // signout failed, show error
    }
});

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 broadcast-ontvanger te registreren via de contextgeregistreerde 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);
}

Microsoft toepassingen die ondersteuning bieden voor de modus gedeeld apparaat

Deze Microsoft-toepassingen ondersteunen Microsoft Entra modus voor gedeelde apparaten:

MDM's van derden die ondersteuning bieden voor de modus gedeeld apparaat

Deze mdm-providers (Mobile Apparaatbeheer) van derden ondersteunen Microsoft Entra modus voor gedeelde apparaten:

Afmelden voor gedeelde apparaten en de algehele levenscyclus van de app

Wanneer een gebruiker zich afmeldt, moet u actie ondernemen om de privacy en gegevens van de gebruiker te beschermen. Als u bijvoorbeeld een app voor medische dossiers bouwt, wilt u ervoor zorgen dat eerder getoonde patiëntendossiers worden gewist wanneer de gebruiker zich afmeldt. Uw toepassing moet worden voorbereid op gegevensprivacy en elke keer dat deze op de voorgrond komt, controleren.

Wanneer uw app MSAL gebruikt om de gebruiker af te melden in een app die wordt uitgevoerd op een apparaat dat zich in de gedeelde modus bevindt, worden het aangemelde account en de tokens in de cache verwijderd uit zowel de app als het apparaat.

In het volgende diagram ziet u de algehele levenscyclus van apps en veelvoorkomende gebeurtenissen die kunnen optreden terwijl uw app wordt uitgevoerd. Het diagram bevat informatie over het tijdstip waarop een activiteit wordt gestart, zich aanmeldt en afmeldt bij een account, en hoe gebeurtenissen zoals onderbreken, hervatten en stoppen van de activiteit passen.

Levenscyclus van gedeelde apparaat-app

Volgende stappen 

Stel een Android-apparaat in om apps uit te voeren in de modus gedeeld apparaat en test uw app.

Modus Gedeeld apparaat voor Android-apparaten