Come abilitare l'accesso Single Sign-On tra app su Android tramite ADALHow to enable cross-app SSO on Android using ADAL

L'autenticazione Single Sign-On (SSO) con cui gli utenti devono inserire le proprie credenziali una sola volta per usare tutte le applicazioni è ora uno standard del settore.Providing Single Sign-On (SSO) so that users only need to enter their credentials once and have those credentials automatically work across applications is now an industry standard. La difficoltà di immettere il nome utente e la password su uno schermo di piccole dimensioni, spesso abbinata a un fattore aggiuntivo (2FA) come una telefonata o un codice inviato tramite SMS, costituisce un problema per l'utente se la procedura va ripetuta più volte.The difficulty in entering their username and password on a small screen, often times combined with an additional factor (2FA) like a phone call or a texted code, results in dissatisfaction if a user has to sign-on more than one time.

Se inoltre si applica una piattaforma delle identità che può essere usata da altre applicazioni, ad esempio Microsoft Accounts o un account aziendale di Microsoft 365, i clienti si aspettano che le credenziali siano disponibili all'uso in tutte le applicazioni, indipendentemente dal server di pubblicazione.In addition, if you apply an identity platform that other applications may use such as Microsoft Accounts or a work account from Microsoft365, customers expect that those credentials to be available to use across all their applications no matter the publisher.

La piattaforma Microsoft Identity, insieme agli altri SDK di Microsoft Identity, soddisfa queste aspettative e consente di offrire l'SSO ai clienti nella propria suite di applicazioni oppure, analogamente alla funzionalità broker e alle applicazioni di Authenticator, in tutto il dispositivo.The Microsoft Identity platform, along with the Microsoft Identity SDKs, gives you the ability to delight your customers with SSO either within your own suite of applications or, as with the broker capability and Authenticator applications, across the entire device.

Questa procedura illustra come configurare l'SDK all'interno dell'applicazione per offrire l'autenticazione SSO ai clienti.This walkthrough will tell you how to configure the SDK within your application to provide SSO to your customers.

Il documento precedente presuppone che si sappia come integrare la propria applicazione con il Microsoft Identity Android SDK.The document preceding assumes you know how to integrate your application with the Microsoft Identity Android SDK.

Concetti di SSO nella piattaforma Microsoft IdentitySSO Concepts in the Microsoft Identity Platform

Broker di Microsoft IdentityMicrosoft Identity Brokers

Microsoft offre applicazioni per ogni piattaforma per dispositivi mobili che consentono il bridging delle credenziali tra le applicazioni di fornitori diversi e offre particolari funzionalità avanzate che richiedono un'unica posizione sicura da cui convalidare le credenziali.Microsoft provides applications for every mobile platform that allow for the bridging of credentials across applications from different vendors and allows for special enhanced features that require a single secure place from where to validate credentials. L'SDK chiama queste applicazioni con il termine broker.The SDK calls these brokers. Nei sistemi iOS e Android, i broker sono forniti tramite applicazioni scaricabili che i clienti possono installare in modo indipendente oppure possono essere inviati tramite push al dispositivo da una società che gestisce alcuni o tutti i dispositivi dei propri dipendenti.On iOS and Android, the brokers are provided through downloadable applications that customers either install independently or can be pushed to the device by a company who manages some or all of the device for their employee. I broker supportano la gestione della sicurezza per alcune applicazioni soltanto o per tutto il dispositivo, a seconda di quanto stabilito dagli amministratori IT.These brokers support managing security just for some applications or the entire device based on what IT Administrators desire. In Windows questa funzionalità è fornita da un sistema di selezione dell'account incorporato nel sistema operativo, il cui nome tecnico è Web Authentication Broker.In Windows, this functionality is provided by an account chooser built in to the operating system, known technically as the Web Authentication Broker.

Accessi assistiti da brokerBroker assisted logins

Gli accessi assistiti da broker sono esperienze di accesso che si svolgono all'interno dell'applicazione broker e usano le risorse di archiviazione e la sicurezza del broker per condividere le credenziali tra tutte le applicazioni sul dispositivo che applicano la piattaforma Microsoft Identity.Broker-assisted logins are login experiences that occur within the broker application and use the storage and security of the broker to share credentials across all applications on the device that apply the Microsoft Identity platform. Ciò significa che le applicazioni si affidano al broker per l'accesso degli utenti.The implication being your applications will rely on the broker to sign users in. Nei sistemi iOS e Android, i broker sono inseriti tramite applicazioni scaricabili che i clienti possono installare in modo indipendente oppure possono essere inviati tramite push al dispositivo da una società che gestisce il dispositivo dell'utente.On iOS and Android, these brokers are provided through downloadable applications that customers either install independently or can be pushed to the device by a company who manages the device for their user. Un esempio di questo tipo di applicazione è l'applicazione Microsoft Authenticator per iOS.An example of this type of application is the Microsoft Authenticator application on iOS. In Windows questa funzionalità è fornita da un sistema di selezione dell'account incorporato nel sistema operativo, il cui nome tecnico è Web Authentication Broker.In Windows, this functionality is provided by an account chooser built in to the operating system, known technically as the Web Authentication Broker. L'esperienza varia in base alla piattaforma e talvolta può essere un elemento di disturbo per gli utenti se non viene gestita correttamente.The experience varies by platform and can sometimes be disruptive to users if not managed correctly. Chi ha installato l'applicazione Facebook e usa la funzionalità di connessione di Facebook in un'altra applicazione avrà probabilmente maggiore dimestichezza con questo modello.You're probably most familiar with this pattern if you have the Facebook application installed and use Facebook Connect from another application. La piattaforma Microsoft Identity usa lo stesso modello.The Microsoft Identity platform uses the same pattern.

In Android la selezione degli account viene visualizzata nella parte superiore dell'applicazione, con un impatto meno fastidioso per l'utente.On Android, the account chooser is displayed on top of your application, which is less disruptive to the user.

Come viene richiamato il brokerHow the broker gets invoked

Se nel dispositivo è installato un broker compatibile, ad esempio l'applicazione Microsoft Authenticator, gli SDK di Microsoft Identity richiamano automaticamente il broker quando un utente indica che vuole accedere con un account della piattaforma Microsoft Identity.If a compatible broker is installed on the device, like the Microsoft Authenticator application, the Microsoft Identity SDKs will automatically do the work of invoking the broker for you when a user indicates they wish to log in using any account from the Microsoft Identity platform.

Modalità con cui Microsoft assicura la validità dell'applicazioneHow Microsoft ensures the application is valid

La necessità di verificare l'identità di una chiamata di applicazione al broker è fondamentale per la sicurezza garantita con l'accesso assistito da broker.The need to ensure the identity of an application call the broker is crucial to the security provided in broker assisted logins. I sistemi iOS e Android non applicano identificatori univoci che sono validi solo per una determinata applicazione, pertanto le applicazioni dannose possono effettuare lo "spoofing" di un identificatore dell'applicazione legittimo e ricevere i token per l'applicazione legittima.iOS and Android do not enforce unique identifiers that are valid only for a given application, so malicious applications may "spoof" a legitimate application's identifier and receive the tokens meant for the legitimate application. Per garantire che Microsoft comunichi sempre con l'applicazione giusta in fase di esecuzione, lo sviluppatore deve specificare un URI di reindirizzamento personalizzato quando registra la propria applicazione con Microsoft.To ensure Microsoft is always communicating with the right application at runtime, the developer is asked to provide a custom redirectURI when registering their application with Microsoft. Le modalità di creazione dell'URI di reindirizzamento da parte degli sviluppatori vengono trattate in dettaglio di seguito.How developers should craft this redirect URI is discussed in detail below. Questo URI di reindirizzamento personalizzato contiene l'identificazione personale del certificato dell'applicazione e Google Play Store ne garantisce l'univocità per l'applicazione.This custom redirectURI contains the certificate thumbprint of the application and is ensured to be unique to the application by the Google Play Store. Quando un'applicazione chiama il broker, questo richiede al sistema operativo Android per fornire l'identificazione personale del certificato che ha chiamato il broker.When an application calls the broker, the broker asks the Android operating system to provide it with the certificate thumbprint that called the broker. Il broker invia questa identificazione personale del certificato a Microsoft nella chiamata al sistema di identità.The broker provides this certificate thumbprint to Microsoft in the call to the identity system. Se l'identificazione personale del certificato dell'applicazione non corrisponde all'identificazione personale del certificato specificata dallo sviluppatore durante la registrazione, verrà negato l'accesso ai token per la risorsa richiesta dall'applicazione.If the certificate thumbprint of the application does not match the certificate thumbprint provided to us by the developer during registration, access is denied to the tokens for the resource the application is requesting. Questo controllo garantisce che solo l'applicazione registrata dallo sviluppatore riceva i token.This check ensures that only the application registered by the developer receives tokens.

Gli accessi SSO con broker offrono i vantaggi seguenti:Brokered-SSO logins have the following benefits:

  • L'utente usufruisce del Single Sign-On per tutte le proprie applicazioni, indipendentemente dal fornitore.User experiences SSO across all their applications no matter the vendor.
  • L'applicazione può usare funzionalità aziendali più avanzate, ad esempio l'Accesso condizionale o la suite di prodotti Microsoft InTune.Your application can use more advanced business features such as Conditional Access and support Intune scenarios.
  • L'applicazione può supportare l'autenticazione basata su certificati per gli utenti aziendali.Your application can support certificate-based authentication for business users.
  • Un'esperienza di accesso molto più sicura dato che le identità dell'applicazione e dell'utente vengono verificati dall'applicazione broker con algoritmi di sicurezza aggiuntivi e la crittografia.More secure sign-in experience as the identity of the application and the user are verified by the broker application with additional security algorithms and encryption.

Di seguito viene rappresentato il funzionamento degli SDK di Microsoft Identity con le applicazioni broker per abilitare l'SSO:Here is a representation of how the Microsoft Identity SDKs work with the broker applications to enable SSO:

+------------+ +------------+   +-------------+
|            | |            |   |             |
|   App 1    | |   App 2    |   |   Someone   |
|            | |            |   |    Else's   |
|            | |            |   |     App     |
+------------+ +------------+   +-------------+
|  ADAL SDK  | |  ADAL SDK  |   |  ADAL SDK   |
+-----+------+-+-----+------+-  +-------+-----+
      |              |                  |
      |       +------v------+           |
      |       |             |           |
      |       | Microsoft   |           |
      +-------> Broker      |^----------+
              | Application
              |             |
              +-------------+
              |             |
              |   Broker    |
              |   Storage   |
              |             |
              +-------------+

Sulla base di queste informazioni di base dovrebbe essere possibile comprendere meglio e implementare l'SSO all'interno dell'applicazione con la piattaforma e gli SDK di Microsoft Identity.Armed with this background information you should be able to better understand and implement SSO within your application using the Microsoft Identity platform and SDKs.

Attivazione di SSO per SSO assistito da brokerTurning on SSO for broker assisted SSO

La possibilità per un'applicazione di usare qualsiasi broker installato nel dispositivo è disattivata per impostazione predefinita.The ability for an application to use any broker that is installed on the device is turned off by default. Per usare l'applicazione con il broker, è necessario apportare alcune modifiche alla configurazione e aggiungere una parte di codice all'applicazione.In order to use your application with the broker, you must do some additional configuration and add some code to your application.

Ecco i passaggi da seguire:The steps to follow are:

  1. Abilitare la modalità broker nella chiamata del codice dell'applicazione a MS SDKEnable broker mode in your application code's calling to the MS SDK
  2. Definire un nuovo URI di reindirizzamento e indicarlo sia all'app che alla registrazione dell'appEstablish a new redirect URI and provide that to both the app and your app registration
  3. Impostazione delle autorizzazioni corrette nel manifesto AndroidSetting up the correct permissions in the Android manifest

Passaggio 1: Abilitare la modalità broker nell'applicazioneStep 1: Enable broker mode in your application

La capacità dell'applicazione di usare il broker è attivata quando si creano le "impostazioni" o la configurazione iniziale dell'istanza di Authentication.The ability for your application to use the broker is turned on when you create the "settings" or initial setup of your Authentication instance. Per eseguire questa operazione nell'app:To do this in your app:

AuthenticationSettings.Instance.setUseBroker(true);

Passaggio 2: Creare un nuovo URI di reindirizzamento con lo schema dell'URLStep 2: Establish a new redirect URI with your URL Scheme

Per fare in modo che i token delle credenziali vengano sempre restituiti all'applicazione corretta, è necessario assicurarsi che il richiamo all'applicazione avvenga in un modo verificabile dal sistema operativo Android.In order to ensure that the right application recevies the returned the credential tokens, there is a need to make sure the call back to your application in a way that the Android operating system can verify. Il sistema operativo Android utilizza in Google Play Store l'hash del certificato,The Android operating system uses the hash of the certificate in the Google Play store. che non può essere soggetto a spoofing da un'applicazione non autorizzata.This hash of the certificate cannot be spoofed by a rogue application. Insieme all'URI dell'applicazione broker, Microsoft si assicura che i token vengano restituiti all'applicazione corretta.Along with the URI of the broker application, Microsoft ensures that the tokens are returned to the correct application. È necessario che nell'applicazione venga registrato un URI di reindirizzamento univoco.A unique redirect URI is required to be registered on the application.

L'URI di reindirizzamento deve essere nel formato corretto:Your redirect URI must be in the proper form of:

msauth://packagename/Base64UrlencodedSignature

Ad esempio: msauth://com.example.userapp/IcB5PxIyvbLkbFVtBI%2FitkW%2Fejk%3Dex: msauth://com.example.userapp/IcB5PxIyvbLkbFVtBI%2FitkW%2Fejk%3D

È possibile specificare l'URI di reindirizzamento nella registrazione dell'app tramite il portale di Azure.You can register this redirect URI in your app registration using the Azure portal. Per altre informazioni sulla registrazione di app Azure AD, vedere Integrazione con Azure Active Directory.For more information on Azure AD app registration, see Integrating with Azure Active Directory.

Passaggio 3: Impostare le autorizzazioni corrette all'interno dell'applicazioneStep 3: Set up the correct permissions in your application

L'applicazione broker in Android usa la funzionalità Account Manager del sistema operativo Android per gestire le credenziali nelle applicazioni.The broker application in Android uses the Accounts Manager feature of the Android OS to manage credentials across applications. Per utilizzare il broker in Android, il manifesto dell'app deve disporre delle autorizzazioni per usare gli account di AccountManager.In order to use the broker in Android your app manifest must have permissions to use AccountManager accounts. Le autorizzazioni vengono discusse in modo dettagliato nella documentazione di Google relativa ad Account Manager quiThese permissions are discussed in detail in the Google documentation for Account Manager here

In particolare, le autorizzazioni sono:In particular, these permissions are:

GET_ACCOUNTS
USE_CREDENTIALS
MANAGE_ACCOUNTS

L'SSO è stato configurato!You've configured SSO!

Ora Microsoft Identity SDK condividerà automaticamente le credenziali tra le applicazioni e richiamerà il broker, se presente nel dispositivo.Now the Microsoft Identity SDK will automatically both share credentials across your applications and invoke the broker if it's present on their device.