Incorporación de AD FS como proveedor de identidades de OpenID Connect mediante las directivas personalizadas de Azure Active Directory B2C

Antes de comenzar, utilice 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.

Requisitos previos

Crear una aplicación de AD FS

Para habilitar el inicio de sesión para los usuarios con una cuenta deADFS en Azure Active Directory B2C (Azure AD B2C), cree un grupo de aplicaciones en su AD FS. Para más información, consulte Compilación de una aplicación web mediante OpenID Connect con AD FS 2016 y versiones posteriores

Para crear un grupo de aplicaciones, siga estos pasos:

  1. En el Administrador del servidor, seleccione Herramientas y luego Administración de AD FS.
  2. En Administración de AD FS, haga clic con el botón derecho en Grupos de aplicaciones y seleccione Agregar grupo de aplicaciones.
  3. En la pantalla de bienvenida del asistente para grupos de aplicaciones:
    1. Escriba el nombre de la aplicación. Por ejemplo, Aplicación de Azure AD B2C.
    2. En Aplicaciones cliente-servidor, seleccione la plantilla Explorador web que accede a una aplicación web.
    3. Seleccione Siguiente.
  4. En la pantalla Aplicación nativa del Asistente para grupos de aplicaciones:
    1. Copie el valor de Identificador de cliente. El identificador de cliente es el id. de aplicación de AD FS. Necesitará el id. de aplicación más adelante en este artículo.
    2. En URI de redireccionamiento, escriba https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/oauth2/authresp y, a continuación, Agregar. Si usa un dominio personalizado, escriba https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp. Reemplace your-tenant-name por el nombre del inquilino y your-domain-name por el dominio personalizado.
    3. Seleccione Siguiente, después, Siguiente, y de nuevo Siguiente para completar el asistente para registro de aplicaciones.
    4. Seleccione Cerrar.

Configurar las notificaciones de la aplicación

En este paso, configure las notificaciones que la aplicación AD FS devuelve a Azure AD B2C.

  1. En los Grupos de aplicaciones, seleccione la aplicación que ha creado.

  2. En la ventana de propiedades de la aplicación, en Aplicaciones, seleccione la Aplicación web. Después, seleccione Editar. Screenshot that shows how to edit a web application.

  3. Seleccione la pestaña Reglas de transformación de emisión. Luego, seleccione Agregar regla.

  4. En Plantilla de regla de notificación, seleccione Enviar atributos LDAP como notificaciones y, a continuación, Siguiente.

  5. Proporcione un valor en Claim rule name (Nombre de la regla de notificación). Para el Almacén de atributos, seleccione Active Directory y agregue las siguientes notificaciones.

    Atributo LDAP Tipo de notificación saliente
    User-Principal-Name upn
    Surname family_name
    Given-Name given_name
    Display-Name name

    Tenga en cuenta que algunos de los nombres no se mostrarán en la lista desplegable de tipo de notificaciones salientes. Debe escribirlos manualmente (la lista desplegable se puede editar).

  6. Seleccione Finalizar.

  7. Seleccione Aplicar y, después, Aceptar.

  8. Vuelva a seleccionar Aceptar para terminar.

Configurar AD FS como proveedor de identidades

  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 al inquilino del 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 Proveedores de identidades y luego Nuevo proveedor de OpenID Connect.

  5. Escriba un nombre. Por ejemplo, Contoso.

  6. En URL de metadatos, escriba la dirección URL del documento de configuración de AD FS OpenID Connect. Por ejemplo:

    https://adfs.contoso.com/adfs/.well-known/openid-configuration 
    
  7. En Id. de cliente, escriba el identificador de aplicación que ha anotado anteriormente.

  8. En Ámbito, escriba el valor de openid.

  9. En Tipo de respuesta, seleccione id_token. Por lo tanto, el valor Secreto de cliente no es necesario. Obtenga más información sobre el uso del identificador de cliente y secreto al agregar un proveedor de identidades de OpenID Connect genérico.

  10. (Opcional) En Sugerencia de dominio, escriba contoso.com. Para más información, consulte Configuración de inicio de sesión directo con Azure Active Directory B2C.

  11. En Asignación de notificaciones del proveedor de identidades, seleccione las siguientes notificaciones:

    • Id. de usuario: upn
    • Nombre para mostrar: unique_name
    • Nombre propio: given_name
    • Apellido
  12. Seleccione Guardar.

Adición del proveedor de identidades AD FS a un flujo de usuario

En este momento ya está configurado el proveedor de identidades de AD FS (Contoso), pero no está disponible en ninguna de las páginas de inicio de sesión. Para agregar el proveedor de identidades de AD FS a un flujo de usuario:

  1. En el inquilino de Azure AD B2C, seleccione Flujos de usuario.
  2. Seleccione el flujo de usuario al que quiera agregar el proveedor de identidades de AD FS (Contoso).
  3. En Proveedores de identidades sociales, seleccione Contoso.
  4. Seleccione Guardar.
  5. Para probar la directiva, seleccione Ejecutar flujo de usuario.
  6. En Aplicación, seleccione la aplicación web denominada testapp1 que registró anteriormente. La dirección URL de respuesta debe mostrar https://jwt.ms.
  7. Seleccione el botón Ejecutar flujo de usuario.
  8. En la página de registro o de inicio de sesión, seleccione Contoso para iniciar sesión con la cuenta de Contoso.

Si el proceso de inicio de sesión se completa correctamente, el explorador se redirige a https://jwt.ms, que muestra el contenido del token devuelto por Azure AD B2C.

Configurar AD FS como proveedor de identidades

