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:
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.
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:
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:
- Microsoft Teams
- Microsoft Viva Engage (eerder Yammer)
- Outlook
- Microsoft Power Apps
- Microsoft 365
- Microsoft Power BI - Mobiel
- Microsoft Edge
- Beheerd startscherm
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.
Volgende stappen
Stel een Android-apparaat in om apps uit te voeren in de modus gedeeld apparaat en test uw app.