Partager via


Prédicats et prédicatsValidations

Important

À compter du 1er mai 2025, Azure AD B2C ne sera plus disponible pour les nouveaux clients. Pour plus d’informations, consultez notre FAQ.

Remarque

Dans Active Directory B2C, les stratégies personnalisées sont principalement conçues pour gérer des scénarios complexes. Pour la plupart des scénarios, nous vous recommandons de recourir à des flux d’utilisateurs intégrés. Si vous ne l’avez pas fait, découvrez le Pack de démarrage de stratégie personnalisée dans Prise en main des stratégies personnalisées dans Active Directory B2C.

Les éléments Predicates et PredicateValidations vous permettent d’effectuer un processus de validation pour vous assurer que seules les données correctement formées sont entrées dans votre locataire Azure Active Directory B2C (Azure AD B2C).

Le schéma suivant montre la relation entre les éléments :

Diagramme montrant la relation entre les prédicats et les validations de prédicats

Prédicats

L’élément Predicate définit une validation de base pour vérifier la valeur d’un type de revendication et renvoie true ou false. La validation est effectuée à l’aide d’un élément Method spécifié et d’un ensemble d’éléments Parameter pertinents pour la méthode. Par exemple, un prédicat peut vérifier si la longueur d’une valeur de revendication de chaîne se situe dans la plage des paramètres minimum et maximum spécifiés, ou si une valeur de revendication de chaîne contient un jeu de caractères. L’élément UserHelpText fournit un message d’erreur aux utilisateurs en cas d’échec de la vérification. La valeur de l’élément UserHelpText peut être localisée à l’aide de la personnalisation de la langue.

L’élément Predicates doit apparaître directement après l’élément ClaimsSchema dans l’élément BuildingBlocks .

L’élément Predicates contient l’élément suivant :

Élément Occurrences Descriptif
Prédicat 1 :n Liste de prédicats.

L’élément Predicate contient les attributs suivants :

Caractéristique Obligatoire Descriptif
Id Oui Identificateur utilisé pour le prédicat. D’autres éléments peuvent utiliser cet identificateur dans la stratégie.
Méthode Oui Type de méthode à utiliser pour la validation. Valeurs possibles : IsLengthRange, MatchesRegex, IncludesCharacters ou IsDateRange.
Texte d’aide Non Message d’erreur pour les utilisateurs en cas d’échec de la vérification. Cette chaîne peut être localisée à l’aide de la personnalisation de la langue

L’élément Predicate contient les éléments suivants :

Élément Occurrences Descriptif
UserHelpText 0:1 (Obsolète) Message d’erreur pour les utilisateurs en cas d’échec de la vérification.
Paramètres Un-à-un (1:1) Paramètres du type de méthode de validation de la chaîne.

L’élément Parameters contient les éléments suivants :

Élément Occurrences Descriptif
Paramètre 1 :n Paramètres du type de méthode de validation de la chaîne.

L’élément Parameter contient les attributs suivants :

Élément Occurrences Descriptif
Id Un-à-un (1:1) Identificateur du paramètre.

Méthodes de prédicat

IsLengthRange

La méthode IsLengthRange vérifie si la longueur d’une valeur de revendication de chaîne se situe dans la plage des paramètres minimum et maximum spécifiés. Découvrez la démo en direct de cette méthode de prédicat. L’élément de prédicat prend en charge les paramètres suivants :

Paramètre Obligatoire Descriptif
Maximale Oui Nombre maximal de caractères pouvant être saisis.
Minimum Oui Nombre minimum de caractères à saisir.

L’exemple suivant montre une méthode IsLengthRange avec les paramètres Minimum et Maximum qui spécifient la plage de longueur de la chaîne :

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

MatchsRegex

La méthode MatchesRegex vérifie si une valeur de revendication de chaîne correspond à une expression régulière. Découvrez la démo en direct de cette méthode de prédicat. L’élément de prédicat prend en charge les paramètres suivants :

Paramètre Obligatoire Descriptif
ExpressionRégulière Oui Modèle d’expression régulière à correspondre.

L’exemple suivant montre une MatchesRegex méthode avec le paramètre RegularExpression qui spécifie une expression régulière :

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

InclutPersonnages

La méthode IncludesCharacters vérifie si une valeur de revendication de chaîne contient un jeu de caractères. Découvrez la démo en direct de cette méthode de prédicat. L’élément de prédicat prend en charge les paramètres suivants :

Paramètre Obligatoire Descriptif
Jeu de caractères Oui Ensemble de caractères pouvant être saisis. Par exemple, des caractères a-zminuscules , des caractères A-Zmajuscules , des 0-9chiffres ou une liste de symboles, tels que @#$%^&amp;*\-_+=[]{}|\\:',?/~"();!.

L’exemple suivant montre une IncludesCharacters méthode avec le paramètre CharacterSet qui spécifie l’ensemble de caractères :

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

IsDateRange

La méthode IsDateRange vérifie si la valeur d’une revendication de date se situe entre une plage de paramètres minimum et maximum spécifiés. Découvrez la démo en direct de cette méthode de prédicat. L’élément de prédicat prend en charge les paramètres suivants :

Paramètre Obligatoire Descriptif
Maximale Oui La plus grande date possible pouvant être saisie. Le format de la date suit yyyy-mm-dd la convention, ou Today.
Minimum Oui La plus petite date possible qui peut être saisie. Le format de la date suit yyyy-mm-dd la convention, ou Today.

L’exemple suivant montre une IsDateRange méthode avec les paramètres Minimum et Maximum qui spécifie la plage de yyyy-mm-dd dates au format et 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

Alors que les prédicats définissent la validation à vérifier par rapport à un type de revendication, les PredicateValidations regroupent un ensemble de prédicats pour former une validation d’entrée utilisateur qui peut être appliquée à un type de revendication. Chaque élément PredicateValidation contient un ensemble d’éléments PredicateGroup qui contiennent un ensemble d’éléments PredicateReference qui pointe vers un prédicat. Pour réussir la validation, la valeur de la revendication doit réussir tous les tests de n’importe quel prédicat sous l’ensemble du PredicateGroup avec leur ensemble d’éléments PredicateReference .

L’élément PredicateValidations doit apparaître directement après l’élément Predicates dans l’élément BuildingBlocks .

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

L’élément PredicateValidations contient l’élément suivant :

Élément Occurrences Descriptif
PredicateValidation 1 :n Une liste de validation de prédicat.

L’élément PredicateValidation contient l’attribut suivant :

Caractéristique Obligatoire Descriptif
Id Oui Identificateur utilisé pour la validation du prédicat. L’élément ClaimType peut utiliser cet identificateur dans la stratégie.

L’élément PredicateValidation contient l’élément suivant :

Élément Occurrences Descriptif
PrédicatGroupes 1 :n Liste de groupes de prédicats.

L’élément PredicateGroups contient l’élément suivant :

Élément Occurrences Descriptif
PredicateGroup 1 :n Liste de prédicats.

L’élément PredicateGroup contient l’attribut suivant :

Caractéristique Obligatoire Descriptif
Id Oui Identificateur utilisé pour le groupe de prédicats.

L’élément PredicateGroup contient les éléments suivants :

Élément Occurrences Descriptif
UserHelpText 0:1 Une description du prédicat qui peut être utile aux utilisateurs pour savoir quelle valeur ils doivent taper.
PrédicatRéférences 1 :n Une liste de références de prédicat.

L’élément PredicateReferences contient les attributs suivants :

Caractéristique Obligatoire Descriptif
MatchAtLeast Non Spécifie que la valeur doit correspondre à au moins autant de définitions de prédicat pour que l’entrée soit acceptée. Si elle n’est pas spécifiée, la valeur doit correspondre à toutes les définitions de prédicat.

L’élément PredicateReferences contient les éléments suivants :

Élément Occurrences Descriptif
PrédicatRéférence 1 :n Référence à un prédicat.

L’élément PredicateReference contient les attributs suivants :

Caractéristique Obligatoire Descriptif
Id Oui Identificateur utilisé pour la validation du prédicat.

Configurer la complexité des mots de passe

Avec Predicates et PredicateValidationsInput, vous pouvez contrôler les exigences de complexité des mots de passe fournis par un utilisateur lors de la création d’un compte. Par défaut, Azure AD B2C utilise des mots de passe forts. Azure AD B2C prend également en charge les options de configuration pour contrôler la complexité des mots de passe que les clients peuvent utiliser. Vous pouvez définir la complexité du mot de passe à l’aide des éléments de prédicat suivants :

  • IsLengthBetween8And64 à l’aide de la IsLengthRange méthode, vérifie que le mot de passe doit comporter entre 8 et 64 caractères.
  • En minuscules à l’aide de la IncludesCharacters méthode, vérifie que le mot de passe contient une lettre minuscule.
  • Majuscule à l’aide de la IncludesCharacters méthode, vérifie que le mot de passe contient une lettre majuscule.
  • Le nombre utilisant la IncludesCharacters méthode vérifie que le mot de passe contient un chiffre.
  • Symbol à l’aide de cette IncludesCharacters méthode, vérifie que le mot de passe contient l’un des nombreux caractères symboles.
  • Le code PIN utilisant la MatchesRegex méthode vérifie que le mot de passe ne contient que des chiffres.
  • AllowedAADCharacters utilisant la MatchesRegex méthode, vérifie que le mot de passe uniquement le caractère non valide a été fourni.
  • DisallowedWhitespace à l’aide de la MatchesRegex méthode vérifie que le mot de passe ne commence pas ou ne se termine pas par un caractère d’espace.
<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>

Une fois que vous avez défini les validations de base, vous pouvez les combiner et créer un ensemble de stratégies de mot de passe que vous pouvez utiliser dans votre stratégie :

  • SimplePassword valide les attributs DisallowedWhitespace, AllowedAADCharacters et IsLengthBetween8And64
  • StrongPassword valide les espaces non autorisés, AllowedAADCharacters, IsLengthBetween8And64. Le dernier groupe CharacterClasses exécute un ensemble supplémentaire de prédicats avec MatchAtLeast la valeur 3. Le mot de passe de l’utilisateur doit comporter entre 8 et 16 caractères, dont trois des caractères suivants : minuscules, majuscules, chiffres ou symboles.
  • CustomPassword valide uniquement les espaces interdits, les assistants AADCharacters. Ainsi, l’utilisateur peut fournir n’importe quel mot de passe de n’importe quelle longueur, tant que les caractères sont valides.
<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>

Dans votre type de revendication, ajoutez l’élément PredicateValidationReference et spécifiez l’identificateur comme l’une des validations de prédicat, telles que 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>

L’exemple suivant montre comment les éléments sont organisés lorsqu’Azure AD B2C affiche le message d’erreur :

Exemple de complexité de mot de passe Schéma de schéma Predicate et PredicateGroup

Configurer une plage de dates

Avec les éléments Predicates et PredicateValidations , vous pouvez contrôler les valeurs de date minimale et maximale de UserInputType à l’aide d’un DateTimeDropdown. Pour ce faire, créez un prédicat avec la IsDateRange méthode et fournissez les paramètres minimum et maximum.

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

Ajoutez un PredicateValidation avec une référence au DateRange prédicat.

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

Dans votre type de revendication, ajoutez l’élément PredicateValidationReference et spécifiez l’identificateur .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>

Étapes suivantes