UserJourneys
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.
Les parcours utilisateur spécifient des chemins explicites par le biais desquels une stratégie autorise une application par partie de confiance à obtenir les revendications souhaitées pour un utilisateur. L’utilisateur est guidé par ces chemins pour récupérer les revendications qui doivent être présentés à la partie de confiance. Autrement dit, les parcours utilisateur définissent la logique métier de ce par quoi passe un utilisateur final pendant que l’Infrastructure d’expérience d’identité Azure AD B2C traite la requête.
Ces parcours utilisateur peuvent être considérés comme des modèles disponibles pour répondre aux besoins fondamentaux des différentes parties de confiance de la communauté d’intérêt. Les parcours utilisateur facilitent la définition de la portion « partie de confiance » d’une stratégie. Une stratégie peut définir plusieurs parcours utilisateur. Chaque parcours utilisateur est une séquence d’étapes d’orchestration.
Pour définir les parcours utilisateur pris en charge par la stratégie, un élément UserJourneys
est ajouté sous l’élément TrustFrameworkPolicy
de niveau supérieur du fichier de stratégie.
<TrustFrameworkPolicy ...>
...
<UserJourneys>
...
</UserJourneys>
</TrustFrameworkPolicy>
L’élément UserJourneys contient l’élément suivant :
Élément | Occurrences | Description |
---|---|---|
UserJourney | 1:n | Parcours utilisateur qui définit toutes les constructions nécessaires pour un flux d’utilisateur complet. |
L’élément UserJourney contient l’attribut suivant :
Attribut | Obligatoire | Description |
---|---|---|
Id | Oui | Identificateur d’un parcours utilisateur qui peut être utilisé pour le référencer à partir d’autres éléments dans la stratégie. L’élément DefaultUserJourney de la stratégie de partie de confiance pointe vers cet attribut. |
DefaultCpimIssuerTechnicalProfileReferenceId | Non | ID de référence du profil technique de l’émetteur de jeton par défaut. Par exemple, émetteur de jeton JWT, émetteur de jeton SAML ou erreur personnalisée OAuth2. Si le parcours ou sous-parcours utilisateur a déjà une autre étape d’orchestration SendClaims , définissez l’attribut DefaultCpimIssuerTechnicalProfileReferenceId sur le profil technique de l’émetteur de jeton du parcours utilisateur. |
L’élément UserJourney contient les éléments suivants :
Élément | Occurrences | Description |
---|---|---|
AuthorizationTechnicalProfiles | 0:1 | Liste des profils techniques d’autorisation. |
OrchestrationSteps | 1:n | Séquence d’orchestration qui doit être suivie pour que la transaction réussisse. Chaque parcours utilisateur est composé d’une liste ordonnée d’étapes d’orchestration qui sont exécutées de manière séquentielle. Si une étape échoue, la transaction échoue. |
AuthorizationTechnicalProfiles
Supposons qu’un utilisateur ait terminé un UserJourney et qu’il ait obtenu un jeton d’accès ou d’ID. Pour gérer des ressources supplémentaires, telles que le point de terminaison UserInfo, l’utilisateur doit être identifié. Pour commencer ce processus, l’utilisateur doit présenter le jeton d’accès émis précédemment comme preuve qu’il a été initialement authentifié par une stratégie Azure AD B2C valide. Un jeton valide pour l’utilisateur doit toujours être présent pendant ce processus pour garantir que l’utilisateur est autorisé à effectuer cette demande. Les profils techniques d’autorisation valident le jeton entrant et extraient les revendications du jeton.
L’élément AuthorizationTechnicalProfiles contient l’élément suivant :
Élément | Occurrences | Description |
---|---|---|
AuthorizationTechnicalProfile | 0:1 | Référence de profil technique utilisée pour autoriser l’utilisateur. |
L’élément AuthorizationTechnicalProfile contient l’attribut suivant :
Attribut | Obligatoire | Description |
---|---|---|
ReferenceId | Oui | Identificateur du profil technique qui doit être exécuté. |
L’exemple suivant illustre un élément de parcours utilisateur avec des profils techniques d’autorisation :
<UserJourney Id="UserInfoJourney" DefaultCpimIssuerTechnicalProfileReferenceId="UserInfoIssuer">
<Authorization>
<AuthorizationTechnicalProfiles>
<AuthorizationTechnicalProfile ReferenceId="UserInfoAuthorization" />
</AuthorizationTechnicalProfiles>
</Authorization>
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="ClaimsExchange">
...
OrchestrationSteps
Un parcours utilisateur est représenté en tant que séquence d’orchestration qui doit être suivie pour que la transaction réussisse. Si une étape échoue, la transaction échoue. Ces étapes d’orchestration référencent à la fois les composants et les fournisseurs de revendications autorisés dans le fichier de stratégie. Toute étape d’orchestration responsable de l’affichage d’une expérience utilisateur a également une référence à l’identificateur de définition de contenu correspondant.
Les étapes d’orchestration peuvent être exécutées de manière conditionnelle, en fonction de conditions préalables définies dans l’élément d’étape d’orchestration. Par exemple, vous pouvez effectuer une étape d’orchestration uniquement si une revendication spécifique existe, ou si une revendication est égale ou non à la valeur spécifiée.
Pour spécifier la liste ordonnée d’étapes d’orchestration, un élément OrchestrationSteps est ajouté à la stratégie. Cet élément est obligatoire.
<UserJourney Id="SignUpOrSignIn">
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
...
L’élément OrchestrationSteps contient l’élément suivant :
Élément | Occurrences | Description |
---|---|---|
OrchestrationStep | 1:n | Étape d’orchestration ordonnée. |
L’élément OrchestrationSteps contient les attributs suivants :
Attribut | Obligatoire | Description |
---|---|---|
Order |
Oui | Ordre des étapes d’orchestration. La valeur de l’attribut Order commence par N 1 . Par conséquent, si vous avez 10 étapes et que vous supprimez la deuxième étape, vous devez renuméroter les étapes 3 à 10 pour devenir deux à neuf. |
Type |
Oui | Type de l’étape d’orchestration. Valeurs possibles :
|
ContentDefinitionReferenceId | Non | Identificateur de la définition de contenu associée à cette étape d’orchestration. L’identificateur de référence de définition de contenu est généralement défini dans le profil technique autodéclaré, mais il existe certains cas où Azure AD B2C doit afficher quelque chose sans profil technique, Il existe deux exemples : si le type de l’étape d’orchestration est l’une des suivantes : ClaimsProviderSelection ou CombinedSignInAndSignUp , Azure AD B2C doit afficher la sélection du fournisseur d’identité sans avoir de profil technique. |
CpimIssuerTechnicalProfileReferenceId | Non | Le type de l’étape d’orchestration est SendClaims . Cette propriété définit l’identificateur de profil technique du fournisseur de revendications qui émet le jeton pour la partie de confiance. Si elle est absente, aucun jeton de partie de confiance n’est créé. |
L’élément OrchestrationStep peut contenir les éléments suivants :
Élément | Occurrences | Description |
---|---|---|
Preconditions | 0:n | Liste de conditions préalables qui doivent être remplies pour que l’étape d’orchestration s’exécute. |
ClaimsProviderSelections | 0:n | Liste de sélection de fournisseur de revendications pour l’étape d’orchestration. |
ClaimsExchanges | 0:n | Liste d’échanges de revendications pour l’étape d’orchestration. |
JourneyList | 0:1 | Liste de candidats de sous-parcours pour l’étape d’orchestration. |
Preconditions
Des étapes d’orchestration peuvent être exécutées de manière conditionnelle, en fonction de conditions préalables définies dans l’étape d’orchestration. L’élément Preconditions
contient une liste de conditions préalables à évaluer. Si l’évaluation est satisfaisante, l’étape d’orchestration associée passe à l’étape d’orchestration suivante.
Azure AD B2C évalue les conditions préalables dans l’ordre de la liste. Les conditions préalables basées sur l’ordre vous permettent de définir l’ordre dans lequel les conditions préalables doivent être appliquées. La première condition préalable qui est remplie remplace toutes les conditions préalables suivantes. L’étape d’orchestration est exécutée uniquement si toutes les conditions préalables ne sont pas remplies.
L’élément Preconditions contient l’élément suivant :
Élément | Occurrences | Description |
---|---|---|
Precondition | 1:n | Condition préalable à évaluer. |
Precondition
L’élément Precondition contient les attributs suivants :
Attribut | Obligatoire | Description |
---|---|---|
Type |
Oui | Type de vérification ou de requête à exécuter pour cette condition préalable. La valeur peut être ClaimsExist, qui indique que les actions doivent être effectuées si les revendications spécifiées existent dans le jeu de revendications actuel de l’utilisateur, ou ClaimEquals, qui indique que les actions doivent être effectuées si la revendication spécifiée existe et que sa valeur est égale à la valeur spécifiée. |
ExecuteActionsIf |
Oui | Décide dans quel cas la condition préalable doit être considérée comme remplie. Valeurs possibles : true ou false . Si la valeur est définie sur true , elle est considérée comme remplie lorsque la revendication correspond à la condition préalable. Si la valeur est définie sur false , elle est considérée comme remplie lorsque la revendication ne correspond pas à la condition préalable. |
L’élément Precondition contient les éléments suivants :
Élément | Occurrences | Description |
---|---|---|
Valeur | 1:2 | Identificateur d’un type de revendication. La revendication est déjà définie dans la section Schéma des revendications du fichier de stratégie ou dans le fichier de stratégie parent. Lorsque la condition préalable est de type ClaimEquals , un deuxième élément Value contient la valeur à vérifier. |
Action | 1:1 | Action qui doit être effectuée si la condition préalable est considérée comme remplie après évaluation. Valeur possible : SkipThisOrchestrationStep . L’étape d’orchestration associée passe à la suivante. |
Chaque condition préalable évalue une seule revendication. Il existe deux types de conditions préalables :
Les revendications existent : les actions doivent être exécutées si les revendications indiquées existent dans le jeu de revendications actuel de l’utilisateur.
Les revendications sont égales : les actions doivent être exécutées si la revendication indiquée existe et que sa valeur est égale à la valeur spécifiée. La vérification effectue une comparaison ordinale respectant la casse. Lors de la vérification du type de revendication booléenne, utilisez
True
ouFalse
.Si la revendication est null ou non initialisée, la condition préalable est ignorée, que
ExecuteActionsIf
esttrue
, oufalse
. Il est recommandé de vérifier que la revendication existe et qu’elle est égale à une valeur.
Un exemple de scénario serait de défier l’utilisateur pour l’authentification MFA si l’utilisateur a MfaPreference
défini sur Phone
. Pour exécuter cette logique conditionnelle, vérifiez si la MfaPreference
revendication existe, et vérifiez également que la valeur de la revendication est égale à Phone
. Le code XML suivant montre comment implémenter cette logique avec des conditions préalables.
<Preconditions>
<!-- Skip this orchestration step if MfaPreference doesn't exist. -->
<Precondition Type="ClaimsExist" ExecuteActionsIf="false">
<Value>MfaPreference</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
<!-- Skip this orchestration step if MfaPreference doesn't equal to Phone. -->
<Precondition Type="ClaimEquals" ExecuteActionsIf="false">
<Value>MfaPreference</Value>
<Value>Phone</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
Exemples de conditions préalables
Les conditions préalables suivantes vérifient l’existence de l’objectId de l’utilisateur. Dans le parcours utilisateur, l’utilisateur a choisi de se connecter à l’aide d’un compte local. Si l’objectId existe, ignorez cette étape d’orchestration.
<OrchestrationStep Order="2" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>objectId</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="FacebookExchange" TechnicalProfileReferenceId="Facebook-OAUTH" />
<ClaimsExchange Id="SignUpWithLogonEmailExchange" TechnicalProfileReferenceId="LocalAccountSignUpWithLogonEmail" />
</ClaimsExchanges>
</OrchestrationStep>
Les conditions préalables suivantes vérifient si l’utilisateur s’est connecté avec un compte social. Une tentative est effectuée pour trouver le compte d’utilisateur dans l’annuaire. Si l’utilisateur se connecte ou s’inscrit avec un compte local, ignorez cette étape d’orchestration.
<OrchestrationStep Order="3" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimEquals" ExecuteActionsIf="true">
<Value>authenticationSource</Value>
<Value>localAccountAuthentication</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="AADUserReadUsingAlternativeSecurityId" TechnicalProfileReferenceId="AAD-UserReadUsingAlternativeSecurityId-NoError" />
</ClaimsExchanges>
</OrchestrationStep>
Plusieurs conditions préalables peuvent être vérifiées. L’exemple suivant vérifie l’existence d’« objectId » et d’« email ». Si la première condition est true, le parcours passe à l’étape d’orchestration suivante.
<OrchestrationStep Order="4" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>objectId</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>email</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="SelfAsserted-SocialEmail" TechnicalProfileReferenceId="SelfAsserted-SocialEmail" />
</ClaimsExchanges>
</OrchestrationStep>
Sélection du fournisseur de revendications
La sélection du fournisseur de revendications permet aux utilisateurs de sélectionner une action dans une liste d’options. La sélection du fournisseur d’identité consiste en deux étapes d’orchestration :
- Boutons : il commence par le type
ClaimsProviderSelection
, ouCombinedSignInAndSignUp
contient une liste d’options parmi lesquelles un utilisateur peut choisir. L’ordre des options dans l’élémentClaimsProviderSelections
contrôle l’ordre des boutons présentés à l’utilisateur. - Actions : suivi par le type de
ClaimsExchange
. ClaimsExchange contient la liste des actions. L’action fait référence à un profil technique, comme OAuth2, OpenID Connect, une transformation de revendicationsou l’auto-déclaration. Lorsqu’un utilisateur clique sur l’un des boutons, l’action correspondante est exécutée.
L’élément ClaimsProviderSelections contient l’élément suivant :
Élément | Occurrences | Description |
---|---|---|
ClaimsProviderSelection | 1:n | Fournit la liste des fournisseurs de revendications qui peuvent être sélectionnés. |
L’élément ClaimsProviderSelections contient les attributs suivants :
Attribut | Obligatoire | Description |
---|---|---|
DisplayOption | Non | Contrôle le comportement d’un cas où une sélection unique de fournisseur de revendications est disponible. Valeurs possibles : DoNotShowSingleProvider (valeur par défaut), l’utilisateur est redirigé immédiatement vers le fournisseur d’identité fédérée. Ou ShowSingleProvider Azure AD B2C affiche la page de connexion avec la sélection unique de fournisseur d’identité. Pour utiliser cet attribut, la version de la définition de contenu doit être urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.0.0 ou une version ultérieure. |
L’élément ClaimsProviderSelection contient les attributs suivants :
Attribut | Obligatoire | Description |
---|---|---|
TargetClaimsExchangeId | Non | Identificateur de l’échange de revendications, qui est exécuté à l’étape d’orchestration suivante de la sélection du fournisseur de revendications. Cet attribut ou l’attribut ValidationClaimsExchangeId doit être spécifié, mais pas les deux. |
ValidationClaimsExchangeId | Non | Identificateur de l’échange de revendications, qui est exécuté lors de l’étape d’orchestration en cours afin de valider la sélection du fournisseur de revendications. Cet attribut ou l’attribut TargetClaimsExchangeId doit être spécifié, mais pas les deux. |
Exemple de sélection du fournisseur de revendications
À l’étape d’orchestration suivante, l’utilisateur peut choisir de se connecter avec Facebook, LinkedIn, X, Google ou un compte local. Si l’utilisateur sélectionne l’un des fournisseurs d’identité sociale, la deuxième étape d’orchestration s’exécute avec l’échange de revendication sélectionné spécifié dans l’attribut TargetClaimsExchangeId
. La deuxième étape d’orchestration redirige l’utilisateur vers le fournisseur d’identité sociale pour terminer le processus de connexion. Si l’utilisateur choisit de se connecter avec le compte local, Azure AD B2C reste à la même étape d’orchestration (la même page d’inscription ou de connexion) et ignore la deuxième étape d’orchestration.
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
<ClaimsProviderSelections>
<ClaimsProviderSelection TargetClaimsExchangeId="FacebookExchange" />
<ClaimsProviderSelection TargetClaimsExchangeId="LinkedInExchange" />
<ClaimsProviderSelection TargetClaimsExchangeId="TwitterExchange" />
<ClaimsProviderSelection TargetClaimsExchangeId="GoogleExchange" />
<ClaimsProviderSelection ValidationClaimsExchangeId="LocalAccountSigninEmailExchange" />
</ClaimsProviderSelections>
<ClaimsExchanges>
<ClaimsExchange Id="LocalAccountSigninEmailExchange"
TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>objectId</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="FacebookExchange" TechnicalProfileReferenceId="Facebook-OAUTH" />
<ClaimsExchange Id="SignUpWithLogonEmailExchange" TechnicalProfileReferenceId="LocalAccountSignUpWithLogonEmail" />
<ClaimsExchange Id="GoogleExchange" TechnicalProfileReferenceId="Google-OAUTH" />
<ClaimsExchange Id="LinkedInExchange" TechnicalProfileReferenceId="LinkedIn-OAUTH" />
<ClaimsExchange Id="TwitterExchange" TechnicalProfileReferenceId="Twitter-OAUTH1" />
</ClaimsExchanges>
</OrchestrationStep>
ClaimsExchanges
L’élément ClaimsExchanges contient l’élément suivant :
Élément | Occurrences | Description |
---|---|---|
ClaimsExchange | 1:n | En fonction du profil technique utilisé, redirige le client conformément à l’élément ClaimsProviderSelection sélectionné, ou effectue un appel au serveur pour échanger des revendications. |
L’élément ClaimsExchange contient les attributs suivants :
Attribut | Obligatoire | Description |
---|---|---|
Id | Oui | Identificateur de l’étape d’échange de revendications. L’identificateur est utilisé pour référencer l’échange de revendications à partir d’une étape de sélection de fournisseur de revendications dans la stratégie. |
TechnicalProfileReferenceId | Oui | Identificateur du profil technique qui doit être exécuté. |
JourneyList
L’élément JourneyList contient l’élément suivant :
Élément | Occurrences | Description |
---|---|---|
Candidat | 1:1 | Référence à un sous-parcours à appeler. |
Candidat
L’élément Candidate contient les attributs suivants :
Attribut | Obligatoire | Description |
---|---|---|
SubJourneyReferenceId | Oui | Identificateur du sous-parcours qui doit être exécuté. |