Abilitare il Single Sign-On tra applicazioni in Android con MSAL

L'accesso Single Sign-On (SSO) consente agli utenti di immettere le proprie credenziali una sola volta e di far funzionare automaticamente tali credenziali tra le applicazioni. Migliora l'esperienza utente e migliora la sicurezza riducendo il numero di password che gli utenti devono gestire, riducendo il rischio di stanchezza delle password e vulnerabilità associate.

Il Microsoft Identity Platform e il Libreria di Autenticazione Microsoft (MSAL) consentono di abilitare l'accesso SSO tra le applicazioni. Abilitando la funzionalità Broker, è possibile estendere l'accesso SSO nell'intero dispositivo.

In questa procedura si apprenderà come configurare gli SDK (Software Development Kit) usati dall'applicazione per fornire l'accesso SSO ai clienti.

Prerequisiti

Questa procedura presuppone che tu sappia come:

Metodi di accesso SSO

Esistono due modi per le applicazioni che usano MSAL per Android per ottenere l'accesso SSO:

  • Tramite un'applicazione broker

  • Tramite il browser di sistema

    È consigliabile usare un'applicazione broker per vantaggi come l'accesso Single Sign-On a livello di dispositivo, la gestione degli account e l'accesso condizionale. Tuttavia, richiede agli utenti di scaricare applicazioni aggiuntive.

SSO tramite autenticazione negoziata

È consigliabile usare uno dei broker di autenticazione di Microsoft per partecipare all'accesso Single Sign-On a livello di dispositivo e per soddisfare i criteri di accesso condizionale dell'organizzazione. L'integrazione con un broker offre i vantaggi seguenti:

  • SSO del dispositivo
  • Accesso condizionale per:
    • Protezione delle app di Intune
    • Registrazione del dispositivo (aggiunta al luogo di lavoro)
    • Gestione dei dispositivi mobili
  • Gestione degli account a livello di dispositivo
    • via Android AccountManager e impostazioni dell’account
    • "Account aziendale" - tipo di account personalizzato

In Android, Microsoft Authentication Broker è un componente incluso nella Microsoft Authenticator, Intune Portale aziendale e Collega alle app Windows.

Il diagramma seguente illustra la relazione tra l'app, msal e i broker di autenticazione di Microsoft.

Diagramma che mostra in che modo un'applicazione è correlata a MSAL, app broker e gestione account Android.

Installazione di app che ospitano un broker

Le app di hosting broker possono essere installate dal proprietario del dispositivo dal proprio App Store (in genere Google Play Store) in qualsiasi momento. Tuttavia, alcune API (risorse) sono protette da criteri di accesso condizionale che richiedono che i dispositivi siano:

  • Registrato (connesso al posto di lavoro) e/o
  • Iscritto alla gestione dei dispositivi o
  • Registrato in Protezione delle app di Intune

Se il dispositivo con i requisiti indicati in precedenza non dispone già di un'app broker installata, MSAL indica all'utente di installarlo non appena l'app tenta di ottenere un token in modo interattivo. L'app consentirà quindi all'utente di seguire la procedura per rendere il dispositivo conforme ai criteri richiesti. Se non esiste alcun requisito per i criteri o l'utente accede con account Microsoft, l'installazione dell'app Broker non è necessaria.

Effetti dell'installazione e della disinstallazione di un broker

Quando viene installato un broker

Quando un broker viene installato in un dispositivo, tutte le successive richieste di token interattivo (chiamate a acquireToken()) vengono gestite dal broker anziché localmente da MSAL. Qualsiasi stato SSO precedentemente disponibile per MSAL non è disponibile per il broker. Di conseguenza, l'utente deve eseguire di nuovo l'autenticazione o selezionare un account dall'elenco esistente di account noti al dispositivo.

L'installazione di un broker non richiede all'utente di eseguire di nuovo l'accesso. Solo quando l'utente dovrà risolvere un MsalUiRequiredException, la richiesta successiva verrà inviata al broker. MsalUiRequiredException può essere generata per diversi motivi e deve essere risolta in modo interattivo. Per esempio:

  • L'utente ha modificato la password associata al proprio account.
  • L'account dell'utente non soddisfa più i criteri di accesso condizionale.
  • L'utente ha revocato il consenso per l'associazione dell'app al proprio account.

Più broker : se più broker sono installati in un dispositivo, MSAL identifica il broker attivo autonomamente per completare il processo di autenticazione

Quando un broker viene disinstallato

Se è installata solo un'app di hosting broker e viene rimossa, l'utente deve eseguire di nuovo l'accesso. La disinstallazione del broker attivo rimuove l'account e i token associati dal dispositivo.

Se Microsoft Authenticator, Intune Portale aziendale o Collega a Windows viene disinstallato, all'utente potrebbe essere richiesto di eseguire di nuovo l'accesso.

Integrazione con un broker

Generare un URI di reindirizzamento per un broker

È necessario registrare un URI di reindirizzamento compatibile con il broker. L'URI di reindirizzamento per il broker deve includere il nome del pacchetto dell'app e la rappresentazione con codifica Base64 della firma dell'app.

Il formato dell'URI di reindirizzamento è: msauth://<yourpackagename>/<base64urlencodedsignature>

Puoi usare keytool per generare un hash della firma con codifica Base64 usando le chiavi di firma dell'app e quindi generare l'URI di reindirizzamento usando tale hash.

Linux e macOS:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

Windows:

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

Dopo aver generato un hash della firma con keytool, usare il portale di Azure per generare l'URI di reindirizzamento:

  1. Accedi al Interfaccia di amministrazione di Microsoft Entra come almeno un amministratore di applicazioni cloud.
  2. Se si ha accesso a più tenant, usare l'icona Impostazioni nel menu in alto per passare al tenant contenente la registrazione dell'app dal menu Directory e sottoscrizioni.
  3. Vai a Entra ID>Registrazioni app.
  4. Selezionare l'applicazione e quindi selezionare Autenticazione>Aggiungi una piattaforma>Android.
  5. Nel riquadro Configura l'app Android visualizzata immettere l'hash della firma generato in precedenza e un nome pacchetto.
  6. Selezionare il pulsante Configura.

L'URI di reindirizzamento viene generato automaticamente e viene visualizzato nel campo URI di reindirizzamento del riquadro di configurazione Android.

Per ulteriori informazioni sulla firma della tua app, consulta Firma la tua app nella Guida utente di Android Studio.

Configurare MSAL per l'uso di un broker

Per usare un broker nella tua app, devi attestare che hai configurato il reindirizzamento del broker. Ad esempio, includi sia l'URI di reindirizzamento abilitato per broker sia l'indicazione che lo hai registrato, aggiungendo le impostazioni seguenti nel file di configurazione di MSAL:

"redirect_uri" : "<yourbrokerredirecturi>",
"broker_redirect_uri_registered": true

MSAL comunica con il broker in due modi:

  • Servizio associato al broker
  • Android AccountManager

MSAL usa innanzitutto il servizio associato a broker perché la chiamata a questo servizio non richiede autorizzazioni Android. Se la connessione al servizio non riesce, MSAL usa l'API AccountManager di Android. MSAL esegue questa operazione solo se all'app è già stata concessa l'autorizzazione "READ_CONTACTS" .

Se viene visualizzato MsalClientException con il codice di errore "BROKER_BIND_FAILURE", sono disponibili due opzioni:

  • Chiedere all'utente di disabilitare l'ottimizzazione dell'alimentazione per l'app Microsoft Authenticator e l'Portale aziendale di Intune.
  • Chiedere all'utente di concedere l'autorizzazione "READ_CONTACTS"

Verificare l'integrazione del broker

Potrebbe non essere immediatamente chiaro che l'integrazione del broker funziona, ma è possibile usare la procedura seguente per verificare:

  1. Nel dispositivo Android completare una richiesta usando il broker.
  2. Nelle impostazioni del dispositivo Android cercare un account appena creato corrispondente all'account con cui è stata eseguita l'autenticazione. L'account deve essere di tipo Account aziendale.

È possibile rimuovere l'account dalle impostazioni se si vuole ripetere il test.

SSO tramite il browser di sistema

Le applicazioni Android hanno la possibilità di usare WEBVIEW, il browser di sistema o le schede personalizzate di Chrome per l'esperienza utente di autenticazione. Se l'applicazione non usa l'autenticazione negoziata, deve usare il browser di sistema anziché la visualizzazione Web nativa per ottenere l'accesso SSO.

Agenti di autorizzazione

