Passare un token di accesso del provider di identità all'applicazione in 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.

Un flusso utente in Azure Active Directory B2C (Azure AD B2C) offre agli utenti dell'applicazione l'opportunità di iscriversi o accedere con un provider di identità. Quando viene avviato il percorso, Azure AD B2C riceve un token di accesso dal provider di identità. Azure AD B2C usa tale token per recuperare informazioni sull'utente. Si attiva un'attestazione nel flusso utente da passare il token attraverso le applicazioni registrate in Azure AD B2C.

Azure AD B2C supporta il passaggio del token di accesso dei provider di identità OAuth 2.0 , tra cui Facebook e Google. Per tutti gli altri provider di identità, l'attestazione viene restituita vuota.

Azure AD B2C supporta il passaggio del token di accesso dei provider di identità OAuth 2.0 e OpenID Connect. Per tutti gli altri provider di identità, l'attestazione viene restituita vuota. Per altri dettagli, vedere la demo live relativa ai provider di identità federativi.

Il diagramma seguente mostra come viene restituito un token del provider di identità all'app:

Identity provider pass through flow

Prerequisiti

Abilitare l'attestazione

  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 Flussi utente (criteri) e quindi selezionare il flusso utente. Ad esempio, B2C_1_signupsignin1.

  5. Selezionare Attestazioni dell'applicazione.

  6. Abilitare l'attestazione del token di accesso del provider di identità.

    Enable the Identity Provider Access Token claim

  7. Fare clic su Salva per salvare il flusso utente.

Testare il flusso utente

Durante il test delle applicazioni in Azure AD B2C, può essere utile avere restituito il token di Azure AD B2C a https://jwt.ms per esaminare le attestazioni in essa.

  1. Nella pagina Panoramica del flusso utente, selezionare Esegui il flusso utente.

  2. Per Applicazione, selezionare l'applicazione che è stata registrata in precedenza. Per visualizzare il token nell'esempio seguente, l'URL di risposta dovrebbe mostrare https://jwt.ms.

  3. Fare clic su Esegui il flusso utentee quindi accedere con le credenziali dell'account. Verrà visualizzato il token di accesso del provider di identità nell'attestazione idp_access_token.

    Verrà visualizzato un testo simile al seguente esempio:

    Decoded token in jwt.ms with idp_access_token block highlighted

Aggiungere gli elementi di attestazione

  1. Aprire il file TrustframeworkExtensions.xml e aggiungere il seguente elemento ClaimType con un identificatore di identityProviderAccessToken per l'elemento ClaimsSchema:

    <BuildingBlocks>
      <ClaimsSchema>
        <ClaimType Id="identityProviderAccessToken">
          <DisplayName>Identity Provider Access Token</DisplayName>
          <DataType>string</DataType>
          <AdminHelpText>Stores the access token of the identity provider.</AdminHelpText>
        </ClaimType>
        ...
      </ClaimsSchema>
    </BuildingBlocks>
    
  2. Aggiungere l'elemento OutputClaim all'elemento TechnicalProfile per ogni provider di identità OAuth 2.0 per cui si desidera il token di accesso. L'esempio seguente illustra l'elemento aggiunto al profilo tecnico di Facebook:

    <ClaimsProvider>
      <DisplayName>Facebook</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Facebook-OAUTH">
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="{oauth2:access_token}" />
          </OutputClaims>
          ...
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  3. Salvare il file TrustframeworkExtensions.xml.

  4. Aprire un file dei criteri relying party come SignUpOrSignIn.xml e aggiungere l'elemento OutputClaim elemento al TechnicalProfile:

    <RelyingParty>
      <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
      <TechnicalProfile Id="PolicyProfile">
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="idp_access_token"/>
        </OutputClaims>
        ...
      </TechnicalProfile>
    </RelyingParty>
    
  5. Salvare il file dei criteri.

Verificare i criteri

Durante il test delle applicazioni in Azure AD B2C, può essere utile avere restituito il token di Azure AD B2C a https://jwt.ms per riuscire a esaminare le attestazioni in essa.

Caricare i file

  1. Accedi al portale di Azure.
  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 nel portale di Azure e quindi cercare e selezionare Azure AD B2C.
  4. Fare clic su Framework dell'esperienza di gestione delle identità.
  5. Nella pagina dei criteri personalizzati, fare clic su Carica criterio.
  6. Selezionare Sovrascrivi il criterio se esistente, quindi cercare e selezionare il file TrustframeworkExtensions.xml.
  7. Selezionare Carica.
  8. Ripetere i passaggi da 5 a 7 per il file relying party, ad esempio SignUpOrSignIn.xml.

Esegui il criterio

  1. Aprire il criterio che è stato modificato. Ad esempio, B2C_1A_signup_signin.

  2. Per Applicazione, selezionare l'applicazione che è stata registrata in precedenza. Per visualizzare il token nell'esempio seguente, l'URL di risposta dovrebbe mostrare https://jwt.ms.

  3. Selezionare Esegui ora.

    Verrà visualizzato un testo simile al seguente esempio:

    Decoded token in jwt.ms with idp_access_token block highlighted

Passare il token di aggiornamento IDP (facoltativo)

Il token di accesso restituito dal provider di identità è valido per un breve periodo di tempo. Alcuni provider di identità emettono anche un token di aggiornamento insieme al token di accesso. L'applicazione client può quindi scambiare il token di aggiornamento del provider di identità per un nuovo token di accesso quando necessario.

I criteri personalizzati di Azure AD B2C supportano il passaggio del token di aggiornamento dei provider di identità OAuth 2.0, inclusi Facebook, Google e GitHub.

Per passare il token di aggiornamento del provider di identità, seguire questa procedura:

  1. Aprire il file TrustframeworkExtensions.xml e aggiungere l'elemento ClaimType seguente con un identificatore di identityProviderRefreshToken all'elemento ClaimsSchema.

    <ClaimType Id="identityProviderRefreshToken">
        <DisplayName>Identity provider refresh token</DisplayName>
        <DataType>string</DataType>
    </ClaimType>
    
  2. Aggiungere l'elemento OutputClaim all'elemento TechnicalProfile per ogni provider di identità OAuth 2.0 per cui si vuole il token di aggiornamento. L'esempio seguente illustra l'elemento aggiunto al profilo tecnico di Facebook:

    <ClaimsProvider>
      <DisplayName>Facebook</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Facebook-OAUTH">
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="identityProviderRefreshToken" PartnerClaimType="{oauth2:refresh_token}" />
          </OutputClaims>
          ...
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  3. Alcuni provider di identità richiedono di includere metadati o ambiti per il profilo tecnico del provider di identità.

    • Per il provider di identità Google, aggiungere due tipi di access_type attestazione e prompt. Aggiungere quindi le attestazioni di input seguenti al profilo tecnico del provider di identità:

      <InputClaims>
          <InputClaim ClaimTypeReferenceId="access_type" PartnerClaimType="access_type" DefaultValue="offline" AlwaysUseDefaultValue="true" />
      
          <!-- The refresh_token is return only on the first authorization for a given user. Subsequent authorization request doesn't return the refresh_token.
              To fix this issue we add the prompt=consent query string parameter to the authorization request-->
          <InputClaim ClaimTypeReferenceId="prompt" PartnerClaimType="prompt" DefaultValue="consent" AlwaysUseDefaultValue="true" />
      </InputClaims>
      
    • Altri provider di identità possono avere metodi diversi per rilasciare un token di aggiornamento. Seguire il gruppo di destinatari del provider di identità e aggiungere gli elementi necessari al profilo tecnico del provider di identità.

  4. Salvare le modifiche apportate nel file TrustframeworkExtensions.xml .

  5. Aprire un file dei criteri relying party come SignUpOrSignIn.xml e aggiungere l'elemento OutputClaim elemento al TechnicalProfile:

    <RelyingParty>
      <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
      <TechnicalProfile Id="PolicyProfile">
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="identityProviderRefreshToken" PartnerClaimType="idp_refresh_token"/>
        </OutputClaims>
        ...
      </TechnicalProfile>
    </RelyingParty>
    
  6. Salvare le modifiche apportate nel file dei criteri della relying party del criterio.

  7. Caricare il file TrustframeworkExtensions.xml e quindi il file dei criteri della relying party.

  8. Testare i criteri

Passaggi successivi

Altre informazioni sono disponibili nella panoramica dei token di Azure AD B2C.