Para permitir que los usuarios inicien sesión con una cuenta de AD FS, debe definir AD FS como proveedor de notificaciones con el que Azure AD B2C pueda comunicarse a través de un punto de conexión.

  1. Abra el archivo TrustFrameworkExtensions.xml.

  2. Busque el elemento ClaimsProviders. Si no existe, agréguelo debajo del elemento raíz.

  3. Agregue un nuevo elemento ClaimsProvider tal como se muestra a continuación:

    <ClaimsProvider>
      <Domain>contoso.com</Domain>
      <DisplayName>Contoso</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Contoso-OpenIdConnect">
          <DisplayName>Contoso</DisplayName>
          <Protocol Name="OpenIdConnect" />
          <Metadata>
            <Item Key="METADATA">https://your-adfs-domain/adfs/.well-known/openid-configuration</Item>
            <Item Key="response_types">id_token</Item>
            <Item Key="response_mode">form_post</Item>
            <Item Key="scope">openid</Item>
            <Item Key="HttpBinding">POST</Item>
            <Item Key="UsePolicyInRedirectUri">0</Item>
            <!-- Update the Client ID below to the Application ID -->
            <Item Key="client_id">Your AD FS application ID</Item>
          </Metadata>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="upn" />
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
            <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="family_name" />
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="unique_name" />
            <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss"  />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" />
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" />
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" />
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  4. En la URL de metadatos, escriba la dirección URL del documento de configuración de AD FS OpenID Connect. Por ejemplo:

    https://adfs.contoso.com/adfs/.well-known/openid-configuration 
    
  5. Establezca client_id en el identificador de la aplicación desde el registro de aplicación.

  6. Guarde el archivo.

Adición de un recorrido del usuario

En este momento, el proveedor de identidades ya se ha configurado, pero no está disponible en ninguna de las pantallas de inicio de sesión. Si no tiene su propio recorrido del usuario personalizado, cree un duplicado de un recorrido del usuario de la plantilla existente; de lo contrario, continúe con el paso siguiente.

  1. Abra el archivo TrustFrameworkBase.xml del paquete de inicio.
  2. Busque y copie todo el contenido del elemento UserJourney que incluye Id="SignUpOrSignIn".
  3. Abra el archivo TrustFrameworkExtensions.xml y busque el elemento UserJourneys. Si el elemento no existe, agréguelo.
  4. Pegue todo el contenido del elemento UserJourney que ha copiado como elemento secundario del elemento UserJourneys.
  5. Cambie el identificador del recorrido del usuario. Por ejemplo, Id="CustomSignUpSignIn".

Adición del proveedor de identidades a un recorrido del usuario

Ahora que tiene un recorrido del usuario, agregue el nuevo proveedor de identidades al recorrido del usuario. En primer lugar, agregue un botón de inicio de sesión y, después, vincule el botón a una acción. La acción es el perfil técnico que creó anteriormente.

  1. Busque el elemento del paso de orquestación que incluye Type="CombinedSignInAndSignUp" o Type="ClaimsProviderSelection"en el recorrido del usuario. Normalmente es el primer paso de orquestación. El elemento ClaimsProviderSelections contiene una lista de proveedores de identidades con los que un usuario puede iniciar sesión. El orden de los elementos controla el orden de los botones de inicio de sesión que se presentan al usuario. Agregue un elemento XML ClaimsProviderSelection. Establezca el valor de TargetClaimsExchangeId en un nombre descriptivo.

  2. En el paso de orquestación siguiente, agregue un elemento ClaimsExchange. Establezca el Id en el valor del identificador de intercambio de notificaciones de destino. Actualice el valor de TechnicalProfileReferenceId al del identificador del perfil técnico que creó anteriormente.

En el siguiente código XML se muestran los dos primeros pasos de orquestación de un recorrido del usuario con el proveedor de identidades:

<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>

Configuración de la directiva de usuario de confianza.

La directiva de usuario de confianza, por ejemplo SignUpSignIn.xml, especifica el recorrido del usuario que ejecutará Azure AD B2C. Busque el elemento DefaultUserJourney en el usuario de confianza. Actualice ReferenceId para que coincida con el identificador del recorrido del usuario, en el que agregó el proveedor de identidades.

En el ejemplo siguiente, para el recorrido de usuario CustomSignUpSignIn, el ReferenceId está establecido en CustomSignUpSignIn:

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

Carga de la directiva personalizada

  1. Inicie sesión en Azure Portal.
  2. Seleccione el icono Directorio y suscripción en la barra de herramientas del portal y, luego, elija el directorio que contiene el inquilino de Azure AD B2C.
  3. En Azure Portal, busque y seleccione Azure AD B2C.
  4. En Directivas, seleccione Identity Experience Framework.
  5. Seleccione Cargar directiva personalizada y, a continuación, cargue los dos archivos de directivas que ha cambiado, en el siguiente orden: la directiva de extensiones, por ejemplo TrustFrameworkExtensions.xml, luego la directiva de usuarios de confianza, como SignUpSignIn.xml.

Prueba de la directiva personalizada

  1. Seleccione la directiva de usuarios de confianza, por ejemplo B2C_1A_signup_signin.
  2. En Aplicación, seleccione la aplicación web que registró anteriormente. La dirección URL de respuesta debe mostrar https://jwt.ms.
  3. Seleccione el botón Ejecutar ahora.
  4. En la página de registro o de inicio de sesión, seleccione Contoso para iniciar sesión con la cuenta de Contoso.

Si el proceso de inicio de sesión se completa correctamente, el explorador se redirige a https://jwt.ms, que muestra el contenido del token devuelto por Azure AD B2C.

Pasos siguientes

Obtenga información sobre cómo pasar el token de AD-FS a la aplicación.