Azure AD B2C: accedere mediante un'applicazione iOS

La piattaforma delle identità Microsoft usa standard aperti, ad esempio OAuth2 e 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. Abbiamo fornito questa procedura dettagliata e altre simili per aiutare gli sviluppatori a scrivere applicazioni che si connettono alla piattaforma Microsoft Identity. La maggior parte delle librerie che implementano la specifica OAuth2 RFC6749 può connettersi alla piattaforma delle identità Microsoft.

Avviso

Microsoft non fornisce correzioni per queste librerie di terze parti e non ha eseguito una verifica su esse. 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. Le richieste relative a problemi e funzionalità devono essere indirizzate al progetto open source della libreria. Per altre informazioni, vedere questo articolo.

Se non si ha familiarità con OAuth2 o OpenID, gran parte di questo esempio risulterà poco chiara. È consigliabile vedere la breve panoramica del protocollo documentata qui.

Ottenere una directory di Azure AD B2C

Prima di poter usare Azure AD B2C, è necessario creare una directory, o tenant. Una directory è un contenitore per utenti, app, gruppi e altro ancora. Se non ne è già disponibile una, creare una directory B2C prima di continuare.

Creare un'applicazione

Successivamente, è necessario creare un'app nella directory B2C. La registrazione dell'app fornisce ad Azure AD le informazioni necessarie per comunicare in modo sicuro con l'app. Per creare un'app per dispositivi mobili, seguire questa procedura. Assicurarsi di:

  • Includere un client nativo nell'applicazione.
  • Copiare l' ID applicazione assegnato all'app. Questo GUID sarà necessario in seguito.
  • Configurare un URI di reindirizzamento con schema personalizzato (ad esempio com.onmicrosoft.fabrikamb2c.exampleapp://oauth/redirect). Questo URI sarà necessario in seguito.
Importante

Non è possibile usare le applicazioni registrate nella scheda Applicazioni del portale di gestione di Azure per questa operazione.

Creare i criteri

In Azure AD B2C ogni esperienza utente è definita da criterispecifici. Questa app contiene un'esperienza di identità che combina accesso e iscrizione. Creare i criteri come descritto nell'articolo relativo ai criteri. Durante la creazione dei criteri, assicurarsi di:

  • In Attributi iscrizione selezionare l'attributo Nome visualizzato. È possibile selezionare anche altri attributi.
  • In Attestazioni applicazione selezionare Nome visualizzato e ID oggetto dell'utente. Sono disponibili anche altre attestazioni.
  • Copiare il Nome di ogni criterio dopo averlo creato. Quando si salva il criterio, al relativo nome viene aggiunto un prefisso b2c_1_. Il nome dei criteri sarà necessario in seguito.
Nota

In Azure AD B2C, il nome del criterio verrà preceduto da b2c_1_, come b2c_1_sign_up. Si è liberi di utilizzare i criteri in tutte le app, sia client che server. Se sono stati creati in precedenza criteri in un altra procedura B2C, non è necessario procedere nuovamente. È possibile riutilizzare i criteri creati in precedenza nel portale se corrispondono ai requisiti dell'applicazione.

Dopo aver creato i criteri, è possibile passare alla creazione dell'app.

Scaricare il codice di esempio

È fornito un esempio funzionante che usa AppAuth con Azure Active Directory B2C in GitHub. È possibile scaricare ed eseguire il codice. Per usare il proprio tenant Azure AD B2C, seguire le istruzioni riportate in README.md.

Questo esempio è stato creato seguendo le istruzioni del file README del progetto iOS AppAuth in GitHub. Per altre informazioni sul funzionamento dell'esempio e della libreria, fare riferimento al file README di AppAuth in GitHub.

Modifica dell'app per usare Azure Active Directory B2C con AppAuth

Nota

AppAuth supporta iOS 7 e versioni successive. Tuttavia, per supportare gli accessi da social network su Google, è necessario SFSafariViewController che richiede iOS 9 o versione successiva.

Configurazione

È possibile configurare la comunicazione con Azure AD B2C specificando sia l'URI dell'endpoint di autorizzazione che quello dell'endpoint di token. Per generare questi URI sono necessarie le informazioni seguenti:

  • ID tenant (ad esempio contoso.onmicrosoft.com)
  • Nome del criterio (ad esempio 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:

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:

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:

OIDServiceConfiguration *configuration = 
    [[OIDServiceConfiguration alloc] initWithAuthorizationEndpoint:authorizationEndpoint tokenEndpoint:tokenEndpoint];
// now we are ready to perform the auth request...

Autorizzazione

Dopo la configurazione o il recupero di una configurazione del servizio di autorizzazione, è possibile costruire una richiesta di autorizzazione. Per creare la richiesta sono necessarie le informazioni seguenti:

  • ID client (ad esempio 00000000-0000-0000-0000-000000000000)
  • URI di reindirizzamento con schema personalizzato (ad esempio com.onmicrosoft.fabrikamb2c.exampleapp://oauth/redirect)

Entrambi gli elementi sono stati salvati durante la registrazione dell'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:

  • Aprire Info.pList.
  • Passare il mouse su una riga come "Codice del tipo di sistema operativo del creatore del bundle" e fare clic sul simbolo +.
  • Rinominare la nuova riga come "Tipi di URL".
  • Fare clic sulla freccia a sinistra di "Tipi di URL" per aprire l'albero.
  • Fare clic sulla freccia a sinistra di "Elemento 0" per aprire l'albero.
  • Rinominare il primo elemento sotto l'elemento 0 in "Schemi URL".
  • Fare clic sulla freccia a sinistra di "Schemi URL" per aprire l'albero.
  • Nella colonna "Valore" è presente un campo vuoto a sinistra di "Elemento 0" sotto "Schemi URL". Impostare il valore sullo schema univoco dell'applicazione. Il valore deve corrispondere allo schema usato in redirectURL quando si crea l'oggetto OIDAuthorizationRequest. Nel nostro esempio abbiamo usato lo schema "com.onmicrosoft.fabrikamb2c.exampleapp".

Per informazioni su come completare il resto della procedura, consultare la guida di AppAuth. Se è necessario iniziare subito con un'app funzionante, vedere il nostro esempio. Seguire i passaggi indicati in README.md per immettere la configurazione di Azure AD B2C.

Commenti e suggerimenti sono sempre graditi. In caso di difficoltà con questo argomento o di suggerimenti per migliorarne il contenuto, è possibile lasciare un commento nella parte inferiore della pagina. Le richieste di funzionalità possono essere aggiunte in UserVoice.