Configurare l'iscrizione e l'accesso con openID generico Connessione usando Azure Active Directory B2C

Prima di iniziare, usare il selettore Scegli un tipo di criterio per scegliere il tipo di criterio che si sta configurando. Azure Active Directory B2C offre due metodi per definire il modo in cui gli utenti interagiscono con le applicazioni: tramite flussi utente predefiniti o tramite criteri personalizzati completamente configurabili. I passaggi necessari in questo articolo sono diversi per ogni metodo.

OpenID Connessione è un protocollo di autenticazione basato su OAuth 2.0 che può essere usato per l'accesso utente sicuro. La maggior parte dei provider di identità che usano questo protocollo è supportata in Azure AD B2C.

In questo articolo viene illustrato come aggiungere provider di identità OpenID Connect personalizzati nei flussi utente.

Importante

Gli endpoint devono essere conformi ai requisiti di sicurezza di Azure AD B2C. Le versioni precedenti di TLS e le crittografie sono deprecate. Per altre informazioni, vedere Requisiti di Azure AD B2C TLS e della suite di crittografia.

Prerequisiti

Aggiungere il provider di identità

  1. Accedere al portale di Azure come amministratore globale del tenant di Azure AD B2C.
  2. Se si ha accesso a più tenant, selezionare l'icona Impostazioni nel menu in alto per passare al tenant di Azure AD B2C dal menu Directory e sottoscrizioni.
  3. Scegliere Tutti i servizi nell'angolo in alto a sinistra del portale di Azure, cercare Azure AD B2C e selezionarlo.
  4. Selezionare Provider di identità e quindi selezionare Nuovo provider di OpenID Connect.
  5. Immetti un valore per Nome. Ad esempio, immettere Contoso.

Definire il provider di identità OpenId Connessione aggiungendolo all'elemento ClaimsProviders nel file di estensione dei criteri.

  1. Aprire TrustFrameworkExtensions.xml.

  2. Trovare l'elemento ClaimsProviders. Se non esiste, aggiungerlo nell'elemento radice.

  3. Aggiungere un nuovo ClaimsProvider come illustrato di seguito:

    <ClaimsProvider>
      <Domain>contoso.com</Domain>
      <DisplayName>Login with Contoso</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Contoso-OpenIdConnect">
          <DisplayName>Contoso</DisplayName>
          <Description>Login with your Contoso account</Description>
          <Protocol Name="OpenIdConnect"/>
          <Metadata>
            <Item Key="METADATA">https://your-identity-provider.com/.well-known/openid-configuration</Item>
            <Item Key="client_id">00000000-0000-0000-0000-000000000000</Item>
            <Item Key="response_types">code</Item>
            <Item Key="scope">openid profile</Item>
            <Item Key="response_mode">form_post</Item>
            <Item Key="HttpBinding">POST</Item>
            <Item Key="UsePolicyInRedirectUri">false</Item>
          </Metadata>
          <!-- <CryptographicKeys>
            <Key Id="client_secret" StorageReferenceId="B2C_1A_ContosoSecret"/>
          </CryptographicKeys> -->
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="oid"/>
            <OutputClaim ClaimTypeReferenceId="tenantId" PartnerClaimType="tid"/>
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
            <OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" />
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
            <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
            <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" />
            <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="oid"/>
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin"/>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    

Configurare il provider di identità

Ogni provider di identità OpenID Connessione descrive un documento di metadati che contiene la maggior parte delle informazioni necessarie per eseguire l'accesso. Il documento di metadati include informazioni quali gli URL da usare e la posizione delle chiavi di firma pubbliche del servizio. Il documento di metadati OpenID Connect si trova sempre in un endpoint che termina con .well-known/openid-configuration. Per il provider di identità OpenID Connect che si desidera aggiungere, immettere l'URL dei metadati.

Nell'URL dei metadati immettere l'URL del documento di metadati OpenID Connessione.

Nei metadati del <Item Key="METADATA"> profilo tecnico immettere l'URL del documento di metadati OpenID Connessione.

ID client e segreto

Per consentire agli utenti di accedere, il provider di identità richiederà agli sviluppatori di registrare un'applicazione nel proprio servizio. Questa applicazione ha un ID definito come l'ID client e un segreto client.

Il segreto client è facoltativo. Tuttavia, è necessario fornire un segreto client se il tipo di risposta è code, che usa il segreto per scambiare il codice per il token.

Per aggiungere l'ID client e il segreto client, copiare questi valori dal provider di identità e immetterli nei campi corrispondenti.

Nei metadati del <Item Key="client_id"> profilo tecnico immettere l'ID client.

Creare una chiave dei criteri

Se è necessario un segreto client, archiviare il segreto client registrato in precedenza nel tenant di Azure AD B2C.

  1. Accedi al portale di Azure.

  2. Assicurarsi di usare la directory che contiene il tenant di Azure AD B2C. Selezionare il filtro Directory e sottoscrizione nella barra degli strumenti del portale.

  3. Nelle impostazioni del portale | Pagina Directory e sottoscrizioni , trovare la directory di Azure AD B2C nell'elenco Nome directory e quindi selezionare Cambia.

  4. Scegliere Tutti i servizi nell'angolo in alto a sinistra nel portale di Azure e quindi cercare e selezionare Azure AD B2C.

  5. Nella pagina Panoramica selezionare Framework dell'esperienza di gestione delle identità.

  6. Selezionare Chiavi dei criteri e quindi selezionare Aggiungi.

  7. Per Opzioni scegliere Manual.

  8. Immettere un nome per la chiave dei criteri. Ad esempio, ContosoSecret. Verrà aggiunto automaticamente il prefisso B2C_1A_ al nome della chiave.

  9. In Segreto immettere il segreto client registrato in precedenza.

  10. In Uso chiave selezionare Signature.

  11. Fai clic su Crea.

  12. Nell'elemento XML aggiungere l'elemento CryptographicKeys seguente:

    <CryptographicKeys>
      <Key Id="client_secret" StorageReferenceId="B2C_1A_ContosoSecret"/>
    </CryptographicKeys>
    

Ambito

L'ambito definisce le informazioni e le autorizzazioni che si desidera raccogliere dal provider di identità, ad esempio openid profile. Per ricevere il token ID dal provider di identità, è necessario specificare l'ambito openid .

Senza il token ID, gli utenti non sono in grado di accedere ad Azure Active Directory B2C usando il provider di identità personalizzato. È possibile aggiungere altri ambiti separati da spazio. Fare riferimento alla documentazione del provider di identità personalizzato per vedere quale potrebbero essere altri ambiti disponibili.

In Ambito immettere gli ambiti del provider di identità. Ad esempio, openid profile.

Nei metadati del <Item Key="scope"> profilo tecnico immettere gli ambiti del provider di identità. Ad esempio, openid profile.

Tipo di risposta

Il tipo di risposta descrive il tipo di informazioni che vengono inviate nella chiamata iniziale all'elemento authorization_endpoint del provider di identità personalizzato. È possibile usare i tipi di risposta seguenti:

  • code: come per il flusso di codice di autorizzazione, verrà restituito un codice ad Azure Active Directory B2C. Azure Active Directory B2C procede quindi alla chiamata di token_endpoint per scambiare il codice con il token.
  • id_token: un ID token viene restituito in Azure Active Directory B2C dal provider di identità personalizzato.

In Tipo di risposta selezionare codeo id_token, in base alle impostazioni del provider di identità.

Nei metadati del <Item Key="response_types"> profilo tecnico selezionare codeo id_token in base alle impostazioni del provider di identità.

Modalità di risposta

La modalità di risposta definisce il metodo che deve essere utilizzato per reinviare i dati dal provider di identità personalizzato ad Azure Active Directory B2C. È possibile usare le modalità di risposta seguenti:

  • form_post: questa modalità di risposta è consigliata per motivi di sicurezza. La risposta viene trasmessa tramite metodo HTTP POST, con il codice o token codificati nel corpo utilizzando il formato application/x-www-form-urlencoded.
  • query: il codice o token viene restituito come un parametro di query.

Nella modalità Risposta selezionare form_posto query, in base alle impostazioni del provider di identità.

Nei metadati del <Item Key="response_mode"> profilo tecnico selezionare form_posto query, in base alle impostazioni del provider di identità.

Hint di dominio

L'hint per il dominio può essere usato per passare direttamente alla pagina di accesso del provider di identità specificato, invece di fare una selezione tra l'elenco dei provider di identità disponibili.

Per consentire questo tipo di comportamento, immettere un valore per l'hint di dominio. Per passare al provider di identità personalizzato, accodare il parametro domain_hint=<domain hint value> alla fine della richiesta durante la chiamata ad Azure Active Directory B2C per l'accesso.

Nell'hint Dominio immettere un nome di dominio usato nell'hint di dominio.

Nell'elemento XML del <Domain>contoso.com</Domain> profilo tecnico immettere un nome di dominio usato nell'hint di dominio. Ad esempio, contoso.com.

Mapping delle attestazioni

Dopo che il provider di identità personalizzato reinvia un token ID ad Azure Active Directory B2C, Azure Active Directory B2C deve essere in grado di mappare le attestazioni dal token ricevuto con le attestazioni che Azure Active Directory B2C riconosce e usa. Per ogni mapping indicato di seguito, consultare la documentazione del provider di identità personalizzato per comprendere le attestazioni che vengono restituite nel token del provider di identità:

  • ID utente: immettere l'attestazione che fornisce l'identificatore univoco per l'utente connesso.
  • Nome visualizzato: immettere l'attestazione che fornisce il nome visualizzato o il nome completo per l'utente.
  • Nome specificato: immettere l'attestazione che fornisce il nome dell'utente.
  • Cognome: immettere l'attestazione che fornisce il cognome dell'utente.
  • Email: immettere l'attestazione che fornisce l'indirizzo di posta elettronica dell'utente.

L'elemento OutputClaims contiene un elenco di attestazioni restituite dal provider di identità. Eseguire il mapping del nome dell'attestazione definita nei criteri al nome definito nel provider di identità. Nell'elemento configurare l'attributo <OutputClaims> con il nome dell'attestazione PartnerClaimType corrispondente come definito dal provider di identità.

ClaimTypeReferenceId PartnerClaimType
issuerUserId Immettere l'attestazione che fornisce l'identificatore univoco per l'utente connesso.
displayName Immettere l'attestazione che fornisce il nome visualizzato o il nome completo per l'utente.
givenName Immettere l'attestazione che fornisce il nome dell'utente.
surName Immettere l'attestazione che fornisce il cognome dell'utente.
email Immettere l'attestazione che fornisce l'indirizzo di posta elettronica dell'utente.
identityProvider Immettere l'attestazione che fornisce il nome dell'autorità emittente del token. Ad esempio, iss. Se il provider di identità non include l'attestazione dell'autorità emittente nel token, impostare l'attributo DefaultValue con un identificatore univoco del provider di identità. Ad esempio, DefaultValue="contoso.com".

Aggiungere il provider di identità a un flusso utente

  1. Nel tenant di Azure AD B2C selezionare Flussi utente.
  2. Fare clic sul flusso utente che si desidera aggiungere il provider di identità.
  3. In Provider di identità social selezionare il provider di identità aggiunto. Ad esempio, Contoso.
  4. Seleziona Salva.

Testare il flusso utente

  1. Per testare i criteri, selezionare Esegui flusso utente.
  2. In Applicazione selezionare l'applicazione Web denominata testapp1 registrata in precedenza. L'URL di risposta dovrebbe mostrare https://jwt.ms.
  3. Selezionare il pulsante Esegui flusso utente.
  4. Nella pagina di iscrizione o accesso selezionare il provider di identità che si vuole eseguire l'accesso. Ad esempio, Contoso.

Se il processo di accesso ha esito positivo, il browser viene reindirizzato a https://jwt.ms, che visualizza il contenuto del token restituito da Azure AD B2C.

Aggiungere un percorso utente

A questo punto, il provider di identità è stato configurato, ma non è ancora disponibile in nessuna delle pagine di accesso. Se non si ha un percorso utente personalizzato, creare un duplicato di un percorso utente modello esistente, altrimenti continuare con il passaggio successivo.

  1. Aprire il file TrustFrameworkBase.xml dallo starter pack.
  2. Trovare e copiare l'intero contenuto dell'elemento UserJourney che include Id="SignUpOrSignIn".
  3. Aprire TrustFrameworkExtensions.xml e trovare l'elemento UserJourneys. Se l'elemento non esiste, aggiungerne uno.
  4. Incollare l'intero contenuto dell'elemento UserJourney copiato come figlio dell'elemento UserJourneys.
  5. Rinominare l'ID del percorso utente. Ad esempio, Id="CustomSignUpSignIn".

Aggiungere il provider di identità a un percorso utente

Dopo aver creato un percorso utente, aggiungere il nuovo provider di identità al percorso utente. Aggiungere prima un pulsante di accesso, quindi collegare il pulsante a un'azione. L'azione è il profilo tecnico creato in precedenza.

  1. Trovare l'elemento del passaggio di orchestrazione che include Type="CombinedSignInAndSignUp"o Type="ClaimsProviderSelection" nel percorso utente. In genere è il primo passaggio di orchestrazione. L'elemento ClaimsProviderSelections contiene un elenco di provider di identità con cui un utente può accedere. L'ordine degli elementi controlla l'ordine dei pulsanti di accesso presentati all'utente. Aggiungere un elemento XML ClaimsProviderSelection . Impostare il valore di TargetClaimsExchangeId su un nome descrittivo.

  2. Nel passaggio di orchestrazione successivo aggiungere un elemento ClaimsExchange . Impostare ID sul valore dell'ID di scambio di attestazioni di destinazione. Aggiornare il valore di TechnicalProfileReferenceId sull'ID del profilo tecnico creato in precedenza.

Il codice XML seguente illustra i primi due passaggi di orchestrazione di un percorso utente con il provider di identità:

<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
  <ClaimsProviderSelections>
    ...
    <ClaimsProviderSelection TargetClaimsExchangeId="ContosoExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="ContosoExchange" TechnicalProfileReferenceId="Contoso-OpenIdConnect" />
  </ClaimsExchanges>
</OrchestrationStep>

Configurare i criteri della relying party

I criteri della relying party, ad esempio SignUpSignIn.xml, specificano il percorso utente che verrà eseguito da Azure AD B2C. Trovare l'elemento DefaultUserJourney all'interno della relying party. Aggiornare ReferenceId in modo che corrisponda all'ID percorso utente in cui è stato aggiunto il provider di identità.

Nell'esempio seguente, per il CustomSignUpSignIn percorso utente, ReferenceId è impostato su CustomSignUpSignIn:

<RelyingParty>
  <DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
  ...
</RelyingParty>

Caricare il criterio personalizzati

  1. Accedi al portale di Azure.
  2. Selezionare l'icona Directory e sottoscrizione nella barra degli strumenti del portale e quindi la directory contenente il tenant di Azure AD B2C.
  3. Nel portale di Azure cercare e selezionare Azure AD B2C.
  4. In Criteri selezionare Identity Experience Framework.
  5. Selezionare Carica criteri personalizzati e quindi caricare i due file di criteri modificati, nell'ordine seguente: i criteri di estensione, ad esempio , quindi i criteri della relying party, ad esempio TrustFrameworkExtensions.xmlSignUpSignIn.xml.
  1. Selezionare i criteri della relying party, ad esempio B2C_1A_signup_signin.
  2. In Applicazione selezionare un'applicazione Web registrata in precedenza. L'URL di risposta dovrebbe mostrare https://jwt.ms.
  3. Selezionare il pulsante Esegui adesso .
  4. Nella pagina di iscrizione o accesso selezionare Contoso per accedere con l'account Google.

Se il processo di accesso ha esito positivo, il browser viene reindirizzato a https://jwt.ms, che visualizza il contenuto del token restituito da Azure AD B2C.

Problemi noti

  • Azure AD B2C non supporta JWE (JSON Web Encryption) per lo scambio di token crittografati con provider di identità OpenID Connect.

Passaggi successivi

Per altre informazioni, vedere la guida di riferimento al profilo tecnico OpenId Connessione.