Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 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 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: