Freigeben über


Prädikate und PredicateValidations

Von Bedeutung

Ab dem 1. Mai 2025 steht Azure AD B2C nicht mehr für neue Kunden zur Verfügung. Weitere Informationen finden Sie in unseren HÄUFIG gestellten Fragen.

Hinweis

In Azure Active Directory B2C sind benutzerdefinierte Richtlinien in erster Linie für komplexe Szenarien konzipiert. Für die meisten Szenarien empfehlen wir die Verwendung von integrierten Benutzerflows. Informieren Sie sich, sofern noch nicht geschehen, unter Tutorial: Erstellen von Benutzerflows und benutzerdefinierten Richtlinien in Azure Active Directory B2C über das Starter Pack für benutzerdefinierte Richtlinien.

Mit den PredicateValidations-Elementen können Sie einen Überprüfungsprozess durchführen, um sicherzustellen, dass nur ordnungsgemäß gebildete Daten in Ihren Azure Active Directory B2C (Azure AD B2C)-Mandanten eingegeben werden.

Das folgende Diagramm zeigt die Beziehung zwischen den Elementen:

Diagramm mit Prädikaten und Prädikatüberprüfungsbeziehung

Prädikate

Das Prädikatelement definiert eine grundlegende Überprüfung, um den Wert eines Anspruchstyps zu überprüfen und zurückzugeben true oder false. Die Überprüfung erfolgt mithilfe eines angegebenen Method-Elements und einer Reihe von Parameterelementen , die für die Methode relevant sind. Ein Prädikat kann z. B. überprüfen, ob sich die Länge eines Zeichenfolgenanspruchswerts innerhalb des Angegebenen Bereichs von minimalen und maximalen Parametern befindet oder ob ein Zeichenfolgenanspruchswert einen Zeichensatz enthält. Das UserHelpText-Element stellt eine Fehlermeldung für Benutzer bereit, wenn die Überprüfung fehlschlägt. Der Wert des UserHelpText-Elements kann mithilfe der Sprachanpassung lokalisiert werden.

Das Prädikatelement muss direkt nach dem ClaimsSchema-Element innerhalb des BuildingBlocks-Elements angezeigt werden.

Das Prädikats-Element enthält das folgende Element:

Element Vorkommen BESCHREIBUNG
Prädikat 1:n Eine Liste mit Prädikaten.

Das Prädikatelement enthält die folgenden Attribute:

Merkmal Erforderlich BESCHREIBUNG
Id Ja Ein Bezeichner, der für das Prädikat verwendet wird. Andere Elemente können diesen Bezeichner in der Richtlinie verwenden.
Methode Ja Der für die Überprüfung zu verwendende Methodentyp. Mögliche Werte: IsLengthRange, MatchesRegex, IncludesCharacters oder IsDateRange.
HilfeText Nein Eine Fehlermeldung für Benutzer, wenn die Überprüfung fehlschlägt. Diese Zeichenfolge kann mithilfe der Sprachanpassung lokalisiert werden.

Das Prädikatelement enthält die folgenden Elemente:

Element Vorkommen BESCHREIBUNG
BenutzerHilfeText 0:1 (Veraltet) Eine Fehlermeldung für Benutzer, wenn die Überprüfung fehlschlägt.
Die Parameter 1:1 Die Parameter für den Methodentyp der Zeichenfolgenüberprüfung.

Das Parameters-Element enthält die folgenden Elemente:

Element Vorkommen BESCHREIBUNG
Parameter 1:n Die Parameter für den Methodentyp der Zeichenfolgenüberprüfung.

Das Parameter-Element enthält die folgenden Attribute:

Element Vorkommen BESCHREIBUNG
Id 1:1 Der Bezeichner des Parameters.

Prädikatmethoden

IsLengthRange

Die IsLengthRange-Methode überprüft, ob sich die Länge eines Zeichenfolgenanspruchswerts innerhalb des Bereichs von minimalen und maximalen Parametern befindet. Sehen Sie sich die Live-Demo dieser Prädikatmethode an. Das Prädikatelement unterstützt die folgenden Parameter:

Parameter Erforderlich BESCHREIBUNG
Höchstwert Ja Die maximale Anzahl von Zeichen, die eingegeben werden können.
Mindestwert Ja Die mindeste Anzahl von Zeichen, die eingegeben werden müssen.

Das folgende Beispiel zeigt eine IsLengthRange-Methode mit den Parametern Minimum und Maximum die den Längenbereich der Zeichenfolge angeben:

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

ÜbereinstimmungenRegex

Die MatchesRegex-Methode überprüft, ob ein Zeichenfolgenanspruchswert mit einem regulären Ausdruck übereinstimmt. Sehen Sie sich die Live-Demo dieser Prädikatmethode an. Das Prädikatelement unterstützt die folgenden Parameter:

Parameter Erforderlich BESCHREIBUNG
Regulärer Ausdruck Ja Das muster des regulären Ausdrucks, das übereinstimmen soll.

Das folgende Beispiel zeigt eine MatchesRegex Methode mit dem Parameter RegularExpression , der einen regulären Ausdruck angibt:

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

IncludesCharacters

Die IncludesCharacters-Methode überprüft, ob ein Zeichenfolgenanspruchswert einen Zeichensatz enthält. Sehen Sie sich die Live-Demo dieser Prädikatmethode an. Das Prädikatelement unterstützt die folgenden Parameter:

Parameter Erforderlich BESCHREIBUNG
CharacterSet Ja Der Satz von Zeichen, die eingegeben werden können. Beispiel: Kleinbuchstaben a-z, Großbuchstaben A-Z, Ziffern oder eine Liste von Symbolen 0-9, z @#$%^&amp;*\-_+=[]{}|\\:',?/~"();!. B. .

Das folgende Beispiel zeigt eine IncludesCharacters Methode mit dem Parameter CharacterSet , der den Satz von Zeichen angibt:

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

IsDateRange

Die IsDateRange-Methode überprüft, ob ein Datumsanspruchswert zwischen einem Bereich von minimalen und maximalen Parametern liegt. Sehen Sie sich die Live-Demo dieser Prädikatmethode an. Das Prädikatelement unterstützt die folgenden Parameter:

Parameter Erforderlich BESCHREIBUNG
Höchstwert Ja Das größtmögliche Datum, das eingegeben werden kann. Das Format des Datums folgt yyyy-mm-dd der Konvention oder Today.
Mindestwert Ja Das kleinste mögliche Datum, das eingegeben werden kann. Das Format des Datums folgt yyyy-mm-dd der Konvention oder Today.

Das folgende Beispiel zeigt eine IsDateRange Methode mit den Parametern Minimum und Maximum die den Datumsbereich mit einem Format von yyyy-mm-dd und 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>

PrädikatValidations

Während die Prädikate die Überprüfung auf einen Anspruchstyp definieren, gruppieren die PredicateValidations eine Gruppe von Prädikaten, um eine Benutzereingabeüberprüfung zu bilden, die auf einen Anspruchstyp angewendet werden kann. Jedes PredicateValidation-Element enthält einen Satz von PredicateGroup-Elementen , die einen Satz von PredicateReference-Elementen enthalten, die auf ein Prädikat verweist. Um die Überprüfung zu bestehen, sollte der Wert des Anspruchs alle Tests eines Prädikats unter allen PredicateGroup-Elementen mit ihrer Gruppe von PredicateReference-Elementen bestehen.

Das PredicateValidations-Element muss direkt nach dem Predicates-Element innerhalb des BuildingBlocks-Elements angezeigt werden.

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

Das PredicateValidations-Element enthält das folgende Element:

Element Vorkommen BESCHREIBUNG
PrädikatValidation 1:n Eine Liste der Prädikatüberprüfung.

Das PredicateValidation-Element enthält das folgende Attribut:

Merkmal Erforderlich BESCHREIBUNG
Id Ja Ein Bezeichner, der für die Prädikatüberprüfung verwendet wird. Das ClaimType-Element kann diesen Bezeichner in der Richtlinie verwenden.

Das PredicateValidation-Element enthält das folgende Element:

Element Vorkommen BESCHREIBUNG
PrädikatGruppen 1:n Eine Liste von Prädikatgruppen.

Das PredicateGroups-Element enthält das folgende Element:

Element Vorkommen BESCHREIBUNG
PrädikatGruppe 1:n Eine Liste mit Prädikaten.

Das PredicateGroup-Element enthält das folgende Attribut:

Merkmal Erforderlich BESCHREIBUNG
Id Ja Ein Bezeichner, der für die Prädikatgruppe verwendet wird.

Das PredicateGroup-Element enthält die folgenden Elemente:

Element Vorkommen BESCHREIBUNG
BenutzerHilfeText 0:1 Eine Beschreibung des Prädikats, das für Benutzer hilfreich sein kann, um zu wissen, welchen Wert sie eingeben sollten.
PrädikatVerweise 1:n Eine Liste der Prädikatverweise.

Das PredicateReferences-Element enthält die folgenden Attribute:

Merkmal Erforderlich BESCHREIBUNG
Mindestens abgleichen Nein Gibt an, dass der Wert mindestens mit vielen Prädikatdefinitionen übereinstimmen muss, damit die Eingabe akzeptiert wird. Wenn nicht angegeben, muss der Wert mit allen Prädikatdefinitionen übereinstimmen.

Das PredicateReferences-Element enthält die folgenden Elemente:

Element Vorkommen BESCHREIBUNG
PrädikatReference 1:n Ein Verweis auf ein Prädikat.

Das PredicateReference-Element enthält die folgenden Attribute:

Merkmal Erforderlich BESCHREIBUNG
Id Ja Ein Bezeichner, der für die Prädikatüberprüfung verwendet wird.

Konfigurieren der Kennwortkomplexität

Mit Prädikaten und PredicateValidationsInput können Sie die Komplexitätsanforderungen für Kennwörter steuern, die von einem Benutzer beim Erstellen eines Kontos bereitgestellt werden. Standardmäßig verwendet Azure AD B2C sichere Kennwörter. Azure AD B2C unterstützt auch Konfigurationsoptionen, um die Komplexität von Kennwörtern zu steuern, die Kunden verwenden können. Mithilfe dieser Prädikatelemente können Sie die Kennwortkomplexität definieren:

  • IsLengthBetween8And64 mit der IsLengthRange Methode überprüft, ob das Kennwort zwischen 8 und 64 Zeichen bestehen muss.
  • Bei Verwendung der IncludesCharacters Methode wird überprüft, ob das Kennwort einen Kleinbuchstaben enthält.
  • Bei Verwendung der IncludesCharacters Methode wird überprüft, ob das Kennwort einen Großbuchstaben enthält.
  • Die Zahl mithilfe der IncludesCharacters Methode überprüft, ob das Kennwort eine Ziffer enthält.
  • Mithilfe der IncludesCharacters Methode wird überprüft, ob das Kennwort eines von mehreren Symbolzeichen enthält.
  • Die PIN mithilfe der MatchesRegex Methode überprüft, ob das Kennwort nur Zahlen enthält.
  • AllowedAADCharacters , die die MatchesRegex Methode verwenden, überprüft, ob das Kennwort nur ungültiges Zeichen angegeben wurde.
  • Nicht zulässigerWhitespace mit der MatchesRegex Methode überprüft, ob das Kennwort nicht mit einem Leerzeichen beginnt oder endet.
<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>

Nachdem Sie die grundlegenden Überprüfungen definiert haben, können Sie sie kombinieren und eine Reihe von Kennwortrichtlinien erstellen, die Sie in Ihrer Richtlinie verwenden können:

  • SimplePassword überprüft den DisallowedWhitespace, AllowedAADCharacters und IsLengthBetween8And64
  • StrongPassword überprüft den DisallowedWhitespace, AllowedAADCharacters, IsLengthBetween8And64. Die letzte Gruppe CharacterClasses führt einen zusätzlichen Satz von Prädikaten aus, die MatchAtLeast auf 3 festgelegt sind. Das Benutzerkennwort muss zwischen 8 und 16 Zeichen und drei der folgenden Zeichen liegen: Kleinbuchstaben, Großbuchstaben, Zahlen oder Symbol.
  • CustomPassword überprüft nur DisallowedWhitespace, AllowedAADCharacters. Der Benutzer kann also ein beliebiges Kennwort mit einer beliebigen Länge angeben, solange die Zeichen gültig sind.
<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>

Fügen Sie in Ihrem Anspruchstyp das PredicateValidationReference-Element hinzu, und geben Sie den Bezeichner als eine der Prädikatüberprüfungen an, z. B. SimplePassword, StrongPassword oder 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>

Im Folgenden wird gezeigt, wie die Elemente organisiert werden, wenn Azure AD B2C die Fehlermeldung anzeigt:

Diagramm der Prädikat- und PrädicateGroup-Kennwortkomplexität (Beispiel)

Konfigurieren eines Datumsbereichs

Mit den Predicates - und PredicateValidations-Elementen können Sie die Mindest- und Höchstdatumswerte des UserInputType mithilfe einer DateTimeDropdown. Erstellen Sie dazu ein Prädikat mit der IsDateRange Methode, und stellen Sie die minimalen und maximalen Parameter bereit.

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

Fügen Sie eine PredicateValidation mit einem Verweis auf das DateRange Prädikat hinzu.

<PredicateValidations>
  <PredicateValidation Id="CustomDateRange">
    <PredicateGroups>
      <PredicateGroup Id="DateRangeGroup">
        <PredicateReferences>
          <PredicateReference Id="DateRange" />
        </PredicateReferences>
      </PredicateGroup>
    </PredicateGroups>
  </PredicateValidation>
</PredicateValidations>

Fügen Sie in Ihrem Anspruchstyp das PredicateValidationReference-Element hinzu, und geben Sie den Bezeichner 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>

Nächste Schritte