Predykaty i PredykateValidations
Uwaga
W usłudze Azure Active Directory B2C zasady niestandardowe są przeznaczone głównie do rozwiązywania złożonych scenariuszy. W przypadku większości scenariuszy zalecamy używanie wbudowanych przepływów użytkownika. Jeśli nie zostało to zrobione, dowiedz się więcej o niestandardowym pakiecie startowym zasad w temacie Wprowadzenie do zasad niestandardowych w usłudze Active Directory B2C.
Elementy Predykates i PredicateValidations umożliwiają przeprowadzenie procesu weryfikacji w celu zapewnienia, że tylko prawidłowo sformułowane dane są wprowadzane do dzierżawy usługi Azure Active Directory B2C (Azure AD B2C).
Na poniższym diagramie przedstawiono relację między elementami:
Predykaty
Element Predykate definiuje podstawową walidację, aby sprawdzić wartość typu oświadczenia i zwraca true
wartość lub false
. Walidacja odbywa się przy użyciu określonego elementu Metoda i zestawu elementów parametrów odpowiednich dla metody. Na przykład predykat może sprawdzić, czy długość wartości oświadczenia ciągu mieści się w zakresie parametrów minimalnych i maksymalnych, czy wartość oświadczenia ciągu zawiera zestaw znaków. Element UserHelpText zawiera komunikat o błędzie dla użytkowników, jeśli sprawdzanie nie powiedzie się. Wartość elementu UserHelpText można lokalizować przy użyciu dostosowywania języka.
Element Predykates musi pojawić się bezpośrednio po elemecie ClaimsSchema w elemecie BuildingBlocks .
Element Predykates zawiera następujący element:
Element | Wystąpień | opis |
---|---|---|
Predykat | 1:n | Lista predykatów. |
Element Predykate zawiera następujące atrybuty:
Atrybut | Wymagania | Opis |
---|---|---|
Id | Tak | Identyfikator używany dla predykatu. Inne elementy mogą używać tego identyfikatora w zasadach. |
Method | Tak | Typ metody do użycia do weryfikacji. Możliwe wartości: IsLengthRange, MatchesRegex, IncludesCharacters lub IsDateRange. |
Helptext | Nie. | Komunikat o błędzie dla użytkowników, jeśli sprawdzanie nie powiedzie się. Ten ciąg można lokalizować przy użyciu dostosowywania języka |
Element Predykate zawiera następujące elementy:
Element | Wystąpień | opis |
---|---|---|
UserHelpText | 0:1 | (Przestarzałe) Komunikat o błędzie dla użytkowników, jeśli sprawdzanie nie powiedzie się. |
Parametry | 1:1 | Parametry dla typu metody weryfikacji ciągu. |
Element Parameters zawiera następujące elementy:
Element | Wystąpień | opis |
---|---|---|
Parametr | 1:n | Parametry dla typu metody weryfikacji ciągu. |
Element Parametr zawiera następujące atrybuty:
Element | Wystąpień | opis |
---|---|---|
Id | 1:1 | Identyfikator parametru. |
Metody predykatu
IsLengthRange
Metoda IsLengthRange sprawdza, czy długość wartości oświadczenia ciągu mieści się w zakresie minimalnych i maksymalnych parametrów określonych. Zapoznaj się z pokazem live tej metody predykatu. Element predykate obsługuje następujące parametry:
Parametr | Wymagania | opis |
---|---|---|
Maksymalnie | Tak | Maksymalna liczba znaków, które można wprowadzić. |
Minimum | Tak | Minimalna liczba znaków, które należy wprowadzić. |
W poniższym przykładzie przedstawiono metodę IsLengthRange z parametrami Minimum
i Maximum
określającą zakres długości ciągu:
<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>
DopasowaniaRegex
Metoda MatchesRegex sprawdza, czy wartość oświadczenia ciągu jest zgodna z wyrażeniem regularnym. Zapoznaj się z pokazem live tej metody predykatu. Element predykate obsługuje następujące parametry:
Parametr | Wymagania | opis |
---|---|---|
RegularExpression | Tak | Wzorzec wyrażenia regularnego do dopasowania. |
W poniższym przykładzie przedstawiono metodę MatchesRegex
z parametrem RegularExpression
określającym wyrażenie regularne:
<Predicate Id="PIN" Method="MatchesRegex" HelpText="The password must be numbers only.">
<Parameters>
<Parameter Id="RegularExpression">^[0-9]+$</Parameter>
</Parameters>
</Predicate>
IncludesCharacters
Metoda IncludesCharacters sprawdza, czy wartość oświadczenia ciągu zawiera zestaw znaków. Zapoznaj się z pokazem live tej metody predykatu. Element predykate obsługuje następujące parametry:
Parametr | Wymagania | opis |
---|---|---|
Characterset | Tak | Zestaw znaków, które można wprowadzić. Na przykład małe litery a-z , wielkie litery A-Z , cyfry 0-9 lub lista symboli, takich jak @#$%^&*\-_+=[]{}|\\:',?/~"();! . |
W poniższym przykładzie przedstawiono metodę IncludesCharacters
z parametrem CharacterSet
określającym zestaw znaków:
<Predicate Id="Lowercase" Method="IncludesCharacters" HelpText="a lowercase letter">
<Parameters>
<Parameter Id="CharacterSet">a-z</Parameter>
</Parameters>
</Predicate>
IsDateRange
Metoda IsDateRange sprawdza, czy wartość oświadczenia daty mieści się między określonym zakresem minimalnych i maksymalnych parametrów. Zapoznaj się z pokazem live tej metody predykatu. Element predykate obsługuje następujące parametry:
Parametr | Wymagania | opis |
---|---|---|
Maksymalnie | Tak | Największa możliwa data, którą można wprowadzić. Format daty jest zgodny yyyy-mm-dd z konwencją lub Today . |
Minimum | Tak | Najmniejsza możliwa data, którą można wprowadzić. Format daty jest zgodny yyyy-mm-dd z konwencją lub Today . |
W poniższym przykładzie przedstawiono metodę IsDateRange
z parametrami Minimum
i Maximum
określającą zakres dat w formacie yyyy-mm-dd
i 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>
PredykateValidations
Podczas gdy predykaty definiują walidację w celu sprawdzenia typu oświadczenia, predykateValidations grupują zestaw predykatów w celu utworzenia weryfikacji danych wejściowych użytkownika, które można zastosować do typu oświadczenia. Każdy element PredicateValidation zawiera zestaw elementów PredykateGroup , które zawierają zestaw elementów PredicateReference wskazujących predykat. Aby przejść walidację, wartość oświadczenia powinna przejść wszystkie testy dowolnego predykatu we wszystkich predykatach PredykateGroup z ich zestawem elementów PredicateReference .
Element PredicateValidations musi pojawić się bezpośrednio po elemecie Predykates w elemecie BuildingBlocks .
<PredicateValidations>
<PredicateValidation Id="">
<PredicateGroups>
<PredicateGroup Id="">
<UserHelpText></UserHelpText>
<PredicateReferences MatchAtLeast="">
<PredicateReference Id="" />
...
</PredicateReferences>
</PredicateGroup>
...
</PredicateGroups>
</PredicateValidation>
...
</PredicateValidations>
Element PredicateValidations zawiera następujący element:
Element | Wystąpień | opis |
---|---|---|
PredykatValidation | 1:n | Lista weryfikacji predykatu. |
Element PredicateValidation zawiera następujący atrybut:
Atrybut | Wymagania | Opis |
---|---|---|
Id | Tak | Identyfikator używany do weryfikacji predykatu. Element ClaimType może używać tego identyfikatora w zasadach. |
Element PredicateValidation zawiera następujący element:
Element | Wystąpień | opis |
---|---|---|
PredykateGroups | 1:n | Lista grup predykatów. |
Element PredicateGroups zawiera następujący element:
Element | Wystąpień | opis |
---|---|---|
PredykateGroup | 1:n | Lista predykatów. |
Element PredicateGroup zawiera następujący atrybut:
Atrybut | Wymagania | Opis |
---|---|---|
Id | Tak | Identyfikator używany dla grupy predykatu. |
Element PredicateGroup zawiera następujące elementy:
Element | Wystąpień | opis |
---|---|---|
UserHelpText | 0:1 | Opis predykatu, który może być przydatny dla użytkowników, aby wiedzieć, jaką wartość powinni wpisać. |
PredykateReferences | 1:n | Lista odwołań predykatów. |
Element PredicateReferences zawiera następujące atrybuty:
Atrybut | Wymagania | opis |
---|---|---|
MatchAtLeast | Nie. | Określa, że wartość musi być zgodna z co najmniej tylu definicjami predykatów, aby dane wejściowe zostały zaakceptowane. Jeśli nie zostanie określona, wartość musi być zgodna ze wszystkimi definicjami predykatu. |
Element PredicateReferences zawiera następujące elementy:
Element | Wystąpień | opis |
---|---|---|
PredykatReference | 1:n | Odwołanie do predykatu. |
Element PredicateReference zawiera następujące atrybuty:
Atrybut | Wymagania | Opis |
---|---|---|
Id | Tak | Identyfikator używany do weryfikacji predykatu. |
Konfigurowanie złożoności hasła
Dzięki predykatom i predykatomValidationsInput możesz kontrolować wymagania dotyczące złożoności haseł udostępnianych przez użytkownika podczas tworzenia konta. Domyślnie usługa Azure AD B2C używa silnych haseł. Usługa Azure AD B2C obsługuje również opcje konfiguracji w celu kontrolowania złożoności haseł, których klienci mogą używać. Złożoność hasła można zdefiniować przy użyciu tych elementów predykatu:
- IsLengthBetween8And64 przy użyciu
IsLengthRange
metody sprawdza, czy hasło musi zawierać od 8 do 64 znaków. - Małe litery przy użyciu
IncludesCharacters
metody sprawdza, czy hasło zawiera małą literę. - Wielkie litery przy użyciu
IncludesCharacters
metody sprawdza, czy hasło zawiera wielką literę. - Numer przy użyciu
IncludesCharacters
metody sprawdza, czy hasło zawiera cyfrę. - Symbol przy użyciu
IncludesCharacters
metody sprawdza, czy hasło zawiera jeden z kilku znaków symboli. - Numer PIN przy użyciu
MatchesRegex
metody sprawdza, czy hasło zawiera tylko liczby. - AllowedAADCharacters przy użyciu
MatchesRegex
metody sprawdza, czy podano tylko nieprawidłowy znak hasła. - NiedozwoloneWhitespace przy użyciu
MatchesRegex
metody sprawdza, czy hasło nie zaczyna się ani nie kończy znakiem odstępu.
<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>
Po zdefiniowaniu podstawowych weryfikacji można połączyć je razem i utworzyć zestaw zasad haseł, których można użyć w zasadach:
- SimplePassword weryfikuje niedozwoloneWhitespace, AllowedAADCharacters i IsLengthBetween8And64
- StrongPassword weryfikuje NiedozwoloneWhitespace, AllowedAADCharacters, IsLengthBetween8And64. Ostatnia grupa
CharacterClasses
uruchamia dodatkowy zestaw predykatów zMatchAtLeast
ustawionym na 3. Hasło użytkownika musi zawierać od 8 do 16 znaków, a trzy z następujących znaków: Małe litery, Wielkie litery, Liczba lub Symbol. - Element CustomPassword weryfikuje tylko niedozwoloneWhitespace, AllowedAADCharacters. Dlatego użytkownik może podać dowolne hasło o dowolnej długości, o ile znaki są prawidłowe.
<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>
W typie oświadczenia dodaj element PredicateValidationReference i określ identyfikator jako jeden z predykatów weryfikacji, takich jak SimplePassword, StrongPassword lub 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>
Poniżej przedstawiono sposób organizowania elementów, gdy usługa Azure AD B2C wyświetla komunikat o błędzie:
Konfigurowanie zakresu dat
Za pomocą elementów Predykates i PredicateValidations można kontrolować minimalne i maksymalne wartości daty parametru UserInputType przy użyciu elementu DateTimeDropdown
. W tym celu utwórz predykat z IsDateRange
metodą i podaj minimalne i maksymalne parametry.
<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>
Dodaj predykatValidation z odwołaniem do DateRange
predykatu.
<PredicateValidations>
<PredicateValidation Id="CustomDateRange">
<PredicateGroups>
<PredicateGroup Id="DateRangeGroup">
<PredicateReferences>
<PredicateReference Id="DateRange" />
</PredicateReferences>
</PredicateGroup>
</PredicateGroups>
</PredicateValidation>
</PredicateValidations>
W typie oświadczenia dodaj element PredicateValidationReference i określ identyfikator jako 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>
Następne kroki
- Dowiedz się, jak skonfigurować złożoność hasła przy użyciu zasad niestandardowych w usłudze Azure Active Directory B2C przy użyciu weryfikacji predykatu.