Azure AD B2C: accedere mediante un'applicazione iOSAzure AD B2C: Sign-in using an iOS 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. L'uso di un protocollo a standard aperto offre più scelta allo sviluppatore nella selezione della libreria da integrare con i nostri servizi.Using an open standard protocol offers more developer choice when selecting a library to integrate with our services. Abbiamo fornito questa procedura dettagliata e altre simili per aiutare gli sviluppatori a scrivere applicazioni che si connettono alla piattaforma Microsoft Identity.We've provided this walkthrough and others like it to aid developers with writing applications that connect to the Microsoft Identity platform. La maggior parte delle librerie che implementano la specifica OAuth2 RFC6749 può connettersi alla piattaforma delle identità Microsoft.Most libraries that implement the RFC6749 OAuth2 spec are 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 third-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 third-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.For more information, see this article.

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 altro ancora.A directory is a container for all your users, apps, groups, and more. Se non ne è già disponibile una, creare una directory B2C prima di continuare.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. La registrazione dell'app fornisce ad Azure AD le informazioni necessarie per comunicare in modo sicuro con l'app.The app registration 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. Questo GUID sarà necessario in seguito.You need this GUID later.
  • Configurare un URI di reindirizzamento con schema personalizzato (ad esempio com.onmicrosoft.fabrikamb2c.exampleapp://oauth/redirect).Set up a Redirect URI with a custom scheme (for example, com.onmicrosoft.fabrikamb2c.exampleapp://oauth/redirect). Questo URI sarà necessario in seguito.You need this URI 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. Creare i criteri come descritto nell'articolo relativo ai criteri.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:

  • In Attributi iscrizione selezionare l'attributo Nome visualizzato.Under Sign-up attributes, select the attribute Display name. È possibile selezionare anche altri attributi.You can select other attributes as well.
  • In Attestazioni applicazione selezionare Nome visualizzato e ID oggetto dell'utente.Under Application claims, select the claims Display name and User's Object ID. Sono disponibili anche altre attestazioni.You can select other claims as well.
  • Copiare il Nome di ogni criterio dopo averlo creato.Copy the Name of each policy after you create it. Quando si salva il criterio, al relativo nome viene aggiunto un prefisso b2c_1_.Your policy name is prefixed with b2c_1_ when you save the policy. Il nome dei criteri sarà necessario in seguito.You 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. Per usare il proprio tenant Azure AD B2C, seguire le istruzioni riportate in README.md.To use your own Azure AD B2C tenant, follow the instructions in the README.md.

Questo esempio è stato creato seguendo le istruzioni del file README del progetto iOS AppAuth in GitHub.This sample was created by following the README instructions by the iOS AppAuth project on GitHub. Per altre informazioni sul funzionamento dell'esempio e della libreria, fare riferimento al file README di AppAuth in GitHub.For more details on how the sample and the library work, reference the AppAuth README on GitHub.

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

Nota

AppAuth supporta iOS 7 e versioni successive.AppAuth supports iOS 7 and above. Tuttavia, per supportare gli accessi da social network su Google, è necessario SFSafariViewController che richiede iOS 9 o versione successiva.However, to support social logins on Google, SFSafariViewController is needed which requires iOS 9 or higher.

ConfigurazioneConfiguration

È possibile configurare la comunicazione con Azure AD B2C specificando sia l'URI dell'endpoint di autorizzazione che quello dell'endpoint di token.You can configure communication with Azure AD B2C by specifying both the authorization endpoint and token endpoint URIs. Per generare questi URI sono necessarie le informazioni seguenti:To generate these URIs, you need the following information:

  • ID tenant (ad esempio contoso.onmicrosoft.com)Tenant ID (for example, contoso.onmicrosoft.com)
  • Nome del criterio (ad esempio B2C_1_SignUpIn)Policy name (for example, B2C_1_SignUpIn)

L'URI dell'endpoint di token può essere generato mediante la sostituzione dell'ID_tenant e del nome_criterio nell'URL seguente:The token endpoint URI can be generated by replacing the Tenant_ID and the Policy_Name in the following URL:

static NSString *const tokenEndpoint = @"https://login.microsoftonline.com/te/<Tenant_ID>/<Policy_Name>/oauth2/v2.0/token";

L'URI dell'endpoint di autorizzazione può essere generato mediante la sostituzione dell'ID_tenant e del nome_criterio nell'URL seguente:The authorization endpoint URI can be generated by replacing the Tenant_ID and the Policy_Name in the following URL:

static NSString *const authorizationEndpoint = @"https://login.microsoftonline.com/te/<Tenant_ID>/<Policy_Name>/oauth2/v2.0/authorize";

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

OIDServiceConfiguration *configuration = 
    [[OIDServiceConfiguration alloc] initWithAuthorizationEndpoint:authorizationEndpoint tokenEndpoint:tokenEndpoint];
// now we are ready to 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 need the following information:

  • ID client (ad esempio 00000000-0000-0000-0000-000000000000)Client ID (for example, 00000000-0000-0000-0000-000000000000)
  • URI di reindirizzamento con schema personalizzato (ad esempio com.onmicrosoft.fabrikamb2c.exampleapp://oauth/redirect)Redirect URI with a custom scheme (for example, com.onmicrosoft.fabrikamb2c.exampleapp://oauth/redirect)

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

OIDAuthorizationRequest *request = 
    [[OIDAuthorizationRequest alloc] initWithConfiguration:configuration
                                                  clientId:kClientId
                                                    scopes:@[OIDScopeOpenID, OIDScopeProfile]
                                               redirectURL:[NSURL URLWithString:kRedirectUri]
                                              responseType:OIDResponseTypeCode
                                      additionalParameters:nil];

AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
appDelegate.currentAuthorizationFlow = 
    [OIDAuthState authStateByPresentingAuthorizationRequest:request
                                   presentingViewController:self
                                                   callback:^(OIDAuthState *_Nullable authState, NSError *_Nullable error) {
        if (authState) {
            NSLog(@"Got authorization tokens. Access token: %@", authState.lastTokenResponse.accessToken);
            [self setAuthState:authState];
        } else {
            NSLog(@"Authorization error: %@", [error localizedDescription]);
            [self setAuthState:nil];
        }
    }];

Per configurare l'applicazione per la gestione del reindirizzamento all'URI con lo schema personalizzato, è necessario aggiornare l'elenco degli "Schemi URL" in Info.pList:To set up your application to handle the redirect to the URI with the custom scheme, you need to update the list of 'URL Schemes' in your Info.pList:

  • Aprire Info.pList.Open Info.pList.
  • Passare il mouse su una riga come "Codice del tipo di sistema operativo del creatore del bundle" e fare clic sul simbolo +.Hover over a row like 'Bundle OS Type Code' and click the + symbol.
  • Rinominare la nuova riga come "Tipi di URL".Rename the new row 'URL types'.
  • Fare clic sulla freccia a sinistra di "Tipi di URL" per aprire l'albero.Click the arrow to the left of 'URL types' to open the tree.
  • Fare clic sulla freccia a sinistra di "Elemento 0" per aprire l'albero.Click the arrow to the left of 'Item 0' to open the tree.
  • Rinominare il primo elemento sotto l'elemento 0 in "Schemi URL".Rename first item underneath Item 0 to 'URL Schemes'.
  • Fare clic sulla freccia a sinistra di "Schemi URL" per aprire l'albero.Click the arrow to the left of 'URL Schemes' to open the tree.
  • Nella colonna "Valore" è presente un campo vuoto a sinistra di "Elemento 0" sotto "Schemi URL".In the 'Value' column, there is a blank field to the left of 'Item 0' underneath 'URL Schemes'. Impostare il valore sullo schema univoco dell'applicazione.Set the value to your application's unique scheme. Il valore deve corrispondere allo schema usato in redirectURL quando si crea l'oggetto OIDAuthorizationRequest.The value must match the scheme used in redirectURL when creating the OIDAuthorizationRequest object. Nel nostro esempio abbiamo usato lo schema "com.onmicrosoft.fabrikamb2c.exampleapp".In our sample, we used the scheme 'com.onmicrosoft.fabrikamb2c.exampleapp'.

Per informazioni su come completare il resto della procedura, consultare la guida di AppAuth.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.