Definición de un perfil técnico de una contraseña de un solo uso en una directiva personalizada de Azure AD B2CDefine a one-time password technical profile in an Azure AD B2C custom policy

Nota

En Azure Active Directory B2C, las directivas personalizadas se han diseñado principalmente para abordar escenarios complejos.In Azure Active Directory B2C, custom policies are designed primarily to address complex scenarios. Para la mayoría de los escenarios, se recomienda usar flujos de usuario integrados.For most scenarios, we recommend that you use built-in user flows.

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.Azure Active Directory B2C (Azure AD B2C) provides support for managing the generation and verification of a one-time password. Use un perfil técnico para generar un código y, a continuación, verifique el código más adelante.Use a technical profile to generate a code, and then verify that code later.

El perfil técnico de la contraseña de un solo uso también puede devolver un mensaje de error durante la verificación del código.The one-time password technical profile can also return an error message during code verification. Puede diseñar la integración con la contraseña de un solo uso mediante el uso de un perfil técnico de validación.Design the integration with the one-time password by using a Validation technical profile. Un perfil técnico de validación llama al perfil técnico de la contraseña de un solo uso para verificar un código.A validation technical profile calls the one-time password technical profile to verify a code. El perfil técnico de validación valida los datos que proporciona el usuario antes de que continúe el recorrido del usuario.The validation technical profile validates the user-provided data before the user journey continues. Con el perfil técnico de validación, se muestra un mensaje de error en una página autoafirmada.With the validation technical profile, an error message is displayed on a self-asserted page.

ProtocoloProtocol

El atributo Name del elemento Protocol tiene que establecerse en Proprietary.The Name attribute of the Protocol element needs to be set to Proprietary. El atributo handler debe contener el nombre completo del ensamblado del controlador de protocolo que usa Azure AD B2C:The handler attribute must contain the fully qualified name of the protocol handler assembly that is used by 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:The following example shows a one-time password technical profile:

<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ódigoGenerate code

El primer modo de este perfil técnico es para generar un código.The first mode of this technical profile is to generate a code. A continuación, se muestran las opciones que se pueden configurar para este modo.Below are the options that can be configured for this mode. Durante la sesión se realiza un seguimiento de los códigos generados y de los intento.Codes generated and attempts are tracked within the session.

Notificaciones de entradaInput claims

El elemento InputClaims contiene una lista de las notificaciones que se deben enviar al proveedor de protocolo de contraseña de un solo uso.The InputClaims element contains a list of claims required to send to the one-time password protocol provider. También puede asignar el nombre de la notificación al nombre que se define a continuación.You can also map the name of your claim to the name defined below.

ClaimReferenceIdClaimReferenceId ObligatorioRequired DescripciónDescription
identificadoridentifier Yes Identificador que se usa identificar al usuario que debe verificar el código más adelante.The identifier to identify the user who needs to verify the code later. Normalmente se usa como el identificador del destino en el que se entrega el código, por ejemplo, la dirección de correo electrónico o el número de teléfono.It is commonly used as the identifier of the destination where the code is delivered to, for example email address or phone number.

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 del envío al proveedor de protocolo de contraseña de un solo uso.The InputClaimsTransformations element may contain a collection of InputClaimsTransformation elements that are used to modify the input claims or generate new ones before sending to the one-time password protocol provider.

Notificaciones de salidaOutput claims

El elemento InputClaims contiene una lista de las notificaciones que genera el proveedor de protocolo de contraseña de un solo uso.The OutputClaims element contains a list of claims generated by the one-time password protocol provider. También puede asignar el nombre de la notificación al nombre que se define a continuación.You can also map the name of your claim to the name defined below.

ClaimReferenceIdClaimReferenceId ObligatorioRequired DescripciónDescription
otpGeneratedotpGenerated Yes Código generado cuya sesión se administra mediante Azure AD B2C.The generated code whose session is managed by 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.The OutputClaimsTransformations element may contain a collection of OutputClaimsTransformation elements that are used to modify the output claims or generate new ones.

MetadatosMetadata

La configuración siguiente se puede usar para establecer el modo de generación de código:The following settings can be used to configure code generation mode:

AtributoAttribute ObligatorioRequired DescripciónDescription
CodeExpirationInSecondsCodeExpirationInSeconds NoNo Tiempo en segundos hasta la expiración del código.Time in seconds until code expiration. Mínimo: 60; máximo: 1200; valor predeterminado: 600.Minimum: 60; Maximum: 1200; Default: 600. Cada vez que se proporciona un código (el mismo código que usa ReuseSameCode, o un código nuevo), se amplía la expiración del código.Every time a code is provided (same code using ReuseSameCode, or a new code), the code expiration is extended. También se usa para establecer el tiempo de espera de reintento (una vez alcanzado el máximo de intentos, el usuario no podrá intentar obtener nuevos códigos hasta que expire este tiempo).This time is also used to set retry timeout (once max attempts are reached, user is locked out from attempting to obtain new codes until this time expires)
CodeLengthCodeLength NoNo Longitud del código.Length of the code. El valor predeterminado es 6.The default value is 6.
CharacterSetCharacterSet NoNo Juego de caracteres del código, con formato para usarse en una expresión regular.The character set for the code, formatted for use in a regular expression. Por ejemplo, a-z0-9A-Z.For example, a-z0-9A-Z. El valor predeterminado es 0-9.The default value is 0-9. El juego de caracteres debe incluir un mínimo de 10 caracteres diferentes en el conjunto especificado.The character set must include a minimum of 10 different characters in the set specified.
NumRetryAttemptsNumRetryAttempts NoNo Número de intentos de verificación antes de que el código se considere no válido.The number of verification attempts before the code is considered invalid. El valor predeterminado es 5.The default value is 5.
NumCodeGenerationAttemptsNumCodeGenerationAttempts NoNo Número máximo de intentos de generación de código por identificador.The number of maximum code generation attempts per identifier. Si no se especifica, el valor predeterminado es 10.The default value is 10 if not specified.
OperaciónOperation Yes La operación que se va a realizar.The operation to be performed. Valor posible: GenerateCode.Possible value: GenerateCode.
ReuseSameCodeReuseSameCode NoNo Indica si se debe proporcionar el mismo código en lugar de generar un código nuevo cuando el código proporcionado no ha expirado y sigue siendo válido.Whether the same code should be given rather than generating a new code when given code has not expired and is still valid. El valor predeterminado es false.The default value is false.

EjemploExample

En el siguiente ejemplo, TechnicalProfile se usa para generar un código:The following example TechnicalProfile is used for generating a code:

<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">15</Item>
    <Item Key="ReuseSameCode">false</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="identifier" PartnerClaimType="identifier" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="otpGenerated" PartnerClaimType="otpGenerated" />
  </OutputClaims>
</TechnicalProfile>

Compruebe el código.Verify code

El segundo modo de este perfil técnico es verificar un código.The second mode of this technical profile is to verify a code. A continuación, se muestran las opciones que se pueden configurar para este modo.Below are the options that can be configured for this mode.

Notificaciones de entradaInput claims

El elemento InputClaims contiene una lista de las notificaciones que se deben enviar al proveedor de protocolo de contraseña de un solo uso.The InputClaims element contains a list of claims required to send to the one-time password protocol provider. También puede asignar el nombre de la notificación al nombre que se define a continuación.You can also map the name of your claim to the name defined below.

ClaimReferenceIdClaimReferenceId ObligatorioRequired DescripciónDescription
identificadoridentifier Yes Identificador que se usa para identificar al usuario que ha generado previamente un código.The identifier to identify the user who has previously generated a code. Normalmente se usa como el identificador del destino en el que se entrega el código, por ejemplo, la dirección de correo electrónico o el número de teléfono.It is commonly used as the identifier of the destination where the code is delivered to, for example email address or phone number.
otpToVerifyotpToVerify Yes Código de verificación que proporciona el usuario.The verification code provided by the user.

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 del envío al proveedor de protocolo de contraseña de un solo uso.The InputClaimsTransformations element may contain a collection of InputClaimsTransformation elements that are used to modify the input claims or generate new ones before sending to the one-time password protocol provider.

Notificaciones de salidaOutput claims

No se proporcionan notificaciones de salida durante la verificación del código de este proveedor de protocolo.There are no output claims provided during code verification of this protocol provider.

El elemento OutputClaimsTransformations puede contener una colección de elementos OutputClaimsTransformation que se usan para modificar las notificaciones de salida o para generar nuevas.The OutputClaimsTransformations element may contain a collection of OutputClaimsTransformation elements that are used to modify the output claims or generate new ones.

MetadatosMetadata

La configuración siguiente se puede usar para establecer el modo de comprobación de código:The following settings can be used to code verification mode:

AtributoAttribute ObligatorioRequired DescripciónDescription
OperaciónOperation Yes La operación que se va a realizar.The operation to be performed. Valor posible: VerifyCode.Possible value: VerifyCode.

Elementos de interfaz de usuarioUI elements

Los metadatos siguientes se pueden usar para configurar los mensajes de error que se muestran cuando se produce un error en la comprobación de código.The following metadata can be used to configure the error messages displayed upon code verification failure. Los metadatos se deben configurar en el perfil técnico autoafirmado.The metadata should be configured in the self-asserted technical profile. Los mensajes de error se pueden localizar.The error messages can be localized.

AtributoAttribute ObligatorioRequired DescripciónDescription
UserMessageIfSessionDoesNotExistUserMessageIfSessionDoesNotExist NoNo Mensaje que se mostrará al usuario si la sesión de verificación de código ha expirado.The message to display to the user if the code verification session has expired. Es posible que el código haya expirado o que nunca se haya generado para un identificador determinado.It is either the code has expired or the code has never been generated for a given identifier.
UserMessageIfMaxRetryAttemptedUserMessageIfMaxRetryAttempted NoNo Mensaje que se mostrará al usuario si ha superado el número máximo de intentos de verificación permitidos.The message to display to the user if they've exceeded the maximum allowed verification attempts.
UserMessageIfMaxNumberOfCodeGeneratedUserMessageIfMaxNumberOfCodeGenerated NoNo Mensaje que se mostrará al usuario si la generación de código ha superado el número máximo de intentos permitidos.The message to display to the user if the code generation has exceeded the maximum allowed number of attempts.
UserMessageIfInvalidCodeUserMessageIfInvalidCode NoNo Mensaje que se mostrará al usuario si ha proporcionado un código no válido.The message to display to the user if they've provided an invalid code.
UserMessageIfVerificationFailedRetryAllowedUserMessageIfVerificationFailedRetryAllowed NoNo Mensaje que se mostrará al usuario si ha proporcionado un código no válido y tiene permitido proporcionar el correcto.The message to display to the user if they've provided an invalid code, and user is allowed to provide the correct code.
UserMessageIfSessionConflictUserMessageIfSessionConflict NoNo Mensaje que se mostrará al usuario si no se puede comprobar el código.The message to display to the user if the code cannot be verified.

EjemploExample

En el siguiente ejemplo, TechnicalProfile se usa para verificar un código:The following example TechnicalProfile is used for verifying a code:

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

Consulte el siguiente artículo para un ejemplo de uso de un perfil técnico de contraseña de un solo uso con comprobación de correo electrónico personalizado:See the following article for example of using one-time password technical profile with custom email verification:

  • Verificación de correo electrónico personalizado en Azure Active Directory B2C (Mailjet, SendGrid)Custom email verification in Azure Active Directory B2C (Mailjet, SendGrid)