Partilhar via


Definir um perfil técnico de senha única em uma política personalizada do Azure AD B2C

Importante

A partir de 1º de maio de 2025, o Azure AD B2C não estará mais disponível para compra para novos clientes. Saiba mais nas nossas Perguntas Frequentes.

Observação

No Azure Ative Directory B2C, as políticas personalizadas são projetadas principalmente para lidar com cenários complexos. Para a maioria dos cenários, recomendamos a utilização dos fluxos de utilizador incorporados. Se você não tiver feito isso, saiba mais sobre o pacote inicial de políticas personalizadas em Introdução às políticas personalizadas no Ative Directory B2C.

O Azure Ative Directory B2C (Azure AD B2C) fornece suporte para gerenciar a geração e a verificação de uma senha de uso único. Use um perfil técnico para gerar um código e, em seguida, verifique esse código mais tarde.

O perfil técnico de senha única também pode retornar uma mensagem de erro durante a verificação de código. Projete a integração com a senha de uso único usando um perfil técnico de Validação. Um perfil técnico de validação chama o perfil técnico de senha única para verificar um código. O perfil técnico de validação valida os dados fornecidos pelo usuário antes que a jornada do usuário continue. Com o perfil técnico de validação, uma mensagem de erro é exibida em uma página autodeclarada.

Protocolo

O atributo Name do elemento Protocol precisa ser definido como Proprietary. O atributo handler deve conter o nome totalmente qualificado do assembly do manipulador de protocolo usado pelo 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:

<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ódigo

O primeiro modo deste perfil técnico é gerar um código. Abaixo estão as opções que podem ser configuradas para este modo. Os códigos gerados e as tentativas são rastreados dentro da sessão.

Declarações de entrada

O elemento InputClaims contém uma lista de declarações necessárias para enviar ao provedor de protocolo de senha única. Você também pode mapear o nome da sua reivindicação para o nome definido abaixo.

ClaimReferenceId Obrigatório Descrição
identificador Sim O identificador para identificar o usuário que precisa verificar o código posteriormente. É comumente usado como o identificador do destino onde o código é entregue, por exemplo, endereço de e-mail ou número de telefone.

O elemento InputClaimsTransformations pode conter uma coleção de elementos InputClaimsTransformation que são usados para modificar as declarações de entrada ou gerar novas antes de enviar para o provedor de protocolo de senha única.

Declarações de saída

O elemento OutputClaims contém uma lista de declarações geradas pelo provedor de protocolo de senha única. Você também pode mapear o nome da sua reivindicação para o nome definido abaixo.

ClaimReferenceId Obrigatório Descrição
otpGerado Sim O código gerado cuja sessão é gerenciada pelo Azure AD B2C.

O elemento OutputClaimsTransformations pode conter uma coleção de elementos OutputClaimsTransformation que são usados para modificar as declarações de saída ou gerar novas.

Metadados

As seguintes configurações podem ser usadas para configurar o modo de geração de código:

Atributo Obrigatório Descrição
Funcionamento Sim A operação a ser executada. Valor possível: GenerateCode.
CodeExpirationInSeconds Não Tempo em segundos até a expiração do código. Mínimo: 60; Máximo: 1200; Padrão: 600. Toda vez que um código é fornecido (mesmo código usando ReuseSameCode, ou um novo código), a expiração do código é estendida. Esse tempo também é usado para definir o tempo limite de repetição (uma vez que as tentativas máximas são atingidas, o usuário é impedido de tentar obter novos códigos até que esse tempo expire)
CodeLength Não Comprimento do código. O valor predefinido é 6.
Conjunto de caracteres Não O conjunto de caracteres para o código, formatado para uso em uma expressão regular. Por exemplo, a-z0-9A-Z. O valor predefinido é 0-9. O conjunto de caracteres deve incluir um mínimo de 10 caracteres diferentes no conjunto especificado.
NumRetryAttempts Não O número de tentativas de verificação antes que o código seja considerado inválido. O valor predefinido é 5. Por exemplo, se você definir NumRetryAttempts como 2, isso permitirá que você apenas 2 tentativas no total (primeira + 1 tentativa). Para a 3ª tentativa, ele lançará o máximo de tentativas alcançadas, independentemente de o código estar correto ou não.
NumCodeGenerationAttempts Não O número máximo de tentativas de geração de código por identificador. O valor padrão é 10 se não for especificado.
ReuseSameCode Não 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. O valor predefinido é false.

Exemplo

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

O segundo modo deste perfil técnico é verificar um código. Abaixo estão as opções que podem ser configuradas para este modo.

Declarações de entrada

O elemento InputClaims contém uma lista de declarações necessárias para enviar ao provedor de protocolo de senha única. Você também pode mapear o nome da sua reivindicação para o nome definido abaixo.

ClaimReferenceId Obrigatório Descrição
identificador Sim O identificador para identificar o usuário que gerou um código anteriormente. É comumente usado como o identificador do destino onde o código é entregue, por exemplo, endereço de e-mail ou número de telefone.
otpToVerify Sim O código de verificação fornecido pelo usuário.

O elemento InputClaimsTransformations pode conter uma coleção de elementos InputClaimsTransformation que são usados para modificar as declarações de entrada ou gerar novas antes de enviar para o provedor de protocolo de senha única.

Declarações de saída

Não há declarações de saída fornecidas durante a verificação de código deste provedor de protocolo.

O elemento OutputClaimsTransformations pode conter uma coleção de elementos OutputClaimsTransformation que são usados para modificar as declarações de saída ou gerar novas.

Metadados

As seguintes configurações podem ser usadas para o modo de verificação de código:

Atributo Obrigatório Descrição
Funcionamento Sim A operação a ser executada. Valor possível: VerifyCode.

Elementos da IU

Os metadados a seguir podem ser usados para configurar as mensagens de erro exibidas após falha na verificação de código. Os metadados devem ser configurados no perfil técnico autodeclarado . As mensagens de erro podem ser localizadas.

Atributo Obrigatório Descrição
UserMessageIfSessionDoesNotExist Não A mensagem a ser exibida ao usuário se a sessão de verificação de código tiver expirado. É o código expirou ou o código nunca foi gerado para um determinado identificador.
UserMessageIfMaxRetryAttempted Não A mensagem a ser exibida ao usuário se ele tiver excedido o máximo de tentativas de verificação permitidas.
UserMessageIfMaxNumberOfCodeGenerated Não A mensagem a ser exibida ao usuário se a geração de código tiver excedido o número máximo permitido de tentativas.
UserMessageIfInvalidCode Não A mensagem a ser exibida ao usuário se ele tiver fornecido um código inválido.
UserMessageIfVerificationFailedRetryAllowed Não A mensagem a ser exibida ao usuário se ele tiver fornecido um código inválido e o usuário tiver permissão para fornecer o código correto.
UserMessageIfSessionConflict Não A mensagem a ser exibida ao usuário se o código não puder ser verificado.

Exemplo

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

Próximos passos

Consulte o seguinte artigo, por exemplo, sobre como usar um perfil técnico de senha única com verificação de e-mail personalizada:

  • Verificação de email personalizada no Azure Ative Directory B2C (Mailjet, SendGrid)