Définir un profil technique de validation dans une stratégie personnalisée Azure Active Directory B2C

Notes

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.

Un profil technique de validation est un profil technique ordinaire de n'importe quel protocole, tel que Microsoft Entra ID ou une API REST. Le profil technique de validation retourne des revendications de sortie ou un code d’état 4xx HTTP comprenant les données suivantes : Pour plus d’informations, consultez Retour de message d’erreur.

{
    "version": "1.0.0",
    "status": 409,
    "userMessage": "Your error message"
}

La portée des revendications de sortie d’un profil technique de validation se limite au profil technique autodéclaré qui appelle le profil technique de validation, ainsi qu’à ses propres profils techniques de validation. Si vous souhaitez utiliser les revendications de sortie à l’étape d’orchestration suivante, ajoutez les revendications de sortie au profil technique autodéclaré qui appelle le profil technique de validation.

Les profils techniques de validation sont exécutés dans l’ordre où ils apparaissent dans l’élément ValidationTechnicalProfiles. Dans un profil technique de validation, vous pouvez choisir si l’exécution des profils techniques de validation suivants doit se poursuivre dans le cas où le profil technique de validation génère une erreur ou réussit.

Un profil technique de validation peut être exécuté de manière conditionnelle en fonction de conditions préalables définies dans l’élément ValidationTechnicalProfile. Par exemple, vous pouvez vérifier si une revendication existe, ou si une revendication est égale ou non à la valeur spécifiée.

Un profil technique autodéclaré peut définir un profil technique de validation à utiliser pour valider toutes ou certaines de ses revendications de sortie. Toutes les revendications d’entrée du profil technique référencé doivent apparaître dans les revendications de sortie du profil technique de validation de référencement.

Notes

Seuls les profils techniques à déclaration automatique peuvent utiliser des profils techniques de validation. Si vous devez valider les revendications de sortie à partir de profils techniques non déclarés automatiquement, envisagez d’utiliser une étape d’orchestration supplémentaire dans votre parcours utilisateur pour prendre en compte le profil technique en charge de la validation.

ValidationTechnicalProfiles

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

Élément Occurrences Description
ValidationTechnicalProfile 1:n Un profil technique pour valider toutes ou certaines des revendications de sortie du profil technique de référencement.

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

Attribut Obligatoire Description
ReferenceId Oui L’identificateur d’un profil technique déjà défini dans la stratégie ou dans la stratégie parente.
ContinueOnError Non Indique si la validation des profils techniques de validation suivants doit se poursuivre si ce profil technique de validation génère une erreur. Valeurs possibles : true ou false (par défaut, arrête le traitement des profils de validation suivants et renvoie une erreur).
ContinueOnSuccess Non Indique si la validation des profils de validation suivants doit se poursuivre si ce profil technique de validation réussit. Valeurs possibles : true ou false. La valeur par défaut est true, ce qui signifie que le traitement des profils de validation suivants continue.

Remarque

Actuellement, si vous définissez ContinueOnError sur false pour un profil technique de validation de type ClaimsTransformation, le profil technique ne respecte pas le paramètre. Pour résoudre ce problème, utilisez les conditions préalables à la place.

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

Élément Occurrences Description
Preconditions 0:1 Une liste de conditions préalables qui doivent être satisfaites pour que le profil technique de validation puisse s’exécuter.

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

Attribut Obligatoire Description
Type Oui Le type de vérification ou de requête à exécuter pour la condition préalable. Soit vous spécifiez ClaimsExist pour vous assurer que les actions seront effectuées si les revendications spécifiées existent dans l’ensemble de revendications actuel de l’utilisateur, soit vous spécifiez ClaimEquals pour que les actions soient exécutées si la revendication spécifiée existe et que sa valeur est égale à la valeur spécifiée.
ExecuteActionsIf Oui Indique si les actions de la condition préalable doivent être effectuées si le test est true ou false.

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

Élément Occurrences Description
Valeur 1:n Les données qui sont utilisées par la vérification. Si le type de cette vérification est ClaimsExist, ce champ spécifie un ClaimTypeReferenceId à rechercher. Si le type de la vérification est ClaimEquals, ce champ spécifie un ClaimTypeReferenceId à rechercher. Un autre élément de valeur contient la valeur à vérifier.
Action 1:1 L’action à entreprendre si la vérification de condition préalable dans une étape d’orchestration a la valeur true. La valeur de l’Action est définie sur SkipThisValidationTechnicalProfile. Indique que le profil technique de validation associé ne doit pas être exécuté.

Exemple

Les exemples suivants utilisent ces profils techniques de validation :

  1. Le premier profil technique de validation vérifie les informations d’identification de l’utilisateur et ne continue pas si une erreur se produit, par exemple en cas de nom d’utilisateur non valide ou de mot de passe incorrect.
  2. Le profil technique de validation suivant ne s’exécute pas si la revendication userType n’existe pas, ou si la valeur de userType est Partner. Le profil technique de validation tente de lire le profil utilisateur à partir de la base de données client interne et continue si une erreur se produit, par exemple si le service de l’API REST n’est pas disponible ou en cas d’erreur interne.
  3. Le dernier profil technique de validation ne s’exécute pas si la revendication userType n’a pas existé, ou si la valeur de userType est Customer. Le profil technique de validation tente de lire le profil utilisateur à partir de la base de données partenaire interne et continue si une erreur se produit, par exemple si le service de l’API REST n’est pas disponible ou en cas d’erreur interne.
<ValidationTechnicalProfiles>
  <ValidationTechnicalProfile ReferenceId="login-NonInteractive" ContinueOnError="false" />
  <ValidationTechnicalProfile ReferenceId="REST-ReadProfileFromCustomersDatabase" ContinueOnError="true" >
    <Preconditions>
      <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
        <Value>userType</Value>
        <Action>SkipThisValidationTechnicalProfile</Action>
      </Precondition>
      <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
        <Value>userType</Value>
        <Value>Partner</Value>
        <Action>SkipThisValidationTechnicalProfile</Action>
      </Precondition>
    </Preconditions>
  </ValidationTechnicalProfile>
  <ValidationTechnicalProfile ReferenceId="REST-ReadProfileFromPartnersDatabase" ContinueOnError="true" >
    <Preconditions>
      <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
        <Value>userType</Value>
        <Action>SkipThisValidationTechnicalProfile</Action>
      </Precondition>
      <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
        <Value>userType</Value>
        <Value>Customer</Value>
        <Action>SkipThisValidationTechnicalProfile</Action>
      </Precondition>
    </Preconditions>
  </ValidationTechnicalProfile>
</ValidationTechnicalProfiles>