Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
I lavoratori sul campo, ad esempio i collaboratori al dettaglio, i membri dell'equipaggio di volo e i lavoratori del servizio sul campo usano spesso un dispositivo mobile condiviso per svolgere il proprio lavoro. Questi dispositivi condivisi possono presentare rischi per la sicurezza se gli utenti condividono password o PIN, intenzionalmente o no, per accedere ai dati aziendali e dei clienti nel dispositivo condiviso.
La modalità dispositivo condiviso consente di configurare un dispositivo Android 8.0 o versione successiva in modo che i dipendenti possano condividere in modo sicuro il dispositivo. I dipendenti possono accedere una sola volta e ottenere l'accesso Single Sign-On (SSO) a tutte le app che supportano questa funzionalità, consentendo loro di accedere più rapidamente alle informazioni. Quando i dipendenti si disconnettono dopo aver completato il turno o l'attività, vengono disconnessi automaticamente dal dispositivo e da tutte le applicazioni supportate, rendendo il dispositivo pronto per l'utente successivo.
Per sfruttare i vantaggi della funzionalità Modalità dispositivo condiviso, gli sviluppatori di app e gli amministratori di dispositivi cloud interagiscono:
Gli amministratori dei dispositivi preparano il dispositivo per essere condivisi manualmente o usando un provider di gestione di dispositivi mobili (MDM) come Microsoft Intune. L'opzione preferita è utilizzare un MDM poiché consente la configurazione della modalità di dispositivo condiviso su larga scala tramite il provisioning zero-touch. L'MDM distribuisce l'app Microsoft Authenticator ai dispositivi e attiva la "Modalità condivisa" per ciascun dispositivo tramite un aggiornamento della configurazione gestita del dispositivo. Questa impostazione modalità condivisa consente di modificare il comportamento delle app supportate nel dispositivo. Questa configurazione del provider MDM imposta la modalità dispositivo condiviso per il dispositivo e attiva la registrazione del dispositivo condiviso usando l'app Authenticator.
Gli sviluppatori di applicazioni scrivono un'app con account singolo (le app con più account non sono supportate in modalità dispositivo condiviso) per gestire lo scenario seguente:
- Effettuare l'accesso di un utente nell'intero dispositivo con qualsiasi applicazione supportata
- Disconnettere un utente a livello di dispositivo tramite qualsiasi applicazione supportata
- Eseguire una query sullo stato del dispositivo per determinare se l'applicazione si trova in un dispositivo in modalità dispositivo condiviso
- Eseguire una query sullo stato del dispositivo dell'utente per determinare le modifiche apportate all'applicazione dall'ultimo utilizzo
Il supporto della modalità dispositivo condiviso deve essere considerato un aggiornamento delle funzionalità per l'applicazione e può contribuire ad aumentare l'adozione in ambienti in cui lo stesso dispositivo viene usato tra più utenti.
Importante
Microsoft applicazioni che supportano la modalità dispositivo condiviso in Android non richiedono modifiche e devono essere installate solo nel dispositivo per ottenere i vantaggi offerti dalla modalità dispositivo condiviso.
Configurare il dispositivo in modalità dispositivo condiviso
Per configurare il dispositivo Android per supportare la modalità dispositivo condiviso, deve eseguire Android OS 8.0 o versione successiva. Il dispositivo deve anche essere cancellato dal ripristino delle impostazioni predefinite o avere tutte le Microsoft e altre app abilitate per la modalità dispositivo condiviso disinstallate e reinstallate.
Microsoft Intune supporta il provisioning zero-touch per i dispositivi in modalità dispositivo condiviso di Microsoft Entra, il che significa che il dispositivo può essere configurato e registrato in Intune con un'interazione minima da parte dell'operatore in prima linea. Per configurare il dispositivo in modalità dispositivo condiviso quando si usa Microsoft Intune come MDM, vedere Configurare la registrazione per i dispositivi in Microsoft Entra modalità dispositivo condiviso.
Modificare l'applicazione Android per supportare la modalità dispositivo condiviso
I tuoi utenti contano su di te per garantire che i loro dati non vengano divulgati a un altro utente. Le sezioni seguenti forniscono segnali utili per indicare all'applicazione che si è verificata una modifica e che deve essere gestita. Sei responsabile di verificare lo stato dell'utente sul dispositivo ogni volta che la tua app viene utilizzata e quindi di eliminare i dati dell'utente precedente. Ciò include anche il caso in cui venga ricaricato in background durante il multitasking. In caso di modifica dell'utente, è necessario assicurarsi che i dati dell'utente precedente vengano cancellati e che tutti i dati memorizzati nella cache visualizzati nell'applicazione vengano rimossi. Ti consigliamo vivamente di eseguire un processo di revisione della sicurezza dopo l'aggiornamento dell'app per supportare la modalità dispositivo condiviso.
Aggiungere l'SDK Libreria di Autenticazione Microsoft (MSAL) alle dipendenze dell'applicazione
Aggiungere la libreria MSAL come dipendenza nel file build.gradle, come illustrato di seguito:
dependencies{
implementation 'com.microsoft.identity.client.msal:5.+'
}
Configurare l'app per l'uso della modalità dispositivo condiviso
Le applicazioni scritte con SDK Libreria di Autenticazione Microsoft (MSAL) possono gestire un singolo account o più account. Per informazioni dettagliate, vedere modalità con account singolo o modalità con più account. Le app in modalità dispositivo condiviso funzionano solo in modalità account singolo.
Se non intendi supportare la modalità multi-account, imposta "account_mode" su "SINGLE" nel file di configurazione di msal. Ciò garantisce che l'app ottenga sempre ISingleAccountPublicClientApplication, semplificando notevolmente l'integrazione di MSAL. Il valore predefinito di "account_mode" è "MULTIPLE", quindi è importante modificare questo valore nel file di configurazione, se si usa la modalità "single account".
Ecco un esempio del file di configurazione:
{
"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"
}
}
]
}
Per altre informazioni sulla configurazione del file di configurazione, vedere la documentazione di configurazione .
Supporto sia di account singolo che di più account
L'app può essere compilata per supportare l'esecuzione su dispositivi personali e dispositivi condivisi. Se l'app supporta attualmente più account e si vuole supportare la modalità dispositivo condiviso, aggiungere il supporto per la modalità account singolo.
È anche possibile che l'app modifichi il comportamento a seconda del tipo di dispositivo in cui è in esecuzione. Usare ISingleAccountPublicClientApplication.isSharedDevice() per determinare quando eseguire in modalità account singolo.
Esistono due interfacce diverse che rappresentano il tipo di dispositivo in cui è presente l'applicazione. Quando si richiede un'istanza dell'applicazione dalla fabbrica dell'applicazione MSAL, l'oggetto dell'applicazione corretto viene fornito automaticamente.
Il modello a oggetti seguente illustra il tipo di oggetto che è possibile ricevere e il relativo significato nel contesto di un dispositivo condiviso:
È necessario eseguire un controllo di tipo e un cast all'interfaccia appropriata quando si ottiene l'oggetto PublicClientApplication. Il codice seguente verifica la presenza di modalità più account o account singolo ed esegue il cast appropriato dell'oggetto applicazione:
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;
...
}
Le differenze seguenti si applicano a seconda che l'app sia in esecuzione in un dispositivo condiviso o personale:
| Dispositivo in modalità condivisa | Dispositivo personale | |
|---|---|---|
| Account | Account singolo | Più account |
| Accesso | Globale | Globale |
| Disconnettersi | Globale | Ogni applicazione può controllare se la disconnessione è locale per l'app. |
| Tipi di account supportati | Solo account di lavoro | Account personali e aziendali supportati |
Inizializzare l'oggetto PublicClientApplication
Se si imposta "account_mode":"SINGLE" nel file di configurazione MSAL, è possibile eseguire il cast sicuro dell'oggetto applicazione restituito come 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 */
}
});
Rilevare la modalità dispositivo condiviso
Il rilevamento della modalità dispositivo condiviso è importante per l'applicazione. Molte applicazioni richiedono una modifica dell'esperienza utente quando l'applicazione viene usata in un dispositivo condiviso. Ad esempio, l'applicazione potrebbe avere una funzionalità di "Registrazione", che non è appropriata per un lavoratore in prima linea perché probabilmente dispone già di un account. È anche possibile aggiungere sicurezza aggiuntiva alla gestione dei dati dell'applicazione se è in modalità dispositivo condiviso.
Usare l'API isSharedDevice in IPublicClientApplication per determinare se un'app è in esecuzione in un dispositivo in modalità dispositivo condiviso.
I frammenti di codice seguenti mostrano esempi di uso dell'API isSharedDevice .
deviceModeTextView.setText(mSingleAccountApp.isSharedDevice() ? "Shared" : "Non-Shared");
Ottenere l'utente connesso e determinare se un utente è stato modificato nel dispositivo
Un'altra parte importante del supporto della modalità dispositivo condiviso è determinare lo stato dell'utente nel dispositivo e cancellare i dati dell'applicazione se un utente è stato modificato o se non è presente alcun utente nel dispositivo. L'utente è responsabile di garantire che i dati non vengano persi a un altro utente.
È possibile usare l'API getCurrentAccountAsync per eseguire query sull'account attualmente connesso nel dispositivo.
Il metodo loadAccount recupera l'account dell'utente che ha eseguito l'accesso. Il metodo onAccountChanged determina se l'utente connesso è cambiato e, in tal caso, esegue la pulizia:
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
}
}
}
Connettere un utente a livello globale
Quando un dispositivo è configurato come dispositivo condiviso, l'applicazione può chiamare l'API signIn per accedere all'account. L'account sarà disponibile a livello globale per tutte le app idonee nel dispositivo dopo l'accesso della prima app all'account.
final SignInParameters signInParameters = ... /* create SignInParameters object */
mSingleAccountApp.signIn(signInParameters);
Disconnettere un utente a livello globale
Il codice seguente rimuove l'account connesso e cancella i token memorizzati nella cache non solo dall'app, ma anche dal dispositivo in modalità dispositivo condiviso. Tuttavia, non cancella i dati dall'applicazione. È necessario cancellare i dati dall'applicazione e cancellare i dati memorizzati nella cache che l'applicazione potrebbe visualizzare all'utente.
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
}
});
Ricevere la trasmissione per rilevare la disconnessione globale avviata da altre applicazioni
Per ricevere la trasmissione delle modifiche dell'account è necessario registrare un ricevitore di trasmissione. Si consiglia di registrare il ricevitore di trasmissione tramite ricevitori registrati nel contesto.
Quando viene ricevuta una trasmissione di modifiche dell'account, ottenere immediatamente l'utente connesso e determinare se un utente è cambiato nel dispositivo. Se viene rilevata una modifica, avviare la pulizia dei dati per l'account connesso in precedenza. È consigliabile arrestare correttamente le operazioni ed eseguire la pulizia dei dati.
Il frammento di codice seguente mostra come registrare un ricevitore di trasmissione.
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 applicazioni che supportano la modalità dispositivo condiviso
Queste applicazioni Microsoft supportano Microsoft Entra modalità dispositivo condiviso:
- Microsoft Teams
- Microsoft Viva Engage (in precedenza Yammer)
- Outlook
- Microsoft Power Apps
- Microsoft 365
- Microsoft Power BI per dispositivi mobili
- Microsoft Edge
- Schermata iniziale gestita
MDM di terze parti che supportano la modalità dispositivo condiviso
Questi provider di gestione dei dispositivi mobili (MDM) di terze parti supportano la modalità dispositivo condiviso di Microsoft Entra:
Disconnesso del dispositivo condiviso e ciclo di vita complessivo dell'app
Quando un utente si disconnette, è necessario intervenire per proteggere la privacy e i dati dell'utente. Ad esempio, se stai creando un'app di cartelle cliniche, devi assicurarti che quando l'utente esce dall'app, le cartelle cliniche dei pazienti visualizzate in precedenza vengano cancellate. L'applicazione deve essere preparata per la privacy dei dati e controllare ogni volta che entra in primo piano.
Quando l'app usa MSAL per disconnettere l'utente in un'app in esecuzione nel dispositivo in modalità condivisa, l'account connesso e i token memorizzati nella cache vengono rimossi sia dall'app che dal dispositivo.
Il diagramma seguente mostra il ciclo di vita generale dell'app e gli eventi comuni che possono verificarsi durante l'esecuzione dell'app. Il diagramma illustra dal momento dell'avvio di un'attività, l'accesso e la disconnessione di un account e la modalità di sospensione, ripresa e arresto dell'attività.
Passaggi successivi
Configurare un dispositivo Android per eseguire app in modalità dispositivo condiviso e testare l'app.