La scelta di una strategia specifica per gli agenti di autorizzazione è importante e rappresenta funzionalità aggiuntive che le app possono personalizzare. È consigliabile usare "WEBVIEW". Per altre informazioni sugli altri valori di configurazione( vedere Informazioni sul file di configurazione MSAL android.

MSAL supporta l'autorizzazione tramite un WEBVIEW o il browser di sistema. L'immagine seguente mostra come appare quando si utilizza WEBVIEW, oppure il browser di sistema con CustomTabs o senza CustomTabs:

Esempi di login MSAL

Implicazioni dell'SSO

Se l'applicazione usa una WEBVIEW strategia senza l'integrazione con l'autenticazione negoziata nell'app, gli utenti non avranno un'esperienza SSO nel dispositivo o tra app native e app Web.

Le applicazioni possono essere integrate con MSAL per usare BROWSER per autorizzare. A differenza di WEBVIEW, BROWSER condividere un file JAR di cookie con il browser di sistema predefinito, consentendo un minor numero di accessi con il Web o altre app native integrate con schede personalizzate.

Se l'applicazione usa MSAL con un broker come Microsoft Authenticator, Intune Portale aziendale o Collega a Windows, gli utenti possono avere esperienza SSO tra le applicazioni se hanno un accesso attivo con una delle app.

Note

MSAL con broker usa WebView e fornisce l'accesso SSO per tutte le applicazioni che usano la libreria MSAL e partecipano all'autenticazione negoziata. Lo stato SSO dal broker non viene esteso ad altre app che non usano MSAL.

WebView

Per usare WebView in-app, inserire la riga seguente nel codice JSON di configurazione dell'app passato a MSAL:

"authorization_user_agent" : "WEBVIEW"

Quando si usa in-app WEBVIEW, l'utente accede direttamente all'app. I token sono conservati all'interno della sandbox dell'app e non sono disponibili al di fuori dell'archivio dei cookie dell'app. Di conseguenza, l'utente non può avere esperienza SSO tra applicazioni a meno che le app non si integrano con l'app Microsoft Authenticator, Intune Portale aziendale o Collega a Windows.

Tuttavia, WEBVIEW offre la possibilità di personalizzare l'aspetto dell'interfaccia utente di accesso. Per altre informazioni su come eseguire questa personalizzazione, vedere WebView Android .

Browser

È consigliabile usare WEBVIEW, anche se è possibile usare il browser e una strategia di tabulazioni personalizzate . È possibile indicare in modo esplicito questa strategia usando la configurazione JSON seguente nel file di configurazione personalizzato:

"authorization_user_agent" : "BROWSER"

Usare questo approccio per offrire un'esperienza SSO tramite il browser del dispositivo. MSAL usa un file JAR di cookie condiviso, che consente ad altre app native o app Web di ottenere l'accesso SSO nel dispositivo usando il cookie di sessione persistente impostato da MSAL.

Euristica di selezione del browser

Poiché è impossibile che MSAL specifichi l'esatto pacchetto del browser da usare in ogni vasta gamma di telefoni Android, MSAL implementa un'euristica di selezione del browser che tenta di fornire il miglior accesso SSO tra dispositivi.

MSAL recupera principalmente il browser predefinito dalla gestione pacchetti e controlla se si trova in un elenco testato di browser sicuri. In caso contrario, MSAL ripiega sull'uso di WebView anziché avviare un altro browser non predefinito presente nell'elenco sicuro. Il browser predefinito viene scelto indipendentemente dal fatto che supporti schede browser personalizzate. Se il browser supporta schede personalizzate, MSAL avvia la scheda personalizzata. Le schede personalizzate hanno un aspetto più simile a un'app e consentono la personalizzazione dell'interfaccia WebView utente di base. Per altre informazioni, vedere Schede personalizzate in Android .

Se sul dispositivo non sono presenti pacchetti del browser, MSAL usa WebView nell'app. Se l'impostazione predefinita del dispositivo non viene modificata, lo stesso browser deve essere avviato per ogni accesso per garantire l'esperienza SSO.

Browser testati

I browser seguenti sono stati testati per verificare se reindirizzano correttamente all'oggetto "redirect_uri" specificato nel file di configurazione:

Dispositivo Browser predefinito Cromo Opera Microsoft Edge Browser UC Firefox
Nexus 4 (API 17) passaggio passaggio non applicabile non applicabile non applicabile non applicabile
Samsung S7 (API 25) pass1 passaggio passaggio passaggio fallire passaggio
Vivo (API 26) passaggio passaggio passaggio passaggio passaggio fallire
Pixel 2 (API 26) passaggio passaggio passaggio passaggio fallire passaggio
Oppo passaggio non applicabile2 non applicabile non applicabile non applicabile non applicabile
OnePlus (API 25) passaggio passaggio passaggio passaggio fallire passaggio
Nexus (API 28) passaggio passaggio passaggio passaggio fallire passaggio
MI passaggio passaggio passaggio passaggio fallire passaggio

1Il browser predefinito di Samsung è Samsung Internet.
2Il browser predefinito non può essere modificato all'interno dell'impostazione del dispositivo Oppo.

Passaggi successivi

La modalità dispositivo condiviso per i dispositivi Android consente di configurare un dispositivo Android in modo che possa essere facilmente condiviso da più dipendenti.

Per altre informazioni sulle applicazioni broker, vedere: