Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. 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 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: