Delen via


Modus Gedeeld apparaat voor Android-apparaten

Frontlinemedewerkers zoals retailmedewerkers, flight crewleden en fieldservice 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 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 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 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.

    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 aan uw toepassing dat er een wijziging is opgetreden en moet 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 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 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 voor het gebruik van de modus voor gedeelde apparaten

Toepassingen die zijn geschreven met de MSAL SDK (Microsoft Authentication Library) kunnen één account of meerdere accounts beheren. Zie 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 om de modus voor meerdere accounts te ondersteunen, stelt u deze optie in "account_mode" "SINGLE" uw msal-configuratiebestand in. Dit garandeert dat uw app altijd wordt en ISingleAccountPublicClientApplicationuw MSAL-integratie aanzienlijk vereenvoudigt. 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 uw configuratiebestand.

Ondersteuning voor zowel één account als meerdere accounts

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

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

Er zijn twee verschillende interfaces die het type apparaat vertegenwoordigen waarop uw toepassing zich bevindt. Wanneer u een toepassingsexemplaren aanvraagt vanuit de toepassingsfactory van MSAL, wordt automatisch het juiste toepassingsobject 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 éé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:

Apparaat met 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 Persoonlijke en werkaccounts die worden ondersteund

Het PublicClientApplication-object initialiseren

Als u in het MSAL-configuratiebestand instelt "account_mode":"SINGLE" , 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 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 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 API gebruiken om een query uit te voeren getCurrentAccountAsync op het momenteel aangemelde account op het apparaat.

Met de loadAccount methode wordt het account van de aangemelde gebruiker opgehaald. De onAccountChanged methode bepaalt of de aangemelde gebruiker is gewijzigd en zo ja, opschonen:

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
    }
  }
}

Een gebruiker globaal aanmelden

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 globaal 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 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 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 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 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