Predicados e PredicadosValidações
Nota
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 que você use fluxos de usuário internos. 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.
Os elementos Predicados e PredicateValidations permitem que você execute um processo de validação para garantir que apenas dados formados corretamente sejam inseridos em seu locatário do Azure Ative Directory B2C (Azure AD B2C).
O diagrama a seguir mostra a relação entre os elementos:
Predicados
O elemento Predicado define uma validação básica para verificar o valor de um tipo de declaração e retorna true
ou false
. A validação é feita usando um elemento Method especificado e um conjunto de elementos Parameter relevantes para o método. Por exemplo, um predicado pode verificar se o comprimento de um valor de declaração de cadeia de caracteres está dentro do intervalo de parâmetros mínimos e máximos especificados ou se um valor de declaração de cadeia de caracteres contém um conjunto de caracteres. O elemento UserHelpText fornece uma mensagem de erro para os usuários se a verificação falhar. O valor do elemento UserHelpText pode ser localizado usando a personalização do idioma.
O elemento Predicados deve aparecer diretamente após o elemento ClaimsSchema dentro do elemento BuildingBlocks .
O elemento Predicados contém o seguinte elemento :
Elemento | Ocorrências | Description |
---|---|---|
Predicado | 1:n | Uma lista de predicados. |
O elemento Predicado contém os seguintes atributos:
Atributo | Necessário | Descrição |
---|---|---|
ID | Sim | Um identificador usado para o predicado. Outros elementos podem usar esse identificador na política. |
Método | Sim | O tipo de método a ser usado para validação. Valores possíveis: IsLengthRange, MatchesRegex, IncludesCharacters ou IsDateRange. |
HelpText | Não | Uma mensagem de erro para os usuários se a verificação falhar. Essa cadeia de caracteres pode ser localizada usando a personalização do idioma |
O elemento Predicado contém os seguintes elementos:
Elemento | Ocorrências | Description |
---|---|---|
UserHelpText | 0:1 | (Preterido) Uma mensagem de erro para os usuários se a verificação falhar. |
Parâmetros | 1:1 | Os parâmetros para o tipo de método da validação de cadeia de caracteres. |
O elemento Parameters contém os seguintes elementos:
Elemento | Ocorrências | Description |
---|---|---|
Parâmetro | 1:n | Os parâmetros para o tipo de método da validação de cadeia de caracteres. |
O elemento Parameter contém os seguintes atributos:
Elemento | Ocorrências | Description |
---|---|---|
ID | 1:1 | O identificador do parâmetro. |
Métodos de predicados
IsLengthRange
O método IsLengthRange verifica se o comprimento de um valor de declaração de cadeia de caracteres está dentro do intervalo de parâmetros mínimos e máximos especificados. Confira a demonstração ao vivo deste método de predicados. O elemento predicado suporta os seguintes parâmetros:
Parâmetro | Necessário | Description |
---|---|---|
Máximo | Sim | O número máximo de caracteres que podem ser inseridos. |
Mínimo | Sim | O número mínimo de caracteres que devem ser inseridos. |
O exemplo a seguir mostra um método IsLengthRange com os parâmetros Minimum
e Maximum
que especificam o intervalo de comprimento da cadeia de caracteres:
<Predicate Id="IsLengthBetween8And64" Method="IsLengthRange" HelpText="The password must be between 8 and 64 characters.">
<Parameters>
<Parameter Id="Minimum">8</Parameter>
<Parameter Id="Maximum">64</Parameter>
</Parameters>
</Predicate>
MatchesRegex
O método MatchesRegex verifica se um valor de declaração de cadeia de caracteres corresponde a uma expressão regular. Confira a demonstração ao vivo deste método de predicados. O elemento predicado suporta os seguintes parâmetros:
Parâmetro | Necessário | Description |
---|---|---|
RegularExpression | Sim | O padrão de expressão regular a ser correspondido. |
O exemplo a seguir mostra um MatchesRegex
método com o parâmetro RegularExpression
que especifica uma expressão regular:
<Predicate Id="PIN" Method="MatchesRegex" HelpText="The password must be numbers only.">
<Parameters>
<Parameter Id="RegularExpression">^[0-9]+$</Parameter>
</Parameters>
</Predicate>
IncluiPersonagens
O método IncludesCharacters verifica se um valor de declaração de cadeia de caracteres contém um conjunto de caracteres. Confira a demonstração ao vivo deste método de predicados. O elemento predicado suporta os seguintes parâmetros:
Parâmetro | Necessário | Description |
---|---|---|
Conjunto de caracteres | Sim | O conjunto de caracteres que podem ser inseridos. Por exemplo, caracteres a-z minúsculos , caracteres A-Z maiúsculos 0-9 , dígitos ou uma lista de símbolos, como @#$%^&*\-_+=[]{}|\\:',?/~"();! . |
O exemplo a seguir mostra um IncludesCharacters
método com o parâmetro CharacterSet
que especifica o conjunto de caracteres:
<Predicate Id="Lowercase" Method="IncludesCharacters" HelpText="a lowercase letter">
<Parameters>
<Parameter Id="CharacterSet">a-z</Parameter>
</Parameters>
</Predicate>
IsDateRange
O método IsDateRange verifica se um valor de declaração de data está entre um intervalo de parâmetros mínimos e máximos especificados. Confira a demonstração ao vivo deste método de predicados. O elemento predicado suporta os seguintes parâmetros:
Parâmetro | Necessário | Description |
---|---|---|
Máximo | Sim | A maior data possível que pode ser inserida. O formato da data segue yyyy-mm-dd a convenção, ou Today . |
Mínimo | Sim | A menor data possível que pode ser inserida. O formato da data segue yyyy-mm-dd a convenção, ou Today . |
O exemplo a seguir mostra um IsDateRange
método com os parâmetros Minimum
e Maximum
que especificam o intervalo de datas com um formato de yyyy-mm-dd
e Today
.
<Predicate Id="DateRange" Method="IsDateRange" HelpText="The date must be between 1970-01-01 and today.">
<Parameters>
<Parameter Id="Minimum">1970-01-01</Parameter>
<Parameter Id="Maximum">Today</Parameter>
</Parameters>
</Predicate>
PredicadoValidações
Enquanto os predicados definem a validação para verificar em relação a um tipo de declaração, o grupo PredicateValidations agrupa um conjunto de predicados para formar uma validação de entrada do usuário que pode ser aplicada a um tipo de declaração. Cada elemento PredicateValidation contém um conjunto de elementos PredicateGroup que contêm um conjunto de elementos PredicateReference que aponta para um Predicado. Para passar na validação, o valor da declaração deve passar em todos os testes de qualquer predicado em todos os PredicateGroup com seu conjunto de elementos PredicateReference .
O elemento PredicateValidations deve aparecer diretamente após o elemento Predicados dentro do elemento BuildingBlocks .
<PredicateValidations>
<PredicateValidation Id="">
<PredicateGroups>
<PredicateGroup Id="">
<UserHelpText></UserHelpText>
<PredicateReferences MatchAtLeast="">
<PredicateReference Id="" />
...
</PredicateReferences>
</PredicateGroup>
...
</PredicateGroups>
</PredicateValidation>
...
</PredicateValidations>
O elemento PredicateValidations contém o seguinte elemento:
Elemento | Ocorrências | Description |
---|---|---|
PredicateValidation | 1:n | Uma lista de validação de predicados. |
O elemento PredicateValidation contém o seguinte atributo:
Atributo | Necessário | Descrição |
---|---|---|
ID | Sim | Um identificador usado para a validação de predicados. O elemento ClaimType pode usar esse identificador na política. |
O elemento PredicateValidation contém o seguinte elemento :
Elemento | Ocorrências | Description |
---|---|---|
PredicateGroups | 1:n | Uma lista de grupos de predicados. |
O elemento PredicateGroups contém o seguinte elemento:
Elemento | Ocorrências | Description |
---|---|---|
PredicateGroup | 1:n | Uma lista de predicados. |
O elemento PredicateGroup contém o seguinte atributo:
Atributo | Necessário | Descrição |
---|---|---|
ID | Sim | Um identificador usado para o grupo de predicados. |
O elemento PredicateGroup contém os seguintes elementos:
Elemento | Ocorrências | Description |
---|---|---|
UserHelpText | 0:1 | Uma descrição do predicado que pode ser útil para os usuários saberem qual valor devem digitar. |
PredicadoReferências | 1:n | Uma lista de referências de predicados. |
O elemento PredicateReferences contém os seguintes atributos:
Atributo | Necessário | Description |
---|---|---|
MatchAtLeast | Não | Especifica que o valor deve corresponder pelo menos a muitas definições de predicados para que a entrada seja aceita. Se não for especificado, o valor deve corresponder a todas as definições de predicados. |
O elemento PredicateReferences contém os seguintes elementos:
Elemento | Ocorrências | Description |
---|---|---|
PredicadoReferência | 1:n | Uma referência a um predicado. |
O elemento PredicateReference contém os seguintes atributos:
Atributo | Necessário | Descrição |
---|---|---|
ID | Sim | Um identificador usado para a validação de predicados. |
Configurar a complexidade da senha
Com Predicados e PredicateValidationsInput , você pode controlar os requisitos de complexidade para senhas fornecidas por um usuário ao criar uma conta. Por padrão, o Azure AD B2C usa senhas fortes. O Azure AD B2C também dá suporte a opções de configuração para controlar a complexidade das senhas que os clientes podem usar. Você pode definir a complexidade da senha usando estes elementos de predicado:
- IsLengthBetween8And64 usando o
IsLengthRange
método, valida que a senha deve ter entre 8 e 64 caracteres. - Uso de minúsculas usando o
IncludesCharacters
método, valida que a senha contém uma letra minúscula. - Em maiúsculas usando o
IncludesCharacters
método, valida que a senha contém uma letra maiúscula. - Número usando o
IncludesCharacters
método, valida que a senha contém um dígito. - Symbol usando o
IncludesCharacters
método, valida que a senha contém um dos vários caracteres de símbolo. - PIN usando o
MatchesRegex
método, valida que a senha contém apenas números. - AllowedAADCharacters usando o
MatchesRegex
método, valida que a senha apenas caractere inválido foi fornecido. - DisallowedWhitespace usando o
MatchesRegex
método, valida que a senha não começa ou termina com um caractere de espaço em branco.
<Predicates>
<Predicate Id="IsLengthBetween8And64" Method="IsLengthRange" HelpText="The password must be between 8 and 64 characters.">
<Parameters>
<Parameter Id="Minimum">8</Parameter>
<Parameter Id="Maximum">64</Parameter>
</Parameters>
</Predicate>
<Predicate Id="Lowercase" Method="IncludesCharacters" HelpText="a lowercase letter">
<Parameters>
<Parameter Id="CharacterSet">a-z</Parameter>
</Parameters>
</Predicate>
<Predicate Id="Uppercase" Method="IncludesCharacters" HelpText="an uppercase letter">
<Parameters>
<Parameter Id="CharacterSet">A-Z</Parameter>
</Parameters>
</Predicate>
<Predicate Id="Number" Method="IncludesCharacters" HelpText="a digit">
<Parameters>
<Parameter Id="CharacterSet">0-9</Parameter>
</Parameters>
</Predicate>
<Predicate Id="Symbol" Method="IncludesCharacters" HelpText="a symbol">
<Parameters>
<Parameter Id="CharacterSet">@#$%^&*\-_+=[]{}|\\:',.?/`~"();!</Parameter>
</Parameters>
</Predicate>
<Predicate Id="PIN" Method="MatchesRegex" HelpText="The password must be numbers only.">
<Parameters>
<Parameter Id="RegularExpression">^[0-9]+$</Parameter>
</Parameters>
</Predicate>
<Predicate Id="AllowedAADCharacters" Method="MatchesRegex" HelpText="An invalid character was provided.">
<Parameters>
<Parameter Id="RegularExpression">(^([0-9A-Za-z\d@#$%^&*\-_+=[\]{}|\\:',?/`~"();! ]|(\.(?!@)))+$)|(^$)</Parameter>
</Parameters>
</Predicate>
<Predicate Id="DisallowedWhitespace" Method="MatchesRegex" HelpText="The password must not begin or end with a whitespace character.">
<Parameters>
<Parameter Id="RegularExpression">(^\S.*\S$)|(^\S+$)|(^$)</Parameter>
</Parameters>
</Predicate>
Depois de definir as validações básicas, você pode combiná-las e criar um conjunto de políticas de senha que você pode usar em sua política:
- SimplePassword valida DisallowedWhitespace, AllowedAADCharacters e IsLengthBetween8And64
- StrongPassword valida DisallowedWhitespace, AllowedAADCharacters, IsLengthBetween8And64. O último grupo
CharacterClasses
executa um conjunto adicional de predicados comMatchAtLeast
definido como 3. A senha do usuário deve ter entre 8 e 16 caracteres e três dos seguintes caracteres: minúsculas, maiúsculas, número ou símbolo. - CustomPassword valida apenas DisallowedWhitespace, AllowedAADCharacters. Assim, o usuário pode fornecer qualquer senha com qualquer comprimento, desde que os caracteres sejam válidos.
<PredicateValidations>
<PredicateValidation Id="SimplePassword">
<PredicateGroups>
<PredicateGroup Id="DisallowedWhitespaceGroup">
<PredicateReferences>
<PredicateReference Id="DisallowedWhitespace" />
</PredicateReferences>
</PredicateGroup>
<PredicateGroup Id="AllowedAADCharactersGroup">
<PredicateReferences>
<PredicateReference Id="AllowedAADCharacters" />
</PredicateReferences>
</PredicateGroup>
<PredicateGroup Id="LengthGroup">
<PredicateReferences>
<PredicateReference Id="IsLengthBetween8And64" />
</PredicateReferences>
</PredicateGroup>
</PredicateGroups>
</PredicateValidation>
<PredicateValidation Id="StrongPassword">
<PredicateGroups>
<PredicateGroup Id="DisallowedWhitespaceGroup">
<PredicateReferences>
<PredicateReference Id="DisallowedWhitespace" />
</PredicateReferences>
</PredicateGroup>
<PredicateGroup Id="AllowedAADCharactersGroup">
<PredicateReferences>
<PredicateReference Id="AllowedAADCharacters" />
</PredicateReferences>
</PredicateGroup>
<PredicateGroup Id="LengthGroup">
<PredicateReferences>
<PredicateReference Id="IsLengthBetween8And64" />
</PredicateReferences>
</PredicateGroup>
<PredicateGroup Id="CharacterClasses">
<UserHelpText>The password must have at least 3 of the following:</UserHelpText>
<PredicateReferences MatchAtLeast="3">
<PredicateReference Id="Lowercase" />
<PredicateReference Id="Uppercase" />
<PredicateReference Id="Number" />
<PredicateReference Id="Symbol" />
</PredicateReferences>
</PredicateGroup>
</PredicateGroups>
</PredicateValidation>
<PredicateValidation Id="CustomPassword">
<PredicateGroups>
<PredicateGroup Id="DisallowedWhitespaceGroup">
<PredicateReferences>
<PredicateReference Id="DisallowedWhitespace" />
</PredicateReferences>
</PredicateGroup>
<PredicateGroup Id="AllowedAADCharactersGroup">
<PredicateReferences>
<PredicateReference Id="AllowedAADCharacters" />
</PredicateReferences>
</PredicateGroup>
</PredicateGroups>
</PredicateValidation>
</PredicateValidations>
No tipo de declaração, adicione o elemento PredicateValidationReference e especifique o identificador como uma das validações de predicados, como SimplePassword, StrongPassword ou CustomPassword.
<ClaimType Id="password">
<DisplayName>Password</DisplayName>
<DataType>string</DataType>
<AdminHelpText>Enter password</AdminHelpText>
<UserHelpText>Enter password</UserHelpText>
<UserInputType>Password</UserInputType>
<PredicateValidationReference Id="StrongPassword" />
</ClaimType>
A seguir mostra como os elementos são organizados quando o Azure AD B2C exibe a mensagem de erro:
Configurar um intervalo de datas
Com os elementos Predicados e PredicateValidations , você pode controlar os valores de data mínima e máxima do UserInputType usando um DateTimeDropdown
arquivo . Para fazer isso, crie um Predicado com o IsDateRange
método e forneça os parâmetros mínimo e máximo.
<Predicates>
<Predicate Id="DateRange" Method="IsDateRange" HelpText="The date must be between 01-01-1980 and today.">
<Parameters>
<Parameter Id="Minimum">1980-01-01</Parameter>
<Parameter Id="Maximum">Today</Parameter>
</Parameters>
</Predicate>
</Predicates>
Adicione um PredicateValidation com uma referência ao DateRange
predicado.
<PredicateValidations>
<PredicateValidation Id="CustomDateRange">
<PredicateGroups>
<PredicateGroup Id="DateRangeGroup">
<PredicateReferences>
<PredicateReference Id="DateRange" />
</PredicateReferences>
</PredicateGroup>
</PredicateGroups>
</PredicateValidation>
</PredicateValidations>
No tipo de declaração, adicione o elemento PredicateValidationReference e especifique o identificador como CustomDateRange
.
<ClaimType Id="dateOfBirth">
<DisplayName>Date of Birth</DisplayName>
<DataType>date</DataType>
<AdminHelpText>The user's date of birth.</AdminHelpText>
<UserHelpText>Your date of birth.</UserHelpText>
<UserInputType>DateTimeDropdown</UserInputType>
<PredicateValidationReference Id="CustomDateRange" />
</ClaimType>
Próximos passos
- Saiba como Configurar a complexidade de senha usando políticas personalizadas no Azure Ative Directory B2C usando validações de predicados.