Configuración del inicio de sesión para Microsoft Entra ID multiinquilino mediante directivas personalizadas 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.

Esta característica está disponible solo para directivas personalizadas. En los pasos de configuración, elija Directiva personalizada en el selector anterior.

En este artículo se muestra cómo habilitar el inicio de sesión de los usuarios usando el punto de conexión multiinquilino para Microsoft Entra ID. Esto permite a los usuarios de varios inquilinos de Microsoft Entra iniciar sesión en Azure AD B2C sin tener que configurar un proveedor de identidades para cada inquilino. Sin embargo, los miembros invitados en cualquiera de estos inquilinos no podrán iniciar sesión. Para ello, tendrá que configurar individualmente cada inquilino.

Requisitos previos

Nota:

En este artículo, se supone que el paquete de inicio SocialAndLocalAccounts se usa en los pasos anteriores mencionados en los requisitos previos.

Registro de una aplicación de Microsoft Entra

Para habilitar el inicio de sesión para los usuarios con una cuenta de Microsoft Entra en Azure Active Directory B2C (Azure AD B2C), es necesario crear una aplicación en Azure Portal. Para más información, consulte Registro de una aplicación con la plataforma de identidad de Microsoft.

  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 al inquilino del Microsoft Entra ID desde el menú Directorios y suscripciones.

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

  4. Seleccione Nuevo registro.

  5. Escriba el nombre de la aplicación. Por ejemplo, Azure AD B2C App.

  6. Seleccione Cuentas en cualquier directorio organizativo (cualquier directorio de Microsoft Entra: multiinquilino) para esta aplicación.

  7. Para la URI de redirección, acepte el valor de Web y escriba la siguiente dirección URL en minúscula, donde your-B2C-tenant-name se reemplaza por el nombre del inquilino de Azure AD B2C.

    https://your-B2C-tenant-name.b2clogin.com/your-B2C-tenant-name.onmicrosoft.com/oauth2/authresp
    

    Por ejemplo, https://fabrikam.b2clogin.com/fabrikam.onmicrosoft.com/oauth2/authresp.

    Si usa un dominio personalizado, escriba https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp. Reemplace your-domain-name por el dominio personalizado, y your-tenant-name por el nombre del inquilino.

  8. Seleccione Registrar. Anote el Id. de aplicación (cliente) para usarlo en un paso posterior.

  9. Seleccione Certificates & secrets (Certificados y secretos) y luego seleccione Nuevo secreto de cliente.

  10. En Descripción, escriba una descripción para el secreto, seleccione una fecha de expiración y seleccione Agregar. Registre el valor Value del secreto para usarlo en un paso posterior.

Configuración de notificaciones opcionales

Si desea obtener las notificaciones family_name y given_name de Microsoft Entra ID, puede configurar notificaciones opcionales para la aplicación en la interfaz de usuario de Azure Portal o el manifiesto de la aplicación. Para obtener más información, consulteCómo proporcionar notificaciones opcionales a la aplicación de Microsoft Entra.

  1. Inicie sesión en Azure Portal. Busque y seleccione Microsoft Entra ID.
  2. En la sección Administrar, seleccione Registros de aplicaciones.
  3. Seleccione en la lista la aplicación para la que desea configurar notificaciones opcionales.
  4. En la sección Administrar, seleccione Configuración del token.
  5. Seleccione Agregar notificación opcional.
  6. En Tipo de token, seleccione ID.
  7. Seleccione las notificaciones opcionales que va a agregar, family_name y given_name.
  8. Seleccione Agregar. Si aparece Turn on the Microsoft Graph email permission (required for claims to appear in token) (Activar el permiso de correo electrónico de Microsoft Graph [necesario para que aparezcan las notificaciones]), habilítelo y, luego, seleccione de nuevo Agregar.

[Opcional] Comprobación de la autenticidad de la aplicación

La comprobación del editor ayuda a los usuarios a entender la autenticidad de la aplicación que ha registrado. Una aplicación comprobada significa que el editor de la aplicación ha comprobado su identidad mediante su Microsoft Partner Network (MPN). Obtenga información sobre cómo marcar la aplicación como comprobada por el editor.

Creación de una clave de directiva

Debe almacenar la clave de la aplicación que creó en el inquilino de Azure AD B2C.

  1. 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.
  2. Elija Todos los servicios en la esquina superior izquierda de Azure Portal, y busque y seleccione Azure AD B2C.
  3. En Directivas, seleccione Identity Experience Framework.
  4. Seleccione Claves de directiva y luego Agregar.
  5. En Opciones, elija Manual.
  6. Escriba un nombre para la clave de directiva. Por ejemplo, AADAppSecret. El prefijo B2C_1A_ se agrega automáticamente al nombre de la clave cuando se crea, por lo que hace referencia a B2C_1A_AADAAppSecret en el código XML de la siguiente sección.
  7. En Secreto, escriba el secreto de cliente que registró previamente.
  8. En Uso de claves, seleccione Signature.
  9. Seleccione Crear.

Configuración de Microsoft Entra ID como proveedor de identidades

Para permitir que los usuarios inicien sesión con una cuenta de Microsoft Entra, deberá definir Microsoft Entra ID como un proveedor de notificaciones con el que Azure AD B2C pueda comunicarse mediante un punto de conexión. El punto de conexión proporciona un conjunto de notificaciones que Azure AD B2C usa para comprobar que un usuario concreto se ha autenticado.

Para definir Microsoft Entra ID como proveedor de notificaciones, agregue Microsoft Entra ID al elemento ClaimsProvider al archivo de extensión de la directiva.

  1. Abra el archivo SocialAndLocalAccounts/TrustFrameworkExtensions.xml (consulte los archivos que ha usado en los requisitos previos).

  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>commonaad</Domain>
      <DisplayName>Common AAD</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="AADCommon-OpenIdConnect">
          <DisplayName>Multi-Tenant AAD</DisplayName>
          <Description>Login with your Contoso account</Description>
          <Protocol Name="OpenIdConnect"/>
          <Metadata>
            <Item Key="METADATA">https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration</Item>
            <!-- Update the Client ID below to the Application ID -->
            <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>
            <Item Key="DiscoverMetadataByTokenIssuer">true</Item>
            <!-- The key below allows you to specify each of the Azure AD tenants that can be used to sign in. Update the GUIDs below for each tenant. -->
            <Item Key="ValidTokenIssuerPrefixes">https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000,https://login.microsoftonline.com/11111111-1111-1111-1111-111111111111</Item>
            <!-- The commented key below specifies that users from any tenant can sign-in. Uncomment if you would like anyone with an Azure AD account to be able to sign in. -->
            <!-- <Item Key="ValidTokenIssuerPrefixes">https://login.microsoftonline.com/</Item> -->
          </Metadata>
          <CryptographicKeys>
            <Key Id="client_secret" StorageReferenceId="B2C_1A_AADAppSecret"/>
          </CryptographicKeys>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="oid"/>
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
            <OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" />
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
            <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" />
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin"/>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  4. En el elemento ClaimsProvider, actualice el valor de Domain a un valor único que pueda usarse para distinguirlo de otros proveedores de identidades.

  5. En el elemento TechnicalProfile, actualice el valor de DisplayName, por ejemplo, Multi-Tenant AAD. Este valor se muestra en el botón de inicio de sesión de la página de inicio de sesión.

  6. Establezca client_id en el identificador de aplicación de la aplicación multiinquilino de Microsoft Entra que registró anteriormente.

  7. En CryptographicKeys, actualice el valor de StorageReferenceId con el nombre de la clave de directiva que creó anteriormente. Por ejemplo, B2C_1A_AADAppSecret.

Restricción del acceso

Al usar https://login.microsoftonline.com/ como valor para ValidTokenIssuerPrefixes, se permite a todos los usuarios de Microsoft Entra iniciar sesión en la aplicación. Actualice la lista de emisores de tokens válidos y restrinja el acceso a la lista específica de usuarios inquilinos de Microsoft Entra que pueden iniciar sesión.

Para obtener los valores, examine los metadatos de descubrimiento de OpenID Connect de cada uno de los inquilinos de Microsoft Entra desde los que le gustaría que los usuarios iniciaran sesión. El formato de la dirección URL de metadatos es similar a https://login.microsoftonline.com/your-tenant/v2.0/.well-known/openid-configuration, donde your-tenant es el nombre del inquilino de Microsoft Entra. Por ejemplo:

https://login.microsoftonline.com/fabrikam.onmicrosoft.com/v2.0/.well-known/openid-configuration

Siga estos pasos para cada inquilino de Microsoft Entra que se deba usar para iniciar sesión:

  1. Abra el explorador y vaya a la dirección URL de metadatos de OpenID Connect para el inquilino. Busque el objeto issuer y anote su valor. Debe tener un aspecto similar a https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000/v2.0.
  2. Copie y pegue el valor en la clave ValidTokenIssuerPrefixes. Separe varios emisores con una coma. Un ejemplo con dos emisores aparece en el ejemplo de código XML ClaimsProvider anterior.

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="AzureADCommonExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="AzureADCommonExchange" TechnicalProfileReferenceId="AADCommon-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 Microsoft Entra ID común para iniciar sesión con la cuenta de Microsoft Entra.

Para probar la funcionalidad de inicio de sesión de varios inquilinos, realice los dos últimos pasos con las credenciales de un usuario que exista en otro inquilino de Microsoft Entra. Copie el valor de Ejecutar punto de conexión ahora y ábralo en una ventana privada del explorador web, por ejemplo, en modo incógnito en Google Chrome o en una ventana de InPrivate en Microsoft Edge. De esta forma, podrá probar el recorrido completo del usuario sin usar ninguna credencial de Microsoft Entra actualmente almacenada en caché.

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