Transmisión de un token de acceso del proveedor de identidades a la aplicación en Azure Active Directory B2C

Antes de comenzar, use el selector Elección de un tipo de directiva para elegir el tipo de directiva que va a configurar. Azure Active Directory B2C ofrece dos métodos para definir el modo en que los usuarios interactúan con las aplicaciones: por medio de flujos de usuario predefinidos o de directivas personalizadas totalmente configurables. Los pasos necesarios en este artículo son diferentes para cada método.

Un flujo de usuario en Azure Active Directory B2C (Azure AD B2C) proporciona una oportunidad a los usuarios para registrarse o iniciar sesión con un proveedor de identidades. Cuando esto sucede, Azure AD B2C recibe un token de acceso del proveedor de identidades. Azure AD B2C usa ese token para recuperar información sobre el usuario. Habilite una notificación en el flujo de usuario para pasar el token a través de las aplicaciones que registre en Azure AD B2C.

Actualmente, Azure AD B2C solo admite la transmisión del token de acceso de proveedores de identidades de OAuth 2.0, incluidos Facebook y Google. Para todos los demás proveedores de identidades, la notificación se devuelve en blanco.

Azure AD B2C admite pasar el token de acceso de los proveedores de identidades de OAuth 2.0 y OpenID Connect. Para todos los demás proveedores de identidades, la notificación se devuelve en blanco. Para obtener más información, consulte la demo en directo sobre la federación de proveedores de identidades.

En el diagrama siguiente se muestra cómo un token del proveedor de identidades vuelve a la aplicación:

Identity provider pass through flow

Requisitos previos

Habilitación de la notificación

  1. Inicie sesión en Azure Portal como administrador global del inquilino de Azure AD B2C.

  2. Si tiene acceso a varios inquilinos, seleccione el icono Configuración en el menú superior para cambiar a su inquilino de Azure AD B2C desde el menú Directorios y suscripciones.

  3. Elija Todos los servicios en la esquina superior izquierda de Azure Portal, busque y seleccione Azure AD B2C.

  4. Seleccione Flujos de usuario (directivas) y, a continuación, elija el flujo de usuario. Por ejemplo, B2C_1_signupsignin1.

  5. Seleccione Notificaciones de aplicación.

  6. Habilite la notificación Token de acceso del proveedor de identidades.

    Enable the Identity Provider Access Token claim

  7. Haga clic en Guardar para guardar el flujo de usuario.

Prueba del flujo de usuario

Al probar las aplicaciones en Azure AD B2C, puede ser útil que el token de Azure AD B2C se devuelva a https://jwt.ms para revisar las notificaciones en él.

  1. En la página Introducción del flujo de usuario, seleccione Ejecutar flujo de usuario.

  2. En Aplicación, seleccione la aplicación que registró anteriormente. Para ver el token en el ejemplo siguiente, URL de respuesta debe mostrar https://jwt.ms.

  3. Haga clic en Ejecutar flujo de usuarioy, a continuación, inicie sesión con sus credenciales de cuenta. Debería ver el token de acceso del proveedor de identidades en la notificación idp_access_token.

    Debería ver algo parecido al siguiente ejemplo:

    Decoded token in jwt.ms with idp_access_token block highlighted

Incorporación de elementos de notificación

  1. Abra el archivo TrustframeworkExtensions.xml y agregue el siguiente elemento ClaimType con un identificador de identityProviderAccessToken al 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. Agregue el elemento OutputClaim al elemento TechnicalProfile para cada proveedor de identidades de OAuth 2.0 para el que le gustaría el token de acceso. El ejemplo siguiente muestra el elemento agregado en el perfil técnico de Facebook:

    <ClaimsProvider>
      <DisplayName>Facebook</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Facebook-OAUTH">
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="{oauth2:access_token}" />
          </OutputClaims>
          ...
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  3. Guarde el archivo TrustFrameworkExtensions.xml.

  4. Abra el archivo de directiva del usuario de confianza, como SignUpOrSignIn.xml y agregue el elemento OutputClaim a TechnicalProfile:

    <RelyingParty>
      <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
      <TechnicalProfile Id="PolicyProfile">
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="idp_access_token"/>
        </OutputClaims>
        ...
      </TechnicalProfile>
    </RelyingParty>
    
  5. Guarde el archivo de directiva.

Prueba de la directiva

Al probar las aplicaciones en Azure AD B2C, puede ser útil que el token de Azure AD B2C se devuelva a https://jwt.ms para poder revisar las notificaciones en él.

Carga de los archivos

  1. Inicie sesión en Azure Portal.
  2. Si tiene acceso a varios inquilinos, seleccione el icono Configuración en el menú superior para cambiar a su inquilino de Azure AD B2C desde el menú Directorios y suscripciones.
  3. Elija Todos los servicios en la esquina superior izquierda de Azure Portal, y busque y seleccione Azure AD B2C.
  4. Seleccione Marco de experiencia de identidad.
  5. En la página Directivas personalizadas, haga clic en Cargar directiva.
  6. Seleccione Sobrescribir la directiva, si existe y busque y seleccione el archivo TrustframeworkExtensions.xml.
  7. Seleccione Cargar.
  8. Repita los pasos 5 a 7 para el archivo del usuario de confianza, como SignUpOrSignIn.xml.

Ejecución de la directiva

  1. Abra la directiva que ha cambiado. Por ejemplo, B2C_1A_signup_signin.

  2. En Aplicación, seleccione la aplicación que registró anteriormente. Para ver el token en el ejemplo siguiente, URL de respuesta debe mostrar https://jwt.ms.

  3. Seleccione Ejecutar ahora.

    Debería ver algo parecido al siguiente ejemplo:

    Decoded token in jwt.ms with idp_access_token block highlighted

Pase el token de actualización de IDP (opcional)

El token de acceso que devuelve el proveedor de identidades es válido durante un breve período de tiempo. Algunos proveedores de identidades también emiten un token de actualización junto con el token de acceso. La aplicación cliente puede intercambiar este token de actualización del proveedor de identidades por un nuevo token de acceso cuando es necesario.

La directiva personalizada de Azure AD B2C admite pasar el token de actualización de proveedores de identidades de OAuth 2.0, incluidos Facebook, Google y GitHub.

Para pasar el token de actualización del proveedor de identidades, siga estos pasos:

  1. Abra el archivo TrustframeworkExtensions.xml y agregue el siguiente elemento ClaimType con un identificador de identityProviderRefreshToken al elemento ClaimsSchema.

    <ClaimType Id="identityProviderRefreshToken">
        <DisplayName>Identity provider refresh token</DisplayName>
        <DataType>string</DataType>
    </ClaimType>
    
  2. Agregue el elemento OutputClaim al elemento TechnicalProfile para cada proveedor de identidades de OAuth 2.0 para el que le gustaría el token de actualización. El ejemplo siguiente muestra el elemento agregado en el perfil técnico de Facebook:

    <ClaimsProvider>
      <DisplayName>Facebook</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Facebook-OAUTH">
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="identityProviderRefreshToken" PartnerClaimType="{oauth2:refresh_token}" />
          </OutputClaims>
          ...
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  3. Algunos proveedores de identidades requieren que incluya metadatos o ámbitos en el perfil técnico del proveedor de identidades.

    • Para el proveedor de identidades de Google, agregue dos tipos de notificación: access_type y prompt. A continuación, agregue las siguientes notificaciones de entrada al perfil técnico del proveedor de identidades:

      <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>
      
    • Otros proveedores de identidades pueden tener métodos diferentes para emitir un token de actualización. Siga la audiencia del proveedor de identidades y agregue los elementos necesarios al perfil técnico del proveedor de identidades.

  4. Guarde los cambios realizados en el archivo TrustframeworkExtensions.xml.

  5. Abra el archivo de directiva del usuario de confianza, como SignUpOrSignIn.xml y agregue el elemento OutputClaim a TechnicalProfile:

    <RelyingParty>
      <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
      <TechnicalProfile Id="PolicyProfile">
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="identityProviderRefreshToken" PartnerClaimType="idp_refresh_token"/>
        </OutputClaims>
        ...
      </TechnicalProfile>
    </RelyingParty>
    
  6. Guarde los cambios realizados en el archivo de directiva de usuario de confianza de la directiva.

  7. Cargue el archivo TrustframeworkExtensions.xml y, a continuación, el archivo de directiva del usuario de confianza.

  8. Prueba de la directiva

Pasos siguientes

Consulte la información general sobre los tokens de Azure AD B2C.