Predicates en PredicateValidations
Notitie
In Azure Active Directory B2C is aangepast beleid voornamelijk bedoeld om met complexe scenario's om te gaan. Voor de meeste scenario's wordt aangeraden ingebouwde gebruikersstromen te gebruiken. Als u dit nog niet hebt gedaan, vindt u meer informatie over aangepast beleid in het starterspakket in Aan de slag met aangepaste beleidsregels in Active Directory B2C.
Met de elementen Predicates en PredicateValidations kunt u een validatieproces uitvoeren om ervoor te zorgen dat alleen correct gevormde gegevens worden ingevoerd in uw Azure Active Directory B2C-tenant (Azure AD B2C).
Het volgende diagram geeft de relatie tussen deze klassen weer.
Predicaten
Het element Predicate definieert een basisvalidatie om de waarde van een claimtype te controleren en retourneert true
of false
. De validatie wordt uitgevoerd met behulp van een opgegeven elementMethode en een set van Parameter elementen die relevant zijn voor de methode. Een predicaat kan bijvoorbeeld controleren of de lengte van een tekenreeks claimwaarde binnen het bereik van minimum- en maximumparameters valt, maar bijvoorbeeld ook of een tekenreeksclaimwaarde een tekenset bevat. Het element UserHelpText biedt een foutbericht voor gebruikers als de controle mislukt. De waarde van het element UserHelpText kan worden gelokaliseerd met behulp van taalaanpassing.
Het element Predicates moet direct na het element ClaimsSchema worden weergegeven in het element BuildingBlocks.
Het element Predicates bevat het volgende element:
Element | Instanties | Beschrijving |
---|---|---|
Predicaat | 1:n | Een lijst met predicaten. |
Het element Predicate bevat de volgende kenmerken:
Kenmerk | Vereist | Beschrijving |
---|---|---|
ID | Ja | Een id die wordt gebruikt voor het predicaat. Andere elementen kunnen deze id gebruiken in het beleid. |
Wijze | Ja | Het methodetype dat moet worden gebruikt voor de validatie. Mogelijke waarden: IsLengthRange, MatchesRegex, IncludesCharacters of IsDateRange. |
HelpText | Nee | Een foutbericht voor gebruikers als de controle mislukt. Deze tekenreeks kan worden gelokaliseerd met behulp van de taalaanpassing |
Het element Predicate bevat de volgende elementen:
Element | Instanties | Beschrijving |
---|---|---|
UserHelpText | 0:1 | (Afgeschaft) Een foutbericht voor gebruikers als de controle mislukt. |
Parameters | 1:1 | De parameters voor het methodetype van de tekenreeksvalidatie. |
Het element Parameters bevat de volgende elementen:
Element | Instanties | Beschrijving |
---|---|---|
Parameter | 1:n | De parameters voor het methodetype van de tekenreeksvalidatie. |
Het element Parameters bevat de volgende kenmerken:
Element | Instanties | Description |
---|---|---|
ID | 1:1 | De id van de parameter. |
Predicaatmethoden
IsLengthRange
De IsLengthRange methode controleert of de lengte van een tekenreeksclaimwaarde binnen het bereik valt van de opgegeven minimum- en maximumparameters. Bekijk de Live-demo van deze predicaatmethode. Het predicaatelement ondersteunt de volgende parameters:
Parameter | Vereist | Beschrijving |
---|---|---|
Maximum | Ja | Het maximum aantal tekens dat kan worden ingevoerd. |
Minimum | Ja | Het minimale aantal tekens dat moet worden ingevoerd. |
In het volgende voorbeeld ziet u een Methode IsLengthRange met de parameters Minimum
en Maximum
die het lengtebereik van de tekenreeks opgeven:
<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
De MatchesRegex methode controleert of een tekenreeksclaimwaarde overeenkomt met een reguliere expressie. Bekijk de Live-demo van deze predicaatmethode. Het predicaatelement ondersteunt de volgende parameters:
Parameter | Vereist | Beschrijving |
---|---|---|
RegularExpression | Ja | Het patroon van de reguliere expressie dat moet worden overeengekomen. |
In het volgende voorbeeld ziet u een MatchesRegex
methode met parameter RegularExpression
waarmee een reguliere expressie wordt opgegeven:
<Predicate Id="PIN" Method="MatchesRegex" HelpText="The password must be numbers only.">
<Parameters>
<Parameter Id="RegularExpression">^[0-9]+$</Parameter>
</Parameters>
</Predicate>
IncludesCharacters
De IncludesCharacters methode controleert of een tekenreeksclaimwaarde een tekenset bevat. Bekijk de Live-demo van deze predicaatmethode. Het predicaatelement ondersteunt de volgende parameters:
Parameter | Vereist | Beschrijving |
---|---|---|
CharacterSet | Ja | De reeks tekens die kunnen worden ingevoerd. Bijvoorbeeld, kleine letters a-z , hoofdletters A-Z , cijfers 0-9 of een lijst met symbolen, zoals @#$%^&*\-_+=[]{}|\\:',?/~"();! . |
In het volgende voorbeeld ziet u een IncludesCharacters
methode met parameter CharacterSet
waarmee een reguliere expressie wordt opgegeven:
<Predicate Id="Lowercase" Method="IncludesCharacters" HelpText="a lowercase letter">
<Parameters>
<Parameter Id="CharacterSet">a-z</Parameter>
</Parameters>
</Predicate>
IsDateRange
De IsDateRange methode controleert of een datumclaimwaarde zich tussen een opgegeven bereik van minimum- en maximumparameters bevindt. Bekijk de Live-demo van deze predicaatmethode. Het predicaatelement ondersteunt de volgende parameters:
Parameter | Vereist | Beschrijving |
---|---|---|
Maximum | Ja | De kleinst mogelijke datum die kan worden ingevoerd. De indeling van de datum volgt de yyyy-mm-dd conventie, of Today . |
Minimum | Ja | De kleinst mogelijke datum die kan worden ingevoerd. De indeling van de datum volgt de yyyy-mm-dd conventie, of Today . |
In het volgende voorbeeld ziet u een IsDateRange
methode met de parameters Minimum
en Maximum
waarmee het datumbereik wordt opgegeven met een notatie van yyyy-mm-dd
en 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>
PredicateValidations
Hoewel de predicaten de validatie definiƫren om te controleren op een claimtype, groeperen de PredicateValidations een set van predicaten voor de validatie van de gebruikersinvoer die kan worden toegepast op een claimtype. Elk PredicateValidation-element bevat een set PredicateGroup-elementen die een set PredicateReference-elementen bevatten die naar een predicaat verwijst. Om de validatie door te geven, moet de waarde van de claim alle tests van een predicaat onder alle PredicateGroup met hun set PredicateReference-elementen doorgeven.
Het element PredicateValidations moet direct na het element Predicaten worden weergegeven in het element BuildingBlocks.
<PredicateValidations>
<PredicateValidation Id="">
<PredicateGroups>
<PredicateGroup Id="">
<UserHelpText></UserHelpText>
<PredicateReferences MatchAtLeast="">
<PredicateReference Id="" />
...
</PredicateReferences>
</PredicateGroup>
...
</PredicateGroups>
</PredicateValidation>
...
</PredicateValidations>
Het element PredicateValidations bevat het volgende element:
Element | Instanties | Beschrijving |
---|---|---|
PredicateValidation | 1:n | Een lijst met predicaatvalidaties. |
Het element PredicateValidation bevat het volgende kenmerk:
Kenmerk | Vereist | Beschrijving |
---|---|---|
ID | Ja | Een id die wordt gebruikt voor de predicaatvalidatie. Het element ClaimType kan deze id gebruiken in het beleid. |
Het element PredicateValidation bevat het volgende element:
Element | Instanties | Beschrijving |
---|---|---|
PredicateGroups | 1:n | Een lijst met predicaatgroepen. |
Het element PredicateGroups bevat het volgende element:
Element | Instanties | Beschrijving |
---|---|---|
PredicateGroup | 1:n | Een lijst met predicaten. |
Het element PredicateGroup bevat het volgende kenmerk:
Kenmerk | Vereist | Beschrijving |
---|---|---|
ID | Ja | Een id die wordt gebruikt voor de predicaatgroep. |
Het element PredicateGroup bevat de volgende elementen:
Element | Instanties | Beschrijving |
---|---|---|
UserHelpText | 0:1 | Een beschrijving van het predicaat dat nuttig kan zijn voor gebruikers om te weten welke waarde ze moeten typen. |
PredicateReferences | 1:n | Een lijst met predicaatverwijzingen. |
Het element PredicateReferences bevat de volgende kenmerken:
Kenmerk | Vereist | Beschrijving |
---|---|---|
MatchAtLeast | Nee | Hiermee geeft u op dat de waarde moet overeenkomen met ten minste net zo veel predicaatdefinities opdat de invoer zou worden geaccepteerd. Als deze niet is opgegeven, moet de waarde overeenkomen met alle predicaatdefinities. |
Het element PredicateReferences bevat de volgende elementen:
Element | Instanties | Beschrijving |
---|---|---|
PredicateReference | 1:n | Een verwijzing naar een predicaat. |
Het element PredicateReferences bevat de volgende kenmerken:
Kenmerk | Vereist | Beschrijving |
---|---|---|
ID | Ja | Een id die wordt gebruikt voor de predicaatvalidatie. |
Wachtwoordcomplexiteit gebruiken
Met Predicaten en PredicateValidationsInput kunt u de complexiteitsvereisten voor wachtwoorden beheren die worden verleend door een gebruiker bij het maken van een account. Azure AD B2C gebruikt standaard sterke wachtwoorden. Azure AD B2C ondersteunt ook configuratieopties om de complexiteit van wachtwoorden te beheren die klanten kunnen gebruiken. U kunt wachtwoordcomplexiteit definiƫren met behulp van deze predicaatelementen:
- IsLengthBetween8And64 met behulp van de
IsLengthRange
methode valideert dat het wachtwoord tussen 8 en 64 tekens moet zijn. - Kleine letters met behulp van de
IncludesCharacters
methode valideert dat het wachtwoord een kleine letter bevat. - Hoofdletters met behulp van de
IncludesCharacters
methode valideert dat het wachtwoord een hoofdletter bevat. - Cijfer met behulp van de
IncludesCharacters
methode, valideert dat het wachtwoord een cijfer bevat. - Symbool met behulp van de
IncludesCharacters
methode, valideert dat het wachtwoord een van meerdere symbooltekens bevat. - PIN met behulp van de
MatchesRegex
methode, valideert dat het wachtwoord alleen cijfers bevat. - AllowedAADCharacters met behulp van de
MatchesRegex
methode valideert dat alleen ongeldige tekens werden opgegeven voor het wachtwoord. - DisallowedWhitespace met behulp van de
MatchesRegex
methode, valideert dat het wachtwoord niet begint of eindigt met een witruimte.
<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>
Nadat u de basisvalidaties hebt gedefinieerd, kunt u deze combineren en een set wachtwoordbeleidsregels maken die u in uw beleid kunt gebruiken:
- SimplePassword valideert de DisallowedWhitespace, AllowedAADCharacters en IsLengthBetween8And64
- SimplePassword valideert de DisallowedWhitespace, AllowedAADCharacters en IsLengthBetween8And64. De laatste groep
CharacterClasses
voert een extra set predicaten uit metMatchAtLeast
ingesteld op 3. Het gebruikerswachtwoord moet 8 tot 16 tekens lang zijn en drie van de volgende tekens bevatten: kleine letters, hoofdletters, cijfer of symbool. - CustomPassword valideert alleen DisallowedWhitespace, AllowedAADCharacters. De gebruiker kan dus elk wachtwoord opgeven met elke lengte, zolang de tekens geldig zijn.
<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>
Voeg in uw claimtype het element PredicateValidationReference toe en geef de id op als een van de predicaatvalidaties, zoals SimplePassword, StrongPassword of 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>
Hieronder ziet u hoe de elementen zijn geordend wanneer Azure AD B2C het foutbericht weergeeft:
Een datumbereik configureren
Met de elementen Predicates en PredicateValidations kunt u de minimum- en maximumdatumwaarden van het UserInputType bepalen met behulp van een DateTimeDropdown
. Hiervoor maakt u een Predicate met de IsDateRange
methode en geeft u de minimum- en maximumparameters op.
<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>
Voeg een PredicateValidation toe met een verwijzing naar het DateRange
predicaat.
<PredicateValidations>
<PredicateValidation Id="CustomDateRange">
<PredicateGroups>
<PredicateGroup Id="DateRangeGroup">
<PredicateReferences>
<PredicateReference Id="DateRange" />
</PredicateReferences>
</PredicateGroup>
</PredicateGroups>
</PredicateValidation>
</PredicateValidations>
Voeg in uw claimtype het element predicateValidationReference toe en geef de id op als 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>
Volgende stappen
- Meer informatie over de Configuratie van de complexiteit van het wachtwoord met behulp van een aangepast beleid in Azure Active Directory B2C met behulp van predicaatvalidaties.