Abilitare l'accesso Single Sign-On tra app in Android con MSAL

Single Sign-On (SSO) consente agli utenti di immettere le credenziali una sola volta e di usare automaticamente tali credenziali tra le applicazioni.

Microsoft Identity Platform e Microsoft Authentication Library (MSAL) consentono di abilitare l'accesso Single Sign-On tra le proprie app. Con la funzionalità broker e le applicazioni Authenticator, è possibile estendere l'accesso SSO nell'intero dispositivo.

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

Prerequisiti

Questa procedura presuppone che tu sappia come:

  • Effettuare il provisioning dell'app. Per altre informazioni, vedere le istruzioni per la creazione di un'app nell'esercitazione su Android
  • Integrare l'applicazione con MSAL per Android

Metodi per l'accesso Single Sign-On

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:

  • Device SSO
  • Accesso condizionale per:
    • Protezione app di Intune
    • Registrazione del dispositivo (aggiunta all'area di lavoro)
    • Gestione dei dispositivi mobili
  • Gestione degli account a livello di dispositivo
    • via Android AccountManager & Account Impostazioni
    • "Account aziendale" - tipo di account personalizzato

In Android, Microsoft Authentication Broker è un componente incluso nelle app Microsoft Authenticator e Portale aziendale Intune.

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

Diagram showing how an application relates to MSAL, broker apps, and the Android account manager.

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 (aggiunto all'area di lavoro) e/o
  • Registrato in Gestione dispositivi o
  • Registrazione in Protezione app di Intune

Se un dispositivo 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 dovrà quindi guidare l'utente attraverso i passaggi per rendere il dispositivo conforme ai criteri richiesti.

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 deve risolvere una MsalUiRequiredException richiesta verrà inviata al broker. MsalUiRequiredException può essere generata per diversi motivi e deve essere risolta in modo interattivo. Ad 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, il broker installato per primo è sempre il broker attivo. Solo un singolo broker può essere attivo in un dispositivo.

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 Portale aziendale Intune è installato e funziona come broker attivo e viene installato anche Microsoft Authenticator, se il Portale aziendale Intune (broker attivo) viene disinstallato, l'utente dovrà eseguire di nuovo l'accesso. Una volta eseguito di nuovo l'accesso, l'app Microsoft Authenticator diventa il broker attivo.

Integrazione con un broker

Generare un URI di reindirizzamento per un broker

Suggerimento

I passaggi descritti in questo articolo possono variare leggermente in base al portale da cui si inizia.

È 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. Accedere all'interfaccia di amministrazione di Microsoft Entra come almeno un'applicazione cloud Amministrazione istrator.
  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. Passare a Applicazioni> di identità>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 altre informazioni sulla firma dell'app, vedere Accedere all'app nella Guida per l'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, includere l'URI di reindirizzamento abilitato per il broker e indicare che è stato registrato, includendo le impostazioni seguenti nel file di configurazione MSAL:

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

MSAL comunica con il broker in due modi:

  • Servizio associato a Broker
  • Android AccountManager

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

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

  • Chiedere all'utente di disabilitare l'ottimizzazione dell'alimentazione per l'app Microsoft Authenticator e il Portale aziendale 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 possono usare le WEBVIEWschede personalizzate di , browser di sistema o 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 altre app per la personalizzazione delle funzionalità. È consigliabile usare "WEBVIEW". Per altre informazioni sugli altri valori di confgurazione (vedere Informazioni sul file di configurazione MSAL android.

MSAL supporta l'autorizzazione usando un WEBVIEWo il browser di sistema. L'immagine seguente mostra l'aspetto che usa o WEBVIEWil browser di sistema con CustomTabs o senza CustomTabs:

MSAL login examples

Implicazioni per l'accesso Single Sign-On

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

Le applicazioni possono essere integrate con MSAL per l'uso BROWSER di 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 o Portale aziendale Intune, gli utenti possono avere esperienza SSO tra le applicazioni se hanno un accesso attivo con una delle app.

Nota

MSAL con broker usa WebView e fornisce Single Sign-On (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 vengono mantenuti all'interno della sandbox dell'app e non sono disponibili all'esterno del file JAR del cookie dell'app. Di conseguenza, l'utente non può avere esperienza SSO tra le applicazioni a meno che le app non si integrano con Authenticator o Portale aziendale.

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 selezione 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 esegue il fallback sull'uso di Webview anziché avviare un altro browser non predefinito dall'elenco sicuro. Il browser predefinito viene scelto indipendentemente dal fatto che supporti schede 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 nel dispositivo non sono presenti pacchetti browser, MSAL usa in-app WebView. 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 Chrome Opera Microsoft Edge Browser UC Firefox
Nexus 4 (API 17) superato superato non applicabile non applicabile non applicabile non applicabile
Samsung S7 (API 25) pass1 superato superato superato non riuscito superato
Vivo (API 26) superato superato superato superato superato non riuscito
Pixel 2 (API 26) superato superato superato superato non riuscito superato
Oppo superato non applicabile2 non applicabile non applicabile non applicabile non applicabile
OnePlus (API 25) superato superato superato superato non riuscito superato
Nexus (API 28) superato superato superato superato non riuscito superato
MI superato superato superato superato non riuscito superato

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.