Compartir vía


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

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.

Todas las interacciones realizadas en Azure Active Directory B2C (Azure AD B2C) en las que se espera que el usuario proporcione una entrada son perfiles técnicos autoafirmados. Por ejemplo, una página de registro, de inicio de sesión o de restablecimiento de la contraseña.

Protocolo

El atributo Name del elemento Protocol tiene que establecerse en Proprietary. El atributo handler debe contener el nombre completo del ensamblado de controlador de protocolo que usa Azure AD B2C para la autoafirmación: Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.

En el ejemplo siguiente se muestra un perfil técnico autoafirmado para el registro de un correo electrónico:

<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
  <DisplayName>Email signup</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />

Notificaciones de entrada

En un perfil técnico autoafirmado, puede usar los elementos InputClaims y InputClaimsTransformations para rellenar previamente el valor de las notificaciones que aparecen en la página autoafirmada (notificaciones de salida). Por ejemplo, en la directiva del perfil de edición, el recorrido del usuario lee primero el perfil de usuario desde el servicio de directorio de Azure AD B2C y, después, el perfil técnico autoafirmado establece las notificaciones de entrada con los datos de usuario almacenados en el perfil de usuario. Estas notificaciones se recopilan desde el perfil de usuario y se presentan al usuario, que después puede editar los datos existentes.

<TechnicalProfile Id="SelfAsserted-ProfileUpdate">
...
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="alternativeSecurityId" />
    <InputClaim ClaimTypeReferenceId="userPrincipalName" />
    <InputClaim ClaimTypeReferenceId="givenName" />
    <InputClaim ClaimTypeReferenceId="surname" />
  </InputClaims>

Notificaciones de visualización

El elemento DisplayClaims contiene una lista de las notificaciones que se van a presentar en la pantalla para recopilar datos del usuario. Para rellenar previamente los valores de las notificaciones de visualización, use las notificaciones de entrada descritas anteriormente. El elemento también puede incluir un valor predeterminado.

El orden de las notificaciones en DisplayClaims especifica el orden en que Azure AD B2C presenta las notificaciones en la pantalla. Para forzar que el usuario proporcione un valor para una notificación específica, establezca el atributo Required del elemento DisplayClaim en true.

El elemento ClaimType de la colección DisplayClaims necesita establecer el elemento UserInputType en cualquier tipo de entrada de usuario admitido por Azure AD B2C. Por ejemplo, TextBox o DropdownSingleSelect.

Adición de una referencia a un elemento DisplayControl

En la colección de notificaciones de visualización, puede incluir una referencia a un elemento DisplayControl que haya creado. Un control de visualización es un elemento de la interfaz de usuario que tiene una funcionalidad especial e interactúa con el servicio de back-end de Azure AD B2C. Permite al usuario realizar acciones en la página que invocan un perfil técnico de validación en el back-end. Por ejemplo, la comprobación de una dirección de correo electrónico, un número de teléfono o un número de fidelidad del cliente.

En el siguiente ejemplo TechnicalProfile se muestra el uso de las notificaciones de visualización con controles de visualización.

  • La primera notificación de visualización hace referencia al control de visualización emailVerificationControl, que recopila y comprueba la dirección de correo.
  • La segunda notificación de presentación hace referencia al captchaChallengeControl control de visualización, que genera y comprueba el código CAPTCHA.
  • La sexta notificación de visualización hace referencia al phoneVerificationControl control de visualización, que recopila y comprueba un número de teléfono.
  • Las demás notificaciones de visualización son elementos ClaimTypes que se van a recopilar del usuario.
<TechnicalProfile Id="Id">
  <DisplayClaims>
    <DisplayClaim DisplayControlReferenceId="emailVerificationControl" />
    <DisplayClaim DisplayControlReferenceId="captchaChallengeControl" />
    <DisplayClaim ClaimTypeReferenceId="displayName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="givenName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="surName" Required="true" />
    <DisplayClaim DisplayControlReferenceId="phoneVerificationControl" />
    <DisplayClaim ClaimTypeReferenceId="newPassword" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
  </DisplayClaims>
</TechnicalProfile>

Como hemos mencionado, una notificación de visualización con una referencia a un control de visualización puede ejecutar su propia validación, por ejemplo la comprobación de la dirección de correo electrónico. Además, la página autofirmada admite el uso de un perfil técnico de validación para validar toda la página, incluidos los datos proporcionados por el usuario (tipos de notificaciones o controles de visualización), antes de pasar al siguiente paso de orquestación.

Combinación del uso de notificaciones de visualización y notificaciones de salida con cuidado

Si especifica uno o más elementos de DisplayClaim en un perfil técnico autoafirmado, debe usar un elemento DisplayClaim para cada notificación que desee mostrar en pantalla y recopilar del usuario. No existe ninguna notificación de salida que muestre el perfil técnico autoafirmado que contenga una notificación de salida como mínimo.

Considere el siguiente ejemplo en el que se define una notificación age como una notificación de salida en una directiva base. Antes de agregar cualquier notificación de visualización al perfil técnico autoafirmado, la notificación age se muestra en la pantalla para la recopilación de datos del usuario:

<TechnicalProfile Id="id">
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="age" />
  </OutputClaims>
</TechnicalProfile>

Si una directiva de hoja que hereda esa base especifica posteriormente officeNumber como una notificación de visualización:

<TechnicalProfile Id="id">
  <DisplayClaims>
    <DisplayClaim ClaimTypeReferenceId="officeNumber" />
  </DisplayClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="officeNumber" />
  </OutputClaims>
</TechnicalProfile>

La age notificación de la directiva base ya no se presenta en la pantalla al usuario, ya que está "oculta". Para mostrar la age notificación y recopilar el valor de edad del usuario, debe agregar un age DisplayClaim.

Notificaciones de salida

El elemento OutputClaims contiene una lista de las notificaciones que se van a devolver en el siguiente paso de orquestación. El atributo DefaultValue solo tiene efecto si la notificación nunca se ha establecido. Si se ha establecido en un paso de orquestación anterior, el valor predeterminado no se aplica aunque el usuario deje el valor vacío. Para forzar el uso de un valor predeterminado, establezca el atributo AlwaysUseDefaultValue en true.

Por motivos de seguridad, un valor de notificación de contraseña (UserInputType establecido en Password) solo está disponible para los perfiles técnicos de validación del perfil técnico autoafirmado. En los pasos de orquestación siguientes, no se puede usar la notificación de contraseñas.

Nota:

En las versiones anteriores de Identity Experience Framework (IEF), las notificaciones de salida se usaban para recopilar datos del usuario. Para recopilar datos del usuario, use una colección DisplayClaims en su lugar.

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

Cuándo se deben usar las notificaciones de salida

En un perfil técnico autoafirmado, la colección de notificaciones de salida devuelve las notificaciones en el siguiente paso de orquestación.

Use notificaciones de salida si:

  • Las notificaciones se emiten mediante la transformación de notificaciones de salida
  • Establece un valor predeterminado en una notificación de salida sin recopilar datos del usuario ni devolver los datos desde el perfil técnico de validación. El perfil técnico autoafirmado LocalAccountSignUpWithLogonEmail establece la notificación executed-SelfAsserted-Input en true.
  • Un perfil técnico de validación devuelve las notificaciones de salida: su perfil técnico puede llamar a un perfil técnico de validación que devuelve algunas notificaciones. Es posible que desee propagar las notificaciones y devolverlas a los siguientes pasos de orquestación en el recorrido del usuario. Por ejemplo, al iniciar sesión con una cuenta local, el perfil técnico autoafirmado denominado SelfAsserted-LocalAccountSignin-Email llama al perfil técnico de validación denominado login-NonInteractive. Este perfil técnico valida las credenciales de usuario y también devuelve el perfil de usuario. Por ejemplo, “userPrincipalName”, “displayName”, “givenName” y “surName”.
  • Un control de visualización devuelve las notificaciones de salida: su perfil técnico puede tener una referencia a un control de visualización. El control de visualización devuelve algunas notificaciones, como la dirección de correo electrónico comprobada. Es posible que desee propagar las notificaciones y devolverlas a los siguientes pasos de orquestación en el recorrido del usuario.

En el ejemplo siguiente se muestra el uso de un perfil técnico autoafirmado que utiliza notificaciones de visualización y notificaciones de salida.

<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
  <DisplayName>Email signup</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="IpAddressClaimReferenceId">IpAddress</Item>
    <Item Key="ContentDefinitionReferenceId">api.localaccountsignup</Item>
    <Item Key="language.button_continue">Create</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" />
  </InputClaims>
  <DisplayClaims>
    <DisplayClaim DisplayControlReferenceId="emailVerificationControl" />
    <DisplayClaim DisplayControlReferenceId="SecondaryEmailVerificationControl" />
    <DisplayClaim ClaimTypeReferenceId="displayName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="givenName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="surName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="newPassword" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
  </DisplayClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="email" Required="true" />
    <OutputClaim ClaimTypeReferenceId="objectId" />
    <OutputClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" DefaultValue="true" />
    <OutputClaim ClaimTypeReferenceId="authenticationSource" />
    <OutputClaim ClaimTypeReferenceId="newUser" />
  </OutputClaims>
  <ValidationTechnicalProfiles>
    <ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonEmail" />
  </ValidationTechnicalProfiles>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>

Nota:

Cuando recopila el valor de notificación de contraseña en el perfil técnico autoafirmado, ese valor solo está disponible dentro del mismo perfil técnico o en perfiles técnicos de validación a los que hace referencia ese mismo perfil técnico autoafirmado. Cuando se completa la ejecución de ese perfil técnico autoafirmado y se mueve a otro perfil técnico, se pierde el valor de la contraseña. Por lo tanto, la notificación de contraseña solo se puede almacenar en el paso de orquestación en el que se recopila.

Página de registro o inicio de sesión de notificaciones de salida

En una página de registro e inicio de sesión combinados, tenga en cuenta lo siguiente al usar un elemento DataUri de definición de contenido que especifica un tipo de página unifiedssp o unifiedssd:

  • Solo se representan las notificaciones de nombre de usuario y contraseña.
  • Las dos primeras notificaciones de salida deben ser el nombre de usuario y la contraseña (en este orden).
  • Las demás notificaciones no se representan; para ellas, debe establecer defaultValue o invocar un perfil técnico de validación de formularios de notificaciones.

Conservar las notificaciones

El elemento PersistedClaims no se usa. El perfil técnico autoafirmado no conserva los datos en Azure AD B2C. En cambio, se realiza una llamada a un perfil técnico de validación que es responsable de conservar los datos. Por ejemplo, la directiva de registro usa el perfil técnico autoafirmado LocalAccountSignUpWithLogonEmail para recopilar el nuevo perfil de usuario. El perfil técnico LocalAccountSignUpWithLogonEmail llama al perfil técnico de validación para crear la cuenta en Azure AD B2C.

Perfiles técnicos de validación

Los perfiles técnicos de validación se usan para validar algunas o todas las notificaciones de salida del perfil técnico al que hace referencia. Las notificaciones de entrada del perfil técnico de validación de entrada deben aparecer en las notificaciones de salida del perfil técnico autoafirmado. El perfil técnico de validación valida la entrada del usuario y puede devolver un error al usuario.

El perfil técnico de validación puede ser cualquier perfil técnico de la directiva, como perfiles técnicos de Microsoft Entra ID o de una API de REST. En el ejemplo anterior, el perfil técnico LocalAccountSignUpWithLogonEmail valida que signinName no exista en el directorio. En caso contrario, el perfil técnico de validación crea una cuenta local y devuelve los valores objectId, authenticationSource y newUser. El perfil técnico SelfAsserted-LocalAccountSignin-Email llama al perfil técnico de validación login-NonInteractive para validar las credenciales del usuario.

También puede llamar a un perfil técnico de la API de REST con la lógica de negocios, sobrescribir notificaciones de entrada o enriquecer los datos del usuario mediante una integración adicional de una aplicación de línea de negocio corporativa. Para obtener más información, vea Perfil técnico de validación.

Nota

Un perfil técnico de validación solo se desencadena cuando hay una entrada del usuario. No puede crear un perfil técnico autoafirmado vacío para llamar a un perfil técnico de validación solo para aprovechar el atributo ContinueOnError de un elemento ValidationTechnicalProfile. Solo puede llamar a un perfil técnico de validación desde un perfil técnico autoafirmado que solicite una entrada del usuario o desde un paso de orquestación en un recorrido del usuario.

Metadatos

Atributo Obligatorio Descripción
setting.operatingMode 1 No En una página de inicio de sesión, esta propiedad controla el comportamiento del campo de nombre de usuario, como la validación de entrada y los mensajes de error. Valores esperados: Username o Email. Consulte la demo en vivo de estos metadatos.
AllowGenerationOfClaimsWithNullValues No Permite que se genere una notificación con un valor NULL. Por ejemplo, en caso de que un usuario no active una casilla.
ContentDefinitionReferenceId El identificador de la definición de contenido asociada a este perfil técnico.
EnforceEmailVerification No Para registrarse o editar el perfil, exige la comprobación del correo electrónico. Valores posibles: true (opción predeterminada) o false.
setting.retryLimit No Controla el número de veces que un usuario puede intentar proporcionar los datos que se comprueban con un perfil técnico de validación. Por ejemplo, un usuario intenta registrarse con una cuenta que ya existe y sigue intentando hasta que se alcanza el límite. Consulte la demo en vivo de estos metadatos.
SignUpTarget 1 No Identificador de intercambio de destinos del registro. Cuando el usuario hace clic en el botón de registro, Azure AD B2C ejecuta el identificador de intercambio especificado.
setting.showCancelButton No Muestra el botón para cancelar. Valores posibles: true (opción predeterminada) o false. Consulte la demo en vivo de estos metadatos.
setting.showContinueButton No Muestra el botón para continuar. Valores posibles: true (opción predeterminada) o false. Consulte la demo en vivo de estos metadatos.
setting.showSignupLink 2 No Muestra el botón para registrarse. Valores posibles: true (opción predeterminada) o false. Consulte la demo en vivo de estos metadatos.
setting.forgotPasswordLinkLocation 2 No Muestra el vínculo de contraseña olvidada. Valores posibles: AfterLabel (valor predeterminado) muestra el vínculo directamente después de la etiqueta o después del campo de entrada de la contraseña cuando no hay ninguna etiqueta, AfterInput muestra el vínculo después del campo de entrada de la contraseña, AfterButtons muestra el vínculo en la parte inferior del formulario después de los botones o None quita el vínculo de contraseña olvidada. Consulte la demo en vivo de estos metadatos.
setting.enableRememberMe 2 No Muestra la casilla Mantener la sesión iniciada. Valores posibles: true o false (valor predeterminado). Demo en vivo de estos metadatos.
setting.inputVerificationDelayTimeInMilliseconds 3 No Mejora la experiencia del usuario, ya que espera a que el usuario deje de escribir y, a continuación, valida el valor. El valor predeterminado es 2000 milisegundos. Consulte la demo en vivo de estos metadatos.
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.
setting.forgotPasswordLinkOverride 4 No Intercambio de solicitudes de restablecimiento de contraseña que se va a ejecutar. Para más información, consulte Autoservicio de restablecimiento de contraseña.
setting.enableCaptchaChallenge No Especifica si se debe mostrar el código de desafío CAPTCHA. Valores posibles: true o false (valor predeterminado). Para que esta configuración funcione, se debe hacer referencia al control de visualización CAPTCHA en las notificaciones de presentación del perfil técnico autoafirmado. La característica CAPTCHA está en versión preliminar pública.
setting.showHeading No Especifica si el elemento de encabezado Detalles del usuario debe estar visible. Valores posibles: true (opción predeterminada) o false.

Notas:

  1. Disponible para el tipo de definición de contenido DataUri de unifiedssp o unifiedssd.
  2. Disponible para el tipo de definición de contenido DataUri de unifiedssp o unifiedssd. Versión de diseño de página 1.1.0 y versiones posteriores.
  3. Disponible para la versión de diseño de página 1.2.0 y versiones posteriores.
  4. Disponible para el tipo de definición de contenido DataUri de unifiedssp. Versión de diseño de página 2.1.2 y versiones posteriores.

Claves de cifrado

El elemento CryptographicKeys no se usa.