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 ReuseSameCode ou 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: