Partilhar via


Definir um perfil técnico de palavra-passe única numa política personalizada Azure AD B2C

Nota

No Azure Active Directory B2C, as políticas personalizadas são concebidas principalmente para abordar cenários complexos. Para a maioria dos cenários, recomendamos que utilize fluxos de utilizador incorporados. Se ainda não o fez, saiba mais sobre o pacote de introdução de políticas personalizadas em Introdução às políticas personalizadas no Active Directory B2C.

O Azure Active Directory B2C (Azure AD B2C) fornece suporte para gerir a geração e a verificação de uma palavra-passe única. Utilize um perfil técnico para gerar um código e, em seguida, verifique esse código mais tarde.

O perfil técnico de palavra-passe única também pode devolver uma mensagem de erro durante a verificação de código. Crie a integração com a palavra-passe única com um perfil técnico de Validação. Um perfil técnico de validação chama o perfil técnico de palavra-passe único para verificar um código. O perfil técnico de validação valida os dados fornecidos pelo utilizador antes do percurso do utilizador continuar. Com o perfil técnico de validação, é apresentada uma mensagem de erro numa página auto-afirmada.

Protocolo

O atributo Nome do elemento Protocolo tem de ser definido como Proprietary. O atributo do processador tem de conter o nome completamente qualificado da assemblagem do processador de protocolos que é utilizada pelo Azure AD B2C:

Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

O exemplo seguinte mostra um perfil técnico de palavra-passe ú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. Seguem-se as opções que podem ser configuradas para este modo. Os códigos gerados e as tentativas são monitorizados na sessão.

Afirmações de entrada

O elemento InputClaims contém uma lista de afirmações necessárias para enviar para o fornecedor de protocolos de palavra-passe único. Também pode mapear o nome da sua afirmação para o nome definido abaixo.

ClaimReferenceId Necessário Descrição
identificador Yes O identificador para identificar o utilizador que precisa de verificar o código mais tarde. É normalmente utilizado como o identificador do destino ao qual 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 utilizados para modificar as afirmações de entrada ou gerar novas antes de enviar para o fornecedor de protocolos de palavra-passe único.

Afirmações de saída

O elemento OutputClaims contém uma lista de afirmações geradas pelo fornecedor de protocolos de palavra-passe único. Também pode mapear o nome da sua afirmação para o nome definido abaixo.

ClaimReferenceId Necessário Descrição
otpGenerated Yes O código gerado cuja sessão é gerida pelo Azure AD B2C.

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

Metadados

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

Atributo Necessário Descrição
Operação Yes A operação a executar. Valor possível: GenerateCode.
CodeExpirationInSeconds No Tempo em segundos até à expiração do código. Mínimo: 60; Máximo: 1200; Predefinição: 600. Sempre que é fornecido um código (o mesmo código com ReuseSameCodeou um novo código), a expiração do código é expandida. Esta hora também é utilizada para definir o tempo limite de repetição (assim que as tentativas máximas forem atingidas, o utilizador fica impedido de tentar obter novos códigos até que esta hora expire)
CodeLength No Comprimento do código. O valor predefinido é 6.
Conjunto de Carateres No O conjunto de carateres para o código, formatado para utilização numa expressão normal. Por exemplo, a-z0-9A-Z. O valor predefinido é 0-9. O conjunto de carateres tem de incluir um mínimo de 10 carateres diferentes no conjunto especificado.
NumRetryAttempts No O número de tentativas de verificação antes de o código ser considerado inválido. O valor predefinido é 5. Por exemplo, se definir NumRetryAttempts como 2, só lhe permitirá 2 tentativas no total (primeira + 1 repetição). Para a 3ª tentativa, irá lançar o máximo de tentativas alcançadas, independentemente de o código estar correto ou não.
NumCodeGenerationAttempts No O número máximo de tentativas de geração de código por identificador. O valor predefinido é 10 se não for especificado.
ReuseSameCode No Se o mesmo código deve ser dado em vez de gerar um novo código quando o código especificado não expirou e ainda é válido. O valor predefinido é false.

Exemplo

O exemplo TechnicalProfile seguinte é utilizado 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. Seguem-se as opções que podem ser configuradas para este modo.

Afirmações de entrada

O elemento InputClaims contém uma lista de afirmações necessárias para enviar para o fornecedor de protocolos de palavra-passe único. Também pode mapear o nome da sua afirmação para o nome definido abaixo.

ClaimReferenceId Necessário Descrição
identificador Yes O identificador para identificar o utilizador que já gerou um código. É normalmente utilizado como o identificador do destino ao qual o código é entregue, por exemplo, endereço de e-mail ou número de telefone.
otpToVerify Yes O código de verificação fornecido pelo utilizador.

O elemento InputClaimsTransformations pode conter uma coleção de elementos InputClaimsTransformation que são utilizados para modificar as afirmações de entrada ou gerar novas antes de enviar para o fornecedor de protocolo de palavra-passe único.

Afirmações de saída

Não existem afirmações de saída fornecidas durante a verificação do código deste fornecedor de protocolos.

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

Metadados

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

Atributo Necessário Descrição
Operação Yes A operação a executar. Valor possível: VerifyCode.

Elementos da IU

Os metadados seguintes podem ser utilizados para configurar as mensagens de erro apresentadas após a falha de verificação do código. Os metadados devem ser configurados no perfil técnico auto-afirmado . As mensagens de erro podem ser localizadas.

Atributo Necessário Descrição
UserMessageIfSessionDoesNotExist No A mensagem a apresentar ao utilizador se a sessão de verificação do código tiver expirado. Ou o código expirou ou o código nunca foi gerado para um determinado identificador.
UserMessageIfMaxRetryAttempted No A mensagem a apresentar ao utilizador se tiver excedido as tentativas máximas de verificação permitidas.
UserMessageIfMaxNumberOfCodeGenerated No A mensagem a apresentar ao utilizador se a geração de código tiver excedido o número máximo permitido de tentativas.
UserMessageIfInvalidCode No A mensagem a apresentar ao utilizador se tiver fornecido um código inválido.
UserMessageIfVerificationFailedRetryAllowed No A mensagem a apresentar ao utilizador se tiver fornecido um código inválido e o utilizador tiver permissão para fornecer o código correto.
UserMessageIfSessionConflict No A mensagem a apresentar ao utilizador se não for possível verificar o código.

Exemplo

O exemplo TechnicalProfile seguinte é utilizado 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>

Passos seguintes

Veja o seguinte artigo para obter um exemplo de utilização de um perfil técnico de palavra-passe único com a verificação personalizada de e-mail:

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