Compartir a través de


Definición de un perfil técnico de Microsoft Entra en una directiva personalizada de Azure Active Directory B2C

Importante

A partir del 1 de mayo de 2025, Azure AD B2C ya no estará disponible para la compra por parte de nuevos clientes. Obtenga más información en nuestras preguntas más frecuentes.

Nota:

En Azure Active Directory B2C, las directivas personalizadas se han diseñado principalmente para abordar escenarios complejos. Para la mayoría de los escenarios, se recomienda usar flujos de usuario integrados. Si no lo ha hecho, obtenga información sobre el paquete de inicio de directivas personalizadas en Introducción a las directivas personalizadas en Active Directory B2C.

Azure Active Directory B2C (Azure AD B2C) proporciona compatibilidad con la administración de usuarios de Microsoft Entra. En este artículo se describen los detalles para que un perfil técnico interactúe con un proveedor de notificaciones que admita este protocolo estandarizado.

Protocolo

El atributo Name del elemento Protocol tiene que establecerse en Proprietary. El atributo de controlador debe contener el nombre completo del ensamblado Web.TPEngine.Providers.AzureActiveDirectoryProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nulldel controlador de protocolo .

Los siguientes perfiles técnicos de Microsoft Entra del paquete de inicio de directivas personalizados incluyen el perfil técnico AAD-Common . Los perfiles técnicos de Microsoft Entra no especifican el protocolo porque el protocolo está configurado en el perfil técnico AAD-Common :

  • AAD-UserReadUsingAlternativeSecurityId y AAD-UserReadUsingAlternativeSecurityId-NoError : busque una cuenta social en el directorio.
  • AAD-UserWriteUsingAlternativeSecurityId : cree una nueva cuenta social.
  • AAD-UserReadUsingEmailAddress : busque una cuenta local en el directorio.
  • AAD-UserWriteUsingLogonEmail : cree una nueva cuenta local.
  • AAD-UserWritePasswordUsingObjectId : actualice una contraseña de una cuenta local.
  • AAD-UserWriteProfileUsingObjectId : actualice un perfil de usuario de una cuenta local o social.
  • AAD-UserReadUsingObjectId : lea un perfil de usuario de una cuenta local o social.
  • AAD-UserWritePhoneNumberUsingObjectId : escriba el número de teléfono MFA de una cuenta local o social.

En el ejemplo siguiente se muestra el perfil técnico AAD-Common :

<TechnicalProfile Id="AAD-Common">
  <DisplayName>Azure Active Directory</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureActiveDirectoryProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />

  <CryptographicKeys>
    <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
  </CryptographicKeys>

  <!-- We need this here to suppress the SelfAsserted provider from invoking SSO on validation profiles. -->
  <IncludeInSso>false</IncludeInSso>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

InputClaims (Reclamaciones de entrada)

El elemento InputClaims contiene una notificación, que se usa para buscar una cuenta en el directorio o crear una nueva. Debe haber exactamente un elemento InputClaim en la colección de notificaciones de entrada para todos los perfiles técnicos de Microsoft Entra. Es posible que tenga que asignar el nombre de la notificación definida en la directiva al nombre definido en el identificador de Entra de Microsoft.

Para leer, actualizar o eliminar una cuenta de usuario existente, la notificación de entrada es una clave que identifica de forma única la cuenta en el directorio Microsoft Entra. Por ejemplo, objectId, userPrincipalName, signInNames.emailAddress, signInNames.userName o alternativeSecurityId.

Para crear una cuenta de usuario, la notificación de entrada es una clave que identifica de forma única una cuenta local o federada. Por ejemplo, cuenta local: signInNames.emailAddress o signInNames.userName. Para una cuenta federada: alternativeSecurityId.

El elemento InputClaimsTransformations puede contener una colección de elementos de transformación de notificaciones de entrada que se usan para modificar la notificación de entrada o generar uno nuevo.

OutputClaims (Notificaciones de salida)

El elemento OutputClaims contiene una lista de notificaciones devueltas por el perfil técnico de Microsoft Entra. Es posible que tenga que asignar el nombre de la notificación definida en la directiva al nombre definido en el identificador de Entra de Microsoft. También puede incluir notificaciones que no devuelve el identificador de Entra de Microsoft, siempre y cuando establezca el DefaultValue atributo .

El elemento OutputClaimsTransformations puede contener una colección de elementos OutputClaimsTransformation que se usan para modificar las notificaciones de salida o para generar nuevas.

Por ejemplo, el perfil técnico AAD-UserWriteUsingLogonEmail crea una cuenta local y devuelve las siguientes notificaciones:

  • objectId, que es el identificador de la nueva cuenta
  • newUser, que indica si el usuario es nuevo
  • authenticationSource, que establece la autenticación en localAccountAuthentication
  • userPrincipalName, que es el nombre principal de usuario de la nueva cuenta
  • signInNames.emailAddress, que es el nombre de inicio de sesión de la cuenta, similar a la notificación de entrada de correo electrónico
<OutputClaims>
  <OutputClaim ClaimTypeReferenceId="objectId" />
  <OutputClaim ClaimTypeReferenceId="newUser" PartnerClaimType="newClaimsPrincipalCreated" />
  <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" />
  <OutputClaim ClaimTypeReferenceId="userPrincipalName" />
  <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
</OutputClaims>

PersistedClaims

El elemento PersistedClaims contiene todos los valores que debe conservar microsoft Entra ID con información de asignación posible entre un tipo de notificación ya definido en la sección ClaimsSchema de la directiva y el nombre del atributo Microsoft Entra.

El perfil técnico AAD-UserWriteUsingLogonEmail , que crea una nueva cuenta local, conserva las siguientes notificaciones:

  <PersistedClaims>
    <!-- Required claims -->
    <PersistedClaim ClaimTypeReferenceId="email" PartnerClaimType="signInNames.emailAddress" />
    <PersistedClaim ClaimTypeReferenceId="newPassword" PartnerClaimType="password"/>
    <PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />
    <PersistedClaim ClaimTypeReferenceId="passwordPolicies" DefaultValue="DisablePasswordExpiration" />

    <!-- Optional claims. -->
    <PersistedClaim ClaimTypeReferenceId="givenName" />
    <PersistedClaim ClaimTypeReferenceId="surname" />
  </PersistedClaims>

El nombre de la notificación es el nombre del atributo Microsoft Entra a menos que se especifique el atributo PartnerClaimType , que contiene el nombre del atributo Microsoft Entra.

Requisitos de una operación

  • Debe haber exactamente un elemento InputClaim en el contenedor de notificaciones para todos los perfiles técnicos de Microsoft Entra.
  • En el artículo atributos de perfil de usuario se describen los atributos de perfil de usuario de Azure AD B2C admitidos que puede usar en las notificaciones de entrada, las notificaciones de salida y las notificaciones persistentes.
  • Si la operación es Write o DeleteClaims, también debe aparecer en un elemento PersistedClaims .
  • El valor de la notificación userPrincipalName debe tener el formato .user@tenant.onmicrosoft.com
  • La notificación displayName es necesaria y no puede ser una cadena vacía.

Operaciones de perfil técnico de Microsoft Entra

Lectura

La operación De lectura lee datos sobre una sola cuenta de usuario. El siguiente perfil técnico lee datos sobre una cuenta de usuario mediante el valor objectId del usuario:

<TechnicalProfile Id="AAD-UserReadUsingObjectId">
  <Metadata>
    <Item Key="Operation">Read</Item>
    <Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">true</Item>
  </Metadata>
  <IncludeInSso>false</IncludeInSso>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="objectId" Required="true" />
  </InputClaims>
  <OutputClaims>

    <!-- Required claims -->
    <OutputClaim ClaimTypeReferenceId="strongAuthenticationPhoneNumber" />

    <!-- Optional claims -->
    <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
    <OutputClaim ClaimTypeReferenceId="displayName" />
    <OutputClaim ClaimTypeReferenceId="otherMails" />
    <OutputClaim ClaimTypeReferenceId="givenName" />
    <OutputClaim ClaimTypeReferenceId="surname" />
  </OutputClaims>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

Escribir

La operación de escritura crea o actualiza una sola cuenta de usuario. El perfil técnico siguiente crea una nueva cuenta social:

<TechnicalProfile Id="AAD-UserWriteUsingAlternativeSecurityId">
  <Metadata>
    <Item Key="Operation">Write</Item>
    <Item Key="RaiseErrorIfClaimsPrincipalAlreadyExists">true</Item>
    <Item Key="UserMessageIfClaimsPrincipalAlreadyExists">You are already registered, please press the back button and sign in instead.</Item>
  </Metadata>
  <IncludeInSso>false</IncludeInSso>
  <InputClaimsTransformations>
    <InputClaimsTransformation ReferenceId="CreateOtherMailsFromEmail" />
  </InputClaimsTransformations>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="AlternativeSecurityId" PartnerClaimType="alternativeSecurityId" Required="true" />
  </InputClaims>
  <PersistedClaims>
    <!-- Required claims -->
    <PersistedClaim ClaimTypeReferenceId="alternativeSecurityId" />
    <PersistedClaim ClaimTypeReferenceId="userPrincipalName" />
    <PersistedClaim ClaimTypeReferenceId="mailNickName" DefaultValue="unknown" />
    <PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />

    <!-- Optional claims -->
    <PersistedClaim ClaimTypeReferenceId="otherMails" />
    <PersistedClaim ClaimTypeReferenceId="givenName" />
    <PersistedClaim ClaimTypeReferenceId="surname" />
  </PersistedClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectId" />
    <OutputClaim ClaimTypeReferenceId="newUser" PartnerClaimType="newClaimsPrincipalCreated" />
    <OutputClaim ClaimTypeReferenceId="otherMails" />
  </OutputClaims>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>

DeleteClaims

La operación DeleteClaims borra la información de una lista proporcionada de notificaciones. El siguiente perfil técnico elimina las notificaciones:

<TechnicalProfile Id="AAD-DeleteClaimsUsingObjectId">
  <Metadata>
    <Item Key="Operation">DeleteClaims</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="objectId" Required="true" />
  </InputClaims>
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="objectId" />
    <PersistedClaim ClaimTypeReferenceId="Verified.strongAuthenticationPhoneNumber" PartnerClaimType="strongAuthenticationPhoneNumber" />
  </PersistedClaims>
  <OutputClaims />
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

DeleteClaimsPrincipal

La operación DeleteClaimsPrincipal elimina una sola cuenta de usuario del directorio. El siguiente perfil técnico elimina una cuenta de usuario del directorio mediante el nombre principal de usuario:

<TechnicalProfile Id="AAD-DeleteUserUsingObjectId">
  <Metadata>
    <Item Key="Operation">DeleteClaimsPrincipal</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="objectId" Required="true" />
  </InputClaims>
  <OutputClaims/>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

El siguiente perfil técnico elimina una cuenta de usuario social mediante alternativeSecurityId:

<TechnicalProfile Id="AAD-DeleteUserUsingAlternativeSecurityId">
  <Metadata>
    <Item Key="Operation">DeleteClaimsPrincipal</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="alternativeSecurityId" Required="true" />
  </InputClaims>
  <OutputClaims/>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

Metadatos

Atributo Obligatorio Descripción
Operación Operación que se va a realizar. Valores posibles: Read, Write, DeleteClaims o DeleteClaimsPrincipal.
RaiseErrorIfClaimsPrincipalDoesNotExist No Genera un error si el objeto de usuario no existe en el directorio. Valores posibles: true o false.
RaiseErrorIfClaimsPrincipalAlreadyExists No Genere un error si el objeto de usuario ya existe. Valores posibles: true o false. Estos metadatos solo son aplicables a la operación de escritura.
ApplicationObjectId No Identificador de objeto de aplicación para atributos de extensión. Valor: ObjectId de una aplicación. Para obtener más información, consulte Uso de atributos personalizados.
ClientId No Identificador de cliente para acceder al inquilino como un tercero. Para obtener más información, consulte Uso de atributos personalizados en una directiva de edición de perfil personalizada.
IncludeClaimResolvingInClaimsHandling No En el caso de las notificaciones de entrada y salida, especifica si se incluye la resolución de notificaciones en el perfil técnico. Valores posibles: true o false (valor predeterminado). Si desea utilizar un solucionador de notificaciones en el perfil técnico, establézcalo en true.

Elementos de la UI

Se pueden usar las siguientes opciones para configurar el mensaje de error que se muestra tras un error. Los metadatos deben configurarse en el perfil técnico autoafirmado . Los mensajes de error se pueden localizar.

Atributo Obligatorio Descripción
UserMessageIfClaimsPrincipalAlreadyExists No Si se va a generar un error (vea RaiseErrorIfClaimsPrincipalAlreadyExists attribute description), especifique el mensaje que se mostrará al usuario si el objeto de usuario ya existe.
UserMessageIfClaimsPrincipalDoesNotExist No Si se va a generar un error (vea la descripción del atributo RaiseErrorIfClaimsPrincipalDoesNotExist), especifique el mensaje que se mostrará al usuario si el objeto de usuario no existe.

Pasos siguientes

Consulte el siguiente artículo, por ejemplo, el uso del perfil técnico de Microsoft Entra: