Delen via


Predicaten en PredicateValidations

Belangrijk

Vanaf 1 mei 2025 is Azure AD B2C niet meer beschikbaar voor nieuwe klanten. Meer informatie vindt u in onze veelgestelde vragen.

Opmerking

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 Predicaten 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 toont de relatie tussen de elementen:

Diagram met de relatie tussen predicaten en predicaatvalidaties

Predikaten

Het Predicaat-element definieert een basisvalidatie om de waarde van een claimtype te controleren en retourneert true of false. De validatie wordt uitgevoerd met behulp van een gespecificeerd methode-element en een set parameterelementen die relevant zijn voor de methode. Een predicaat kan bijvoorbeeld controleren of de lengte van een tekenreeksclaimwaarde binnen het bereik van de opgegeven minimum- en maximumparameters valt, of dat een tekenreeksclaimwaarde een tekenset bevat. Het element UserHelpText geeft een foutbericht voor gebruikers als de controle mislukt. De waarde van het UserHelpText-element kan worden gelokaliseerd met behulp van taalaanpassing.

Het element Predicaten moet direct na het element ClaimsSchema worden weergegeven in het element BuildingBlocks .

Het element Predicaten bevat het volgende element:

Onderdeel Instanties Beschrijving
Predicaat 1:n Een lijst met predicaten.

Het predicaatselement bevat de volgende kenmerken:

Eigenschap Verplicht Beschrijving
Identiteitsbewijs Ja Een id die wordt gebruikt voor het predicaat. Andere elementen kunnen deze id gebruiken in het beleid.
Methode Ja Het methodetype dat moet worden gebruikt voor validatie. Mogelijke waarden: IsLengthRange, MatchesRegex, IncludesCharacters of IsDateRange.
HelpTekst Nee. Een foutmelding voor gebruikers als de controle mislukt. Deze tekenreeks kan worden gelokaliseerd met behulp van de taalaanpassing

Het predicaatelement bevat de volgende elementen:

Onderdeel Instanties Beschrijving
UserHelpText 0:1 (Afgeschaft) Een foutmelding voor gebruikers als de controle mislukt.
Parameterwaarden 1:1 De parameters voor het methodetype van de tekenreeksvalidatie.

Het element Parameters bevat de volgende elementen:

Onderdeel Instanties Beschrijving
Kenmerk 1:n De parameters voor het methodetype van de tekenreeksvalidatie.

Het element Parameter bevat de volgende kenmerken:

Onderdeel Instanties Beschrijving
Identiteitsbewijs 1:1 De identificatie van de parameter.

Predicaat methoden

IsLengtebereik

De IsLengthRange-methode controleert of de lengte van een tekenreeksclaimwaarde binnen het bereik van de opgegeven minimum- en maximumparameters valt. Bekijk de Live demo van deze predicaatmethode. Het predicaatelement ondersteunt de volgende parameters:

Kenmerk Verplicht Beschrijving
Maximaal Ja Het maximale aantal tekens dat kan worden ingevoerd.
Minimaal Ja Het minimale aantal tekens dat moet worden ingevoerd.

In het volgende voorbeeld ziet u een IsLengthRange-methode 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>

WedstrijdenRegex

De MatchesRegex-methode controleert of de waarde van een tekenreeksclaim overeenkomt met een reguliere expressie. Bekijk de Live demo van deze predicaatmethode. Het predicaatelement ondersteunt de volgende parameters:

Kenmerk Verplicht Beschrijving
Regelmatige expressie Ja Het patroon van de reguliere expressie dat daarbij past.

In het volgende voorbeeld ziet u een MatchesRegex methode met de parameter RegularExpression die een reguliere expressie opgeeft:

<Predicate Id="PIN" Method="MatchesRegex" HelpText="The password must be numbers only.">
  <Parameters>
    <Parameter Id="RegularExpression">^[0-9]+$</Parameter>
  </Parameters>
</Predicate>

InclusiefPersonages

Met de methode IncludesCharacters wordt gecontroleerd of de waarde van een tekenreeksclaim een tekenset bevat. Bekijk de Live demo van deze predicaatmethode. Het predicaatelement ondersteunt de volgende parameters:

Kenmerk Verplicht Beschrijving
Tekenreeks Ja De set tekens die kan worden ingevoerd. Bijvoorbeeld kleine letters a-z, hoofdletters A-Z, cijfers 0-9of een lijst met symbolen, zoals @#$%^&amp;*\-_+=[]{}|\\:',?/~"();!.

In het volgende voorbeeld ziet u een IncludesCharacters methode met de parameter CharacterSet die de set tekens opgeeft:

<Predicate Id="Lowercase" Method="IncludesCharacters" HelpText="a lowercase letter">
  <Parameters>
    <Parameter Id="CharacterSet">a-z</Parameter>
  </Parameters>
</Predicate>

IsDateRange

Met de IsDateRange-methode wordt gecontroleerd of de waarde van een datumclaim tussen een bereik van minimale en maximale parameters ligt. Bekijk de Live demo van deze predicaatmethode. Het predicaatelement ondersteunt de volgende parameters:

Kenmerk Verplicht Beschrijving
Maximaal Ja De grootst mogelijke datum die kan worden ingevoerd. Het formaat van de datum volgt yyyy-mm-dd conventie, of Today.
Minimaal Ja De kleinst mogelijke datum die kan worden ingevoerd. Het formaat van de datum volgt yyyy-mm-dd conventie, of Today.

In het volgende voorbeeld ziet u een IsDateRange methode met de parameters Minimum en Maximum die het datumbereik opgeven met de notatie en yyyy-mm-ddToday.

<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>

PredicaatValidaties

Terwijl de predicaten de validatie definiƫren die moet worden gecontroleerd op basis van een claimtype, groepeert de PredicateValidations een set predicaten om een validatie voor gebruikersinvoer te vormen 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 verwijzen. Om de validatie te doorstaan, moet de waarde van de claim alle tests van elk predicaat onder alle PredicateGroup met hun set PredicateReference-elementen doorstaan.

Het element PredicateValidations moet direct na het element Predicates in het element BuildingBlocks worden weergegeven.

<PredicateValidations>
  <PredicateValidation Id="">
    <PredicateGroups>
      <PredicateGroup Id="">
        <UserHelpText></UserHelpText>
        <PredicateReferences MatchAtLeast="">
          <PredicateReference Id="" />
          ...
        </PredicateReferences>
      </PredicateGroup>
      ...
    </PredicateGroups>
  </PredicateValidation>
...
</PredicateValidations>

Het element PredicateValidations bevat het volgende element:

Onderdeel Instanties Beschrijving
PredicaatValidatie 1:n Een lijst met predikaatvalidatie.

Het element PredicateValidation bevat het volgende kenmerk:

Eigenschap Verplicht Beschrijving
Identiteitsbewijs Ja Een id die wordt gebruikt voor de validatie van het predicaat. Het element ClaimType kan deze id gebruiken in het beleid.

Het element PredicateValidation bevat het volgende element:

Onderdeel Instanties Beschrijving
PredicaatGroepen 1:n Een lijst van predicaatgroepen.

Het element PredicateGroups bevat het volgende element:

Onderdeel Instanties Beschrijving
PredicaatGroep 1:n Een lijst met predicaten.

Het element PredicateGroup bevat het volgende kenmerk:

Eigenschap Verplicht Beschrijving
Identiteitsbewijs Ja Een id die wordt gebruikt voor de predicaatgroep.

Het element PredicateGroup bevat de volgende elementen:

Onderdeel Instanties Beschrijving
UserHelpText 0:1 Een beschrijving van het predicaat die nuttig kan zijn voor gebruikers om te weten welke waarde ze moeten typen.
PredicaatVerwijzingen 1:n Een lijst van predikaatverwijzingen.

Het element PredicateReferences bevat de volgende kenmerken:

Eigenschap Verplicht Beschrijving
Overeenkomen op zijn minst Nee. Hiermee geeft u op dat de waarde ten minste aan een bepaald aantal predikaatdefinities moet voldoen om de invoer te kunnen accepteren. Als deze niet is opgegeven, moet de waarde overeenkomen met alle predikaatdefinities.

Het element PredicateReferences bevat de volgende elementen:

Onderdeel Instanties Beschrijving
PredicaatVerwijzing 1:n Een verwijzing naar een predikaat.

Het element PredicateReference bevat de volgende kenmerken:

Eigenschap Verplicht Beschrijving
Identiteitsbewijs Ja Een id die wordt gebruikt voor de validatie van het predicaat.

Wachtwoordcomplexiteit configureren

Met Predicates en PredicateValidationsInput kunt u de complexiteitsvereisten beheren voor wachtwoorden die door een gebruiker worden verstrekt bij het maken van een account. Azure AD B2C maakt standaard gebruik van sterke wachtwoorden. Azure AD B2C biedt ook ondersteuning voor configuratieopties voor het beheren van de complexiteit van wachtwoorden die klanten kunnen gebruiken. U kunt de complexiteit van wachtwoorden definiƫren met behulp van de volgende predicaatelementen:

  • IsLengthBetween8And64 gebruikt de IsLengthRange methode en valideert dat het wachtwoord tussen de 8 en 64 tekens moet zijn.
  • Kleine letters met behulp van de IncludesCharacters methode controleren of het wachtwoord een kleine letter bevat.
  • Met behulp van een hoofdletter wordt gecontroleerd IncludesCharacters of het wachtwoord een hoofdletter bevat.
  • Nummer met behulp van de IncludesCharacters methode controleert of het wachtwoord een cijfer bevat.
  • Symbool met behulp van de IncludesCharacters methode controleert of het wachtwoord een van de verschillende symbooltekens bevat.
  • Pincode met behulp van de MatchesRegex methode controleert dat het wachtwoord alleen cijfers bevat.
  • AllowedAADCharacters met behulp van de MatchesRegex methode controleert of het enige ongeldige teken voor het wachtwoord is opgegeven.
  • Met behulp van de MatchesRegex methode wordt gecontroleerd of het wachtwoord niet begint of eindigt met een spatie.
<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">@#$%^&amp;*\-_+=[]{}|\\:',.?/`~"();!</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@#$%^&amp;*\-_+=[\]{}|\\:',?/`~"();! ]|(\.(?!@)))+$)|(^$)</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
  • StrongPassword valideert de DisallowedWhitespace, AllowedAADCharacters, IsLengthBetween8And64. De laatste groep CharacterClasses voert een extra set predicaten uit met MatchAtLeast een set op 3. Het gebruikerswachtwoord moet tussen de 8 en 16 tekens lang zijn en drie van de volgende tekens bevatten: Kleine letters, Hoofdletters, Cijfers of Symbolen.
  • CustomPassword valideert alleen DisallowedWhitespace, AllowedAADCharacters. De gebruiker kan dus elk wachtwoord van elke lengte opgeven, 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 georganiseerd wanneer het foutbericht wordt weergegeven in Azure AD B2C:

Diagram van predicaat en PredicateGroup wachtwoordcomplexiteit voorbeeld

Een periode configureren

Met de elementen Predicates en PredicateValidations kunt u de minimum- en maximumdatumwaarden van UserInputType bepalen met behulp van een DateTimeDropdown. Om dit te doen, maakt u een predicaat met de IsDateRange methode en geeft u de minimale en maximale parameters 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