Compartir a través de


Definición de un perfil técnico de contraseña de un solo uso en una directiva personalizada de Azure AD 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 para administrar la generación y verificación de una contraseña de un solo uso. Utilice un perfil técnico para generar un código y, a continuación, verifique ese código más tarde.

El perfil técnico de contraseña de un solo uso también puede devolver un mensaje de error durante la verificación del código. Diseñe la integración con la contraseña de un solo uso mediante un perfil técnico de validación. Un perfil técnico de validación llama al perfil técnico de contraseña de un solo uso para verificar un código. El perfil técnico de validación valida los datos proporcionados por el usuario antes de que continúe el recorrido del usuario. Con el perfil técnico de validación, se muestra un mensaje de error en una página autoafirmada.

Protocolo

El atributo Name del elemento Protocol tiene que establecerse en Proprietary. El atributo handler debe contener el nombre completo del ensamblado del controlador de protocolo que usa Azure AD B2C:

Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

En el ejemplo siguiente se muestra un perfil técnico de contraseña de un solo uso:

<TechnicalProfile Id="VerifyCode">
  <DisplayName>Validate user input verification code</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  ...

Generación de código

El primer modo de este perfil técnico es generar un código. A continuación se muestran las opciones que se pueden configurar para este modo. Los códigos generados y los intentos se rastrean dentro de la sesión.

Notificaciones de entrada

El elemento InputClaims contiene una lista de notificaciones necesarias para enviar al proveedor de protocolo de contraseña de un solo uso. También puede asignar el nombre de la notificación al nombre que se define a continuación.

ClaimReferenceId Obligatorio Descripción
identificador El identificador para identificar al usuario que necesita verificar el código más adelante. Se utiliza habitualmente como identificador del destino al que se entrega el código, por ejemplo, la dirección de correo electrónico o el número de teléfono.

El elemento InputClaimsTransformations puede contener una colección de elementos InputClaimsTransformation que se usan para modificar las notificaciones de entrada o generar otras nuevas antes de enviarlas al proveedor de protocolo de contraseña de un solo uso.

Notificaciones de salida

El elemento OutputClaims contiene una lista de notificaciones generadas por el proveedor de protocolo de contraseña de un solo uso. También puede asignar el nombre de la notificación al nombre que se define a continuación.

ClaimReferenceId Obligatorio Descripción
otpGenerated El código generado cuya sesión se administra mediante Azure AD B2C.

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

Metadatos

Se pueden utilizar los siguientes ajustes para configurar el modo de generación de código:

Atributo Obligatorio Descripción
Operación Operación que se va a realizar. Valor posible: GenerateCode.
CodeExpirationInSeconds No Tiempo en segundos hasta la caducidad del código. Mínimo: 60; Máximo: 1200; Predeterminado: 600. Cada vez que se proporciona un código (el mismo código usando ReuseSameCode, o un código nuevo), se extiende la caducidad del código. Este tiempo también se usa para establecer el tiempo de espera de reintento (una vez que se alcanza el número máximo de intentos, el usuario no puede intentar obtener nuevos códigos hasta que expire este tiempo)
CodeLength No Longitud del código. El valor predeterminado es 6.
Conjunto de caracteres No Juego de caracteres del código, con formato para su uso en una expresión regular. Por ejemplo: a-z0-9A-Z. El valor predeterminado es 0-9. El juego de caracteres debe incluir un mínimo de 10 caracteres diferentes en el conjunto especificado.
NumRetryAttempts No El número de intentos de verificación antes de que el código se considere no válido. El valor predeterminado es 5. Por ejemplo, si establece NumRetryAttempts en 2, solo le permitirá 2 intentos en total (primero + 1 reintento). Para el 3er intento, lanzará el máximo de intentos alcanzados, independientemente de si el código es correcto o no.
NumCodeGenerationAttempts No El número máximo de intentos de generación de código por identificador. El valor predeterminado es 10 si no se especifica.
ReuseSameCode No Si se debe proporcionar el mismo código en lugar de generar un nuevo código cuando el código dado no ha caducado y sigue siendo válido. El valor predeterminado es false.

Ejemplo

El siguiente ejemplo TechnicalProfile se utiliza para generar un código:

<TechnicalProfile Id="GenerateCode">
  <DisplayName>Generate Code</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="Operation">GenerateCode</Item>
    <Item Key="CodeExpirationInSeconds">600</Item>
    <Item Key="CodeLength">6</Item>
    <Item Key="CharacterSet">0-9</Item>
    <Item Key="NumRetryAttempts">5</Item>
    <Item Key="NumCodeGenerationAttempts">10</Item>
    <Item Key="ReuseSameCode">false</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="identifier" PartnerClaimType="identifier" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="otpGenerated" PartnerClaimType="otpGenerated" />
  </OutputClaims>
</TechnicalProfile>

Verificar código

El segundo modo de este perfil técnico es comprobar un código. A continuación se muestran las opciones que se pueden configurar para este modo.

Notificaciones de entrada

El elemento InputClaims contiene una lista de notificaciones necesarias para enviar al proveedor de protocolo de contraseña de un solo uso. También puede asignar el nombre de la notificación al nombre que se define a continuación.

ClaimReferenceId Obligatorio Descripción
identificador El identificador para identificar al usuario que ha generado previamente un código. Se utiliza habitualmente como identificador del destino al que se entrega el código, por ejemplo, la dirección de correo electrónico o el número de teléfono.
otpToVerify El código de verificación proporcionado por el usuario.

El elemento InputClaimsTransformations puede contener una colección de elementos InputClaimsTransformation que se usan para modificar las notificaciones de entrada o generar otras nuevas antes de enviarlas al proveedor de protocolo de contraseña de un solo uso.

Notificaciones de salida

No se proporcionan notificaciones de salida durante la verificación de código de este proveedor de protocolo.

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

Metadatos

Se pueden usar las siguientes configuraciones para codificar el modo de verificación:

Atributo Obligatorio Descripción
Operación Operación que se va a realizar. Valor posible: VerifyCode.

Elementos de interfaz de usuario

Los metadatos siguientes se pueden usar para configurar los mensajes de error que se muestran tras un error de comprobación de código. Los metadatos deben configurarse en el perfil técnico autoafirmado . Los mensajes de error se pueden localizar.

Atributo Obligatorio Descripción
UserMessageIfSessionDoesNotExist No Mensaje que se mostrará al usuario si la sesión de comprobación de código ha expirado. Es que el código ha caducado o que el código nunca se ha generado para un identificador determinado.
UserMessageIfMaxRetryAttempted No El mensaje que se mostrará al usuario si ha superado el número máximo de intentos de verificación permitidos.
UserMessageIfMaxNumberOfCodeGenerated No Mensaje que se mostrará al usuario si la generación de código ha superado el número máximo de intentos permitidos.
UserMessageIfInvalidCode No El mensaje que se mostrará al usuario si ha proporcionado un código no válido.
UserMessageIfVerificationFailedRetryAllowed No El mensaje que se mostrará al usuario si ha proporcionado un código no válido y el usuario puede proporcionar el código correcto.
UserMessageIfSessionConflict No El mensaje que se mostrará al usuario si no se puede verificar el código.

Ejemplo

El siguiente ejemplo TechnicalProfile se utiliza para verificar un código:

<TechnicalProfile Id="VerifyCode">
  <DisplayName>Verify Code</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="Operation">VerifyCode</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="identifier" PartnerClaimType="identifier" />
    <InputClaim ClaimTypeReferenceId="otpGenerated" PartnerClaimType="otpToVerify" />
  </InputClaims>
</TechnicalProfile>

Pasos siguientes

Consulte el siguiente artículo para ver un ejemplo del uso del perfil técnico de contraseña de un solo uso con verificación de correo electrónico personalizada:

  • Verificación de correo electrónico personalizada en Azure Active Directory B2C (Mailjet, SendGrid)