Azure AD B2C: accedere mediante un'applicazione AndroidAzure AD B2C: Sign-in using an Android application

La piattaforma delle identità Microsoft usa standard aperti, ad esempio OAuth2 e OpenID Connect.The Microsoft identity platform uses open standards such as OAuth2 and OpenID Connect. Questo consente agli sviluppatori di sfruttare le librerie che vogliono integrare con i servizi.This allows developers to leverage any library they wish to integrate with our services. Per aiutare gli sviluppatori a usare la piattaforma con altre librerie, sono state scritte alcune procedure dettagliate come questa, che illustrano come configurare le librerie di terze parti per connettersi alla piattaforma delle identità Microsoft.To aid developers in using our platform with other libraries, we've written a few walkthroughs like this one to demonstrate how to configure 3rd party libraries to connect to the Microsoft identity platform. La maggior parte delle librerie che implementano la specifica OAuth2 RFC6749 potrà connettersi alla piattaforma delle identità Microsoft.Most libraries that implement the RFC6749 OAuth2 spec will be able to connect to the Microsoft Identity platform.

Avviso

Microsoft non fornisce correzioni per queste librerie di terze parti e non ha eseguito una verifica su esse.Microsoft does not provide fixes for 3rd party libraries and has not done a review of those libraries. In questo esempio si usa una libreria di terze parti chiamata AppAuth che è stata testata per la compatibilità in scenari di base con Azure AD B2C.This sample is using a 3rd party library called AppAuth that has been tested for compatibility in basic scenarios with the Azure AD B2C. Le richieste relative a problemi e funzionalità devono essere indirizzate al progetto open source della libreria.Issues and feature requests should be directed to the library's open-source project. Per altre informazioni, vedere questo articolo.Please see this article for more information.

Se non si ha familiarità con OAuth2 o OpenID, gran parte di questo esempio risulterà poco chiara.If you're new to OAuth2 or OpenID Connect much of this sample configuration may not make much sense to you. È consigliabile vedere la breve panoramica del protocollo documentata qui.We recommend you look at a brief overview of the protocol we've documented here.

Ottenere una directory di Azure AD B2CGet an Azure AD B2C directory

Prima di poter usare Azure AD B2C, è necessario creare una directory, o tenant.Before you can use Azure AD B2C, you must create a directory, or tenant. Una directory è un contenitore per utenti, app, gruppi e così via.A directory is a container for all of your users, apps, groups, and more. Se non ne è già disponibile una, prima di continuare creare una directory B2C .If you don't have one already, create a B2C directory before you continue.

Creare un'applicazioneCreate an application

Successivamente, è necessario creare un'app nella directory B2C.Next, you need to create an app in your B2C directory. In questo modo Azure AD acquisisce le informazioni necessarie per comunicare in modo sicuro con l'app.This gives Azure AD information that it needs to communicate securely with your app. Per creare un'app per dispositivi mobili, seguire questa procedura.To create a mobile app, follow these instructions. Assicurarsi di:Be sure to:

  • Includere un client nativo nell'applicazione.Include a Native Client in the application.
  • Copiare l' ID applicazione assegnato all'app.Copy the Application ID that is assigned to your app. che sarà necessario più avanti.You will need this later.
  • Configurare un URI di reindirizzamento client nativo (ad esempio com.onmicrosoft.fabrikamb2c.exampleapp://oauth/redirect).Set up a native client Redirect URI (e.g. com.onmicrosoft.fabrikamb2c.exampleapp://oauth/redirect). Sarà necessario più avanti.You will also need this later.

Importante

Non è possibile usare le applicazioni registrate nella scheda Applicazioni del portale di gestione di Azure per questa operazione.You cannot use applications registered in the Applications tab on the classic Azure Management Portal for this.

Creare i criteriCreate your policies

In Azure AD B2C ogni esperienza utente è definita da criterispecifici.In Azure AD B2C, every user experience is defined by a policy. Questa app contiene un'esperienza di identità che combina accesso e iscrizione.This app contains one identity experience: a combined sign-in and sign-up. È necessario creare i criteri, come descritto nell'articolo di riferimento per i criteri.You need to create this policy, as described in the policy reference article. Durante la creazione dei criteri, assicurarsi di:When you create the policy, be sure to:

  • Scegliere Nome visualizzato come attributo di iscrizione nei criteri.Choose the Display name as a sign-up attribute in your policy.
  • Scegliere le attestazioni dell'applicazione Nome visualizzato e ID oggetto in tutti i criteri.Choose the Display name and Object ID application claims in every policy. È consentito scegliere anche altre attestazioni.You can choose other claims as well.
  • Copiare il Nome di ogni criterio dopo averlo creato.Copy the Name of each policy after you create it. Dovrebbero mostrare il prefisso b2c_1_.It should have the prefix b2c_1_. Il nome dei criteri sarà necessario più avanti.You'll need the policy name later.

Nota

In Azure AD B2C, il nome del criterio verrà preceduto da b2c_1_, come b2c_1_sign_up.In Azure AD B2C, your policy's name will be prefixed with b2c_1_, like b2c_1_sign_up. Si è liberi di utilizzare i criteri in tutte le app, sia client che server.You are free to use your policies across all of your apps, both client and server. Se sono stati creati in precedenza criteri in un altra procedura B2C, non è necessario procedere nuovamente.If you've previously created policies in another B2C walk-through, there is no need to do so again. È possibile riutilizzare i criteri creati in precedenza nel portale se corrispondono ai requisiti dell'applicazione.You may reuse the policies you've previously created in the portal if they match the requirements of the application.

Dopo aver creato i criteri, è possibile passare alla creazione dell'app.After you have created your policies, you're ready to build your app.

Scaricare il codice di esempioDownload the sample code

È fornito un esempio funzionante che usa AppAuth con Azure Active Directory B2C in GitHub.We have provided a working sample that uses AppAuth with Azure AD B2C on GitHub. È possibile scaricare ed eseguire il codice.You can download the code and run it. Si può iniziare rapidamente con la propria app usando la configurazione di Azure Active Directory B2C con le istruzioni riportare in README.md.You can quickly get started with your own app using your own Azure AD B2C configuration by following the instructions in the README.md.

L'esempio è una versione modificata di quello fornito da AppAuth.The sample is a modification of the sample provided by AppAuth. Visitare la pagina per altre informazioni su AppAuth e le relative funzionalità.Please visit their page to learn more about AppAuth and its features.

Modifica dell'app per usare Azure Active Directory B2C con AppAuthModifying your app to use Azure AD B2C with AppAuth

Nota

AppAuth supporta l'API 16 (Jellybean) di Android e versioni successive.AppAuth supports Android API 16 (Jellybean) and above. Si consiglia di usare l'API 23 e versioni successive.We recommend using API 23 and above.

ConfigurazioneConfiguration

È possibile configurare la comunicazione con Azure AD B2C specificando l'URI di individuazione o specificando sia l'URI dell'endpoint di autorizzazione che quello dell'endpoint di token.You can configure communication with Azure AD B2C by either specifying the discovery URI or by specifying both the authorization endpoint and token endpoint URIs. In ogni caso sarà necessario specificare le informazioni seguenti:In either case, you will need the following information:

  • ID tenant (ad esempio contoso.onmicrosoft.com)Tenant ID (e.g. contoso.onmicrosoft.com)
  • Nome del criterio (ad esempio B2C_1_SignUpIn)Policy name (e.g. B2C_1_SignUpIn)

Se si sceglie di individuare automaticamente gli URI degli endpoint di autorizzazione e di token, è necessario recuperare le informazioni dall'URI di individuazione.If you choose to automatically discover the authorization and token endpoint URIs, you will need to fetch information from the discovery URI. L'URI di individuazione può essere generato mediante la sostituzione dell'ID_tenant e del nome_criterio nell'URL seguente:The discovery URI can be generated by replacing the Tenant_ID and the Policy_Name in the following URL:

String mDiscoveryURI = "https://login.microsoftonline.com/<Tenant_ID>/v2.0/.well-known/openid-configuration?p=<Policy_Name>";

È quindi possibile acquisire gli URI degli endpoint di autorizzazione e di token e creare un oggetto AuthorizationServiceConfiguration eseguendo le operazioni seguenti:You can then acquire the authorization and token endpoint URIs and create an AuthorizationServiceConfiguration object by running the following:

final Uri issuerUri = Uri.parse(mDiscoveryURI);
AuthorizationServiceConfiguration config;

AuthorizationServiceConfiguration.fetchFromIssuer(
    issuerUri,
    new RetrieveConfigurationCallback() {
      @Override public void onFetchConfigurationCompleted(
          @Nullable AuthorizationServiceConfiguration serviceConfiguration,
          @Nullable AuthorizationException ex) {
        if (ex != null) {
            Log.w(TAG, "Failed to retrieve configuration for " + issuerUri, ex);
        } else {
            // service configuration retrieved, proceed to authorization...
        }
      }
  });

Anziché usare l'individuazione per ottenere gli URI degli endpoint di autorizzazione e di token, è possibile anche specificarli in modo esplicito mediante la sostituzione dell'ID_tenant e del nome_criterio negli URL seguenti:Instead of using discovery to obtain the authorization and token endpoint URIs, you can also specify them explicitly by replacing the Tenant_ID and the Policy_Name in the URL's below:

String mAuthEndpoint = "https://login.microsoftonline.com/<Tenant_ID>/oauth2/v2.0/authorize?p=<Policy_Name>";

String mTokenEndpoint = "https://login.microsoftonline.com/<Tenant_ID>/oauth2/v2.0/token?p=<Policy_Name>";

Eseguire il codice seguente per creare l'oggetto AuthorizationServiceConfiguration:Run the following code to create your AuthorizationServiceConfiguration object:

AuthorizationServiceConfiguration config =
        new AuthorizationServiceConfiguration(name, mAuthEndpoint, mTokenEndpoint);

// perform the auth request...

AutorizzazioneAuthorizing

Dopo la configurazione o il recupero di una configurazione del servizio di autorizzazione, è possibile costruire una richiesta di autorizzazione.After configuring or retrieving an authorization service configuration, an authorization request can be constructed. Per creare la richiesta sono necessarie le informazioni seguenti:To create the request, you will need the following information:

  • ID client (ad esempio 00000000-0000-0000-0000-000000000000)Client ID (e.g. 00000000-0000-0000-0000-000000000000)
  • URI di reindirizzamento con schema personalizzato (ad esempio com.onmicrosoft.fabrikamb2c.exampleapp://oauthredirect)Redirect URI with a custom scheme (e.g. com.onmicrosoft.fabrikamb2c.exampleapp://oauthredirect)

Entrambi gli elementi sono stati salvati durante la registrazione dell'app.Both items should have been saved when you were registering your app.

AuthorizationRequest req = new AuthorizationRequest.Builder(
    config,
    clientId,
    ResponseTypeValues.CODE,
    redirectUri)
    .build();

Per informazioni su come completare il resto della procedura, consultare la guida di AppAuth.Please refer to the AppAuth guide on how to complete the rest of the process. Se è necessario iniziare subito con un'app funzionante, vedere il nostro esempio.If you need to quickly get started with a working app, check out our sample. Seguire i passaggi indicati in README.md per immettere la configurazione di Azure AD B2C.Follow the steps in the README.md to enter your own Azure AD B2C configuration.

Commenti e suggerimenti sono sempre graditi.We are always open to feedback and suggestions! In caso di difficoltà con questo argomento o di suggerimenti per migliorarne il contenuto, è possibile lasciare un commento nella parte inferiore della pagina.If you have any difficulties with this topic, or have recommendations for improving this content, we would appreciate your feedback at the bottom of the page. Le richieste di funzionalità possono essere aggiunte in UserVoice.For feature requests, add them to UserVoice.