Defina um perfil técnico de senha única numa política personalizada Azure AD B2CDefine a one-time password technical profile in an Azure AD B2C custom policy

Nota

No Azure Ative Directory B2C, as políticas personalizadas são projetadas principalmente para abordar cenários complexos.In Azure Active Directory B2C, custom policies are designed primarily to address complex scenarios. Para a maioria dos cenários, recomendamos que utilize fluxos de utilizador incorporados.For most scenarios, we recommend that you use built-in user flows.

O Azure Ative Directory B2C (Azure AD B2C) fornece suporte para a gestão da geração e verificação de uma senha única.Azure Active Directory B2C (Azure AD B2C) provides support for managing the generation and verification of a one-time password. Utilize um perfil técnico para gerar um código e, em seguida, verifique esse código mais tarde.Use a technical profile to generate a code, and then verify that code later.

O perfil técnico de senha única também pode devolver uma mensagem de erro durante a verificação do código.The one-time password technical profile can also return an error message during code verification. Desenhe a integração com a senha única utilizando um perfil técnico de Validação.Design the integration with the one-time password by using a Validation technical profile. Um perfil técnico de validação chama o perfil técnico de senha única para verificar um código.A validation technical profile calls the one-time password technical profile to verify a code. O perfil técnico de validação valida os dados fornecidos pelo utilizador antes da viagem do utilizador continuar.The validation technical profile validates the user-provided data before the user journey continues. Com o perfil técnico de validação, é apresentada uma mensagem de erro numa página autoafirmada.With the validation technical profile, an error message is displayed on a self-asserted page.

ProtocoloProtocol

O atributo nome do elemento Protocolo tem de ser definido para Proprietary .The Name attribute of the Protocol element needs to be set to Proprietary. O atributo handler deve conter o nome totalmente qualificado do conjunto de manipuladores de protocolo que é utilizado pela 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

O exemplo a seguir mostra um perfil técnico de senha única: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" />
  ...

Gerar códigoGenerate code

O primeiro modo deste perfil técnico é gerar um código.The first mode of this technical profile is to generate a code. Abaixo estão as opções que podem ser configuradas para este modo.Below are the options that can be configured for this mode. Os códigos gerados e as tentativas são rastreados dentro da sessão.Codes generated and attempts are tracked within the session.

Reclamações de entradaInput claims

O elemento InputClaims contém uma lista de reclamações necessárias para enviar ao fornecedor de protocolo de senha de uma única vez.The InputClaims element contains a list of claims required to send to the one-time password protocol provider. Também pode mapear o nome da sua reclamação para o nome definido abaixo.You can also map the name of your claim to the name defined below.

ReclamaçãoReferênciaIdClaimReferenceId ObrigatórioRequired DescriçãoDescription
identificadoridentifier YesYes O identificador para identificar o utilizador que precisa de verificar o código mais tarde.The identifier to identify the user who needs to verify the code later. É comumente usado como o identificador do destino onde o código é entregue, por exemplo, endereço de e-mail ou número de telefone.It is commonly used as the identifier of the destination where the code is delivered to, for example email address or phone number.

O elemento InputClaimsTransformations pode conter uma coleção de elementos de transmissão inputClaimsTransformation que são utilizados para modificar as reclamações de entrada ou gerar novos antes de enviar para o fornecedor de protocolo de senha de uma única vez.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.

Reclamações de saídaOutput claims

O elemento OutputClaims contém uma lista de reclamações geradas pelo fornecedor de protocolo de senha de uma única vez.The OutputClaims element contains a list of claims generated by the one-time password protocol provider. Também pode mapear o nome da sua reclamação para o nome definido abaixo.You can also map the name of your claim to the name defined below.

ReclamaçãoReferênciaIdClaimReferenceId ObrigatórioRequired DescriçãoDescription
otpGeneradootpGenerated YesYes O código gerado cuja sessão é gerida por Azure AD B2C.The generated code whose session is managed by Azure AD B2C.

O elemento OutputClaimsTransformations pode conter uma coleção de elementos de saídaClaimsTransformation que são utilizados para modificar as alegações de saída ou gerar novos.The OutputClaimsTransformations element may contain a collection of OutputClaimsTransformation elements that are used to modify the output claims or generate new ones.

MetadadosMetadata

As seguintes definições podem ser utilizadas para configurar o modo de geração de código:The following settings can be used to configure code generation mode:

AtributoAttribute ObrigatórioRequired DescriçãoDescription
CodeExpirationInSecondsCodeExpirationInSeconds NoNo Tempo em segundos até a expiração do código.Time in seconds until code expiration. Mínimo: 60 ; Máximo: 1200 Predefinição: 600 .Minimum: 60; Maximum: 1200; Default: 600. Sempre que é fornecido um código (o mesmo código que utiliza ReuseSameCode , ou um novo código), a expiração do código é estendida.Every time a code is provided (same code using ReuseSameCode, or a new code), the code expiration is extended. Este tempo também é usado para definir o tempo limite de re-tentativas (uma vez que as tentativas máximas são alcançadas, o utilizador é bloqueado de tentar obter novos códigos até que este tempo expire)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 Comprimento do código.Length of the code. O valor predefinido é 6.The default value is 6.
Conjunto de CaracteresCharacterSet NoNo O conjunto de caracteres para o código, formatado para utilização numa expressão regular.The character set for the code, formatted for use in a regular expression. Por exemplo, a-z0-9A-Z.For example, a-z0-9A-Z. O valor predefinido é 0-9.The default value is 0-9. O conjunto de caracteres deve incluir um mínimo de 10 caracteres diferentes no conjunto especificado.The character set must include a minimum of 10 different characters in the set specified.
NumRetryAttemptsNumRetryAttempts NoNo O número de tentativas de verificação antes do código é considerado inválido.The number of verification attempts before the code is considered invalid. O valor predefinido é 5.The default value is 5.
NumCodeGenerationAttemptsNumCodeGenerationAttempts NoNo O número máximo de tentativas de geração de código por identificador.The number of maximum code generation attempts per identifier. O valor predefinido é 10 se não for especificado.The default value is 10 if not specified.
OperaçãoOperation YesYes A operação a ser realizada.The operation to be performed. Valor possível: GenerateCode .Possible value: GenerateCode.
Reutilizar OAmeCodeReuseSameCode NoNo Se o mesmo código deve ser dado em vez de gerar um novo código quando determinado código não expirou e ainda é 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. O valor predefinido é false.The default value is false.

ExemploExample

O exemplo a seguir TechnicalProfile é utilizado para gerar um 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>

Verificar códigoVerify code

O segundo modo deste perfil técnico é verificar um código.The second mode of this technical profile is to verify a code. Abaixo estão as opções que podem ser configuradas para este modo.Below are the options that can be configured for this mode.

Reclamações de entradaInput claims

O elemento InputClaims contém uma lista de reclamações necessárias para enviar ao fornecedor de protocolo de senha de uma única vez.The InputClaims element contains a list of claims required to send to the one-time password protocol provider. Também pode mapear o nome da sua reclamação para o nome definido abaixo.You can also map the name of your claim to the name defined below.

ReclamaçãoReferênciaIdClaimReferenceId ObrigatórioRequired DescriçãoDescription
identificadoridentifier YesYes O identificador para identificar o utilizador que já gerou um código.The identifier to identify the user who has previously generated a code. É comumente usado como o identificador do destino onde o código é entregue, por exemplo, endereço de e-mail ou número de telefone.It is commonly used as the identifier of the destination where the code is delivered to, for example email address or phone number.
otpToVerificarotpToVerify YesYes O código de verificação fornecido pelo utilizador.The verification code provided by the user.

O elemento InputClaimsTransformations pode conter uma coleção de elementos de transmissão inputClaimsTransformation que são utilizados para modificar as reclamações de entrada ou gerar novos antes de enviar para o fornecedor de protocolo de senha de uma única vez.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.

Reclamações de saídaOutput claims

Não existem pedidos de saída fornecidos durante a verificação de código deste fornecedor de protocolo.There are no output claims provided during code verification of this protocol provider.

O elemento OutputClaimsTransformations pode conter uma coleção de elementos de saídaClaimsTransformation que são utilizados para modificar as alegações de saída ou gerar novos.The OutputClaimsTransformations element may contain a collection of OutputClaimsTransformation elements that are used to modify the output claims or generate new ones.

MetadadosMetadata

As seguintes definições podem ser utilizadas no modo de verificação de códigos:The following settings can be used to code verification mode:

AtributoAttribute ObrigatórioRequired DescriçãoDescription
OperaçãoOperation YesYes A operação a ser realizada.The operation to be performed. Valor possível: VerifyCode .Possible value: VerifyCode.

Elementos da IUUI elements

Os metadados que se seguem podem ser utilizados para configurar as mensagens de erro exibidas após falha de verificação de código.The following metadata can be used to configure the error messages displayed upon code verification failure. Os metadados devem ser configurados no perfil técnico autoafirmado.The metadata should be configured in the self-asserted technical profile. As mensagens de erro podem ser localizadas.The error messages can be localized.

AtributoAttribute ObrigatórioRequired DescriçãoDescription
UserMessageIfSessionDoesNotExistUserMessageIfSessionDoesNotExist NoNo A mensagem a apresentar ao utilizador se a sessão de verificação de código tiver expirado.The message to display to the user if the code verification session has expired. Ou o código expirou ou o código nunca foi gerado para um identificador dado.It is either the code has expired or the code has never been generated for a given identifier.
UserMessageIfMaxRetryAttemptedUserMessageIfMaxRetryAttempted NoNo A mensagem a apresentar ao utilizador se exceder as tentativas de verificação máxima permitidas.The message to display to the user if they've exceeded the maximum allowed verification attempts.
UserMessageIfMaxNumberOfCodeGeneratedUserMessageIfMaxNumberOfCodeGenerated NoNo A mensagem a apresentar ao utilizador se a geração de código exceder o número máximo permitido de tentativas.The message to display to the user if the code generation has exceeded the maximum allowed number of attempts.
UserMessageIfInvalidCodeUserMessageIfInvalidCode NoNo A mensagem a apresentar ao utilizador se tiver fornecido um código inválido.The message to display to the user if they've provided an invalid code.
UserMessageIfVerificationFailedRetryAllowedUserMessageIfVerificationFailedRetryAllowed NoNo A mensagem a apresentar ao utilizador se tiver fornecido um código inválido e o utilizador estiver autorizado a fornecer o código correto.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 A mensagem a apresentar ao utilizador se o código não puder ser verificado.The message to display to the user if the code cannot be verified.

ExemploExample

É utilizado o exemplo seguinte TechnicalProfile para verificar um 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>

Passos seguintesNext steps

Consulte o seguinte artigo, por exemplo, utilizando um perfil técnico de senha única com verificação de e-mail personalizado:See the following article for example of using one-time password technical profile with custom email verification: