Compartilhar 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 em nossas perguntas frequentes.

Observação

No Azure Active Directory B2C, as políticas personalizadas são projetadas principalmente para tratar de cenários complexos. Para a maioria dos cenários, recomendamos que você use fluxos de usuários predefinidos. Se você ainda não fez isso, saiba mais sobre o pacote de início de política personalizado em Introdução às políticas personalizadas no Active Directory B2C.

O Azure AD B2C (Azure Active Directory B2C) oferece suporte para gerenciar a geração e a verificação de uma senha única. 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 única 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 o percurso 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 manipulador 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 desse perfil técnico é gerar um código. Abaixo estão as opções que podem ser configuradas para esse modo. Códigos gerados e tentativas são acompanhados 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 de sua declaração para o nome definido abaixo.

ReivindicaçãoReferênciaId Obrigatório Descrição
identificador Sim O identificador para identificar o usuário que precisa verificar o código posteriormente. Normalmente, ele é usado como o identificador do destino no qual o código é entregue, por exemplo, endereço de email 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 de sua declaração para o nome definido abaixo.

ReivindicaçãoReferênciaId 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 usados para modificar as declarações de saída ou gerar novas declarações.

Metadados

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

Atributo Obrigatório Descrição
Operação 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. Sempre que um código é fornecido (mesmo código usando ReuseSameCodeou 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 alcançadas, o usuário é impedido de tentar obter novos códigos até que essa hora expire)
Comprimento do código Não Comprimento do código. O valor padrão é 6.
Conjunto de Carateres 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 padrão é 0-9. O conjunto de caracteres deve incluir no mínimo 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 padrão é 5. Por exemplo, se você definir NumRetryAttempts como 2, ele permitirá que você apenas duas tentativas no total (primeiro + 1 tente novamente). Para a terceira tentativa, ele gerará tentativas máximas alcançadas independentemente de o código estiver correto ou não.
Tentativas de Geração de Códigos Numéricos Não O número máximo de tentativas de geração de código por identificador. O valor padrão será 10 , se não 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 padrão é 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 o código

O segundo modo desse perfil técnico é verificar um código. Abaixo estão as opções que podem ser configuradas para esse 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 de sua declaração para o nome definido abaixo.

ReivindicaçãoReferênciaId Obrigatório Descrição
identificador Sim O identificador para identificar o usuário que já gerou um código. Normalmente, ele é usado como o identificador do destino no qual o código é entregue, por exemplo, endereço de email 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 desse provedor de protocolo.

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

Metadados

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

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

Elementos da interface do usuário

Os metadados a seguir podem ser usados para configurar as mensagens de erro exibidas em caso de falha na verificação do código. Os metadados devem ser configurados no perfil técnico autodeclarado . A mensagem de erro pode ser localizada.

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 que 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 para o 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óximas etapas

Consulte o seguinte artigo para obter um exemplo de uso de perfil técnico de senha única com verificação de email personalizada:

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