Delen via


Modus voor gedeeld apparaat voor Android-apparaten

Frontline werknemers, zoals retail werknemers, cockpitpersoneelsleden en externe werknemers, 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 zakelijke gegevens 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 het apparaat is ingesteld in de modus gedeeld apparaat op schaal via zero-touch-inrichting. 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 u aan bij een apparaat voor de hele gebruiker via elke ondersteunde toepassing
    • Een apparaat voor de hele gebruiker afmelden via elke 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 van 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 tussen meerdere gebruikers.

    Belangrijk

    Voor Microsoft-toepassingen die ondersteuning bieden voor de modus gedeeld apparaat op Android zijn geen wijzigingen vereist en hoeft u 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 Gedeeld apparaat

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 de fabrieksinstellingen te herstellen of dat alle apps van Microsoft en andere gedeelde apparaten zijn verwijderd en opnieuw zijn geïnstalleerd.

Microsoft Intune biedt ondersteuning voor zero-touch-inrichting voor apparaten in de gedeelde Microsoft Entra-apparaatmodus. Dit betekent dat het apparaat kan worden ingesteld en ingeschreven bij Intune met minimale interactie van de frontlinemedewerker. Zie Inschrijving instellen voor apparaten in de modus gedeeld apparaat in de modus Gedeeld apparaat van Microsoft Entra als u Microsoft Intune als MDM wilt instellen.

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 dat er een wijziging is opgetreden en moeten worden verwerkt. U bent verantwoordelijk voor het controleren van de status van de gebruiker op het apparaat telkens wanneer uw app wordt gebruikt en vervolgens de gegevens van de vorige gebruiker wist. Dit geldt ook als deze opnieuw wordt geladen vanaf de achtergrond in meerdere taken. Bij wijziging van gebruiker moet u er zowel voor zorgen dat de gegevens van de vorige gebruiker worden gewist als dat alle gegevens in de cache die worden weergegeven in uw toepassing, worden verwijderd. We raden u en uw bedrijf ten zeerste aan een beoordelingsproces van de beveiliging uit te voeren na het bijwerken van uw app ter ondersteuning van de modus voor gedeelde apparaten.

De MSAL-SDK (Microsoft Authentication Library) 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 de modus Gedeeld apparaat werken alleen in de modus met één account.

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

openbare clienttoepassing overnamemodel

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 één accountmodi en cast het toepassingsobject op de juiste manier:

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:

Modus gedeeld apparaat Persoonlijk apparaat
Accounts 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 Persoonlijke accounts en 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 gedeelde apparaten detecteren

Het detecteren van de modus gedeeld apparaat 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 'registratiefunctie' hebben, die niet geschikt is voor een frontlinemedewerker, 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 isSharedDevice API in de IPublicClientApplication om te bepalen of een app actief is op een apparaat dat zich in de modus voor gedeeld apparaten bevindt.

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

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

Ga naar de aangemelde gebruiker en stel vast of een 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 API gebruiken om een query uit te voeren op het momenteel aangemelde account op het apparaat.

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;
        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 zich 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);

Globaal afmelden als een gebruiker

De volgende code verwijder het aangemelde account verwijderd en schoont de tokens op 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. 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 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);
}

Microsoft-toepassingen die ondersteuning bieden voor de modus Gedeeld apparaat

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

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

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

Afmelden voor gedeeld apparaat en de algemene 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 records bouwt, wilt u ervoor zorgen dat wanneer de gebruiker zich afmeldt bij eerder weergegeven patiëntendossiers, wordt gewist. Uw toepassing moet worden voorbereid op gegevensprivacy en dit controleren elke keer deze op de voorgrond treedt.

Wanneer uw app MSAL gebruikt om de gebruiker af te melden bij 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 algemene levenscyclus van de app 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.

Gedeeld apparaat app levenscyclus

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