UserJourneys
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.
User Journeys geben explizite Pfade an, über die eine Richtlinie einer Anwendung der vertrauenden Seite die gewünschten Ansprüche für einen Benutzer abrufen kann. Der Benutzer wird über diese Pfade weitergeleitet, um die Ansprüche abzurufen, die an die vertrauenden Seite übermittelt werden sollen. Das heißt, User Journeys definieren die Geschäftslogik, die ein Endbenutzer durchläuft, während das Framework für die Identitätsfunktion von Azure AD B2C die Anforderung verarbeitet.
Diese User Journeys können als Vorlagen gesehen werden, die verfügbar sind, um die Grundbedürfnisse der verschiedenen vertrauenden Seiten der Interessengemeinschaft abzudecken. User Journeys unterstützen die Definition des Teils der vertrauenden Seite einer Richtlinie. Eine Richtlinie kann mehrere User Journeys definieren. Jede User Journey besteht aus einer Sequenz von Orchestrierungsschritten.
Ein UserJourneys
-Element wird unter dem allgemeinsten TrustFrameworkPolicy
-Element der Richtliniendatei hinzugefügt, um die von der Richtlinie unterstützten User Journeys zu definieren.
<TrustFrameworkPolicy ...>
...
<UserJourneys>
...
</UserJourneys>
</TrustFrameworkPolicy>
Das UserJourneys-Element enthält das folgende Element:
Element | Vorkommen | BESCHREIBUNG |
---|---|---|
UserJourney | 1:n | Eine User Journey, die alle für den Benutzerflow erforderlichen Konstrukte definiert. |
Das UserJourney-Element enthält das folgende Attribut:
attribute | Erforderlich | Beschreibung |
---|---|---|
Id | Ja | Ein Bezeichner einer User Journey, der verwendet werden kann, um über andere Elemente in der Richtlinie auf sie zu verweisen. Das DefaultUserJourney-Element der Richtlinie der vertrauenden Seite zeigt auf dieses Attribut. |
DefaultCpimIssuerTechnicalProfileReferenceId | Nein | Die Standardverweis-ID für das technische Profil des Tokenausstellers. Beispiel: JWT-Tokenaussteller, SAML-Tokenaussteller oder benutzerdefinierter OAuth2-Fehler. Wenn Ihre User Journey oder untergeordnete Journey bereits über einen anderen SendClaims -Orchestrierungsschritt verfügt, legen Sie das Attribut DefaultCpimIssuerTechnicalProfileReferenceId auf das technische Profil des Tokenausstellers fest. |
Das UserJourney-Element enthält die folgenden Elemente:
Element | Vorkommen | BESCHREIBUNG |
---|---|---|
AuthorizationTechnicalProfiles | 0:1 | Liste der technischen Profile für die Autorisierung |
OrchestrationSteps | 1:n | Eine Orchestrierungssequenz, die für eine erfolgreiche Transaktion durchlaufen werden muss. Jede User Journey besteht aus einer geordneten List von Orchestrierungsschritten, die nacheinander ausgeführt werden. Wenn ein Schritt fehlschlägt, schlägt die Transaktion fehl. |
AuthorizationTechnicalProfiles
Angenommen, ein Benutzer hat eine User Journey abgeschlossen und ein Zugriffs- oder ID-Token erhalten. Um weitere Ressourcen zu verwalten (z. B. den UserInfo-Endpunkt), muss der Benutzer identifiziert werden. Um diesen Vorgang zu starten, muss der Benutzer das zuvor ausgegebene Zugriffstoken als Nachweis präsentieren, dass er ursprünglich durch eine gültige Azure AD B2C-Richtlinie authentifiziert wurde. Während dieses Vorgangs muss stets ein gültiges Token für den Benutzer vorhanden sein, um sicherzustellen, dass er diese Anforderung ausführen darf. Die technischen Profile für die Autorisierung überprüfen das eingehende Token und extrahieren daraus Ansprüche.
Das AuthorizationTechnicalProfiles-Element enthält das folgende Element:
Element | Vorkommen | BESCHREIBUNG |
---|---|---|
AuthorizationTechnicalProfile | 0:1 | Der Verweis für das technische Profil, der zum Autorisieren des Benutzers verwendet wird |
Das AuthorizationTechnicalProfile-Element enthält das folgende Attribut:
attribute | Erforderlich | BESCHREIBUNG |
---|---|---|
ReferenceId | Ja | Der Bezeichner des technischen Profils, das ausgeführt werden soll. |
Das folgende Beispiel zeigt ein User Journey-Element mit technischen Profilen für die Autorisierung:
<UserJourney Id="UserInfoJourney" DefaultCpimIssuerTechnicalProfileReferenceId="UserInfoIssuer">
<Authorization>
<AuthorizationTechnicalProfiles>
<AuthorizationTechnicalProfile ReferenceId="UserInfoAuthorization" />
</AuthorizationTechnicalProfiles>
</Authorization>
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="ClaimsExchange">
...
OrchestrationSteps
Eine User Journey wird als Orchestrierungssequenz dargestellt, die für eine erfolgreiche Transaktion durchlaufen werden muss. Wenn ein Schritt fehlschlägt, schlägt die Transaktion fehl. Diese Orchestrierungsschritte verweisen sowohl auf die Bausteine als auch auf die Anspruchsanbieter, die in der Richtliniendatei zugelassen werden. Jeder Orchestrierungsschritt, der für das Anzeigen oder Rendern einer Benutzeroberfläche verantwortlich ist, verfügt auch über einen Verweis auf den Bezeichner für die entsprechende Inhaltsdefinition.
Orchestrierungsschritte können anhand von Voraussetzungen, die im OrchestrationSteps-Element definiert werden, bedingungsabhängig ausgeführt werden. Beispielsweise können Sie konfigurieren, dass ein Orchestrierungsschritt nur ausgeführt wird, wenn ein bestimmter Anspruch vorhanden ist oder ein Anspruch dem angegebenen Wert entspricht (oder nicht).
Ein OrchestrationSteps-Element wird als Teil der Richtlinie hinzugefügt, um die geordnete Liste der Orchestrierungsschritte festzulegen. Dieses Element ist erforderlich.
<UserJourney Id="SignUpOrSignIn">
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
...
Das OrchestrationSteps-Element enthält das folgende Element:
Element | Vorkommen | BESCHREIBUNG |
---|---|---|
OrchestrationStep | 1:n | Ein geordneter Orchestrierungsschritt. |
Das OrchestrationStep-Element enthält die folgenden Attribute:
attribute | Erforderlich | Beschreibung |
---|---|---|
Order |
Ja | Die Reihenfolge der Orchestrierungsschritte. Der Wert des Order Attributs beginnt bei 1 durch N . Wenn Sie also 10 Schritte haben und den zweiten Schritt löschen, müssen Sie die Schritte 3 bis 10 neu berechnen, um zwei bis neun zu werden. |
Type |
Ja | Der Typ des Orchestrierungsschritts. Mögliche Werte:
|
ContentDefinitionReferenceId | Nein | Der Bezeichner der Inhaltsdefinition, die diesem Orchestrierungsschritt zugeordnet ist. In der Regel wird der Bezeichner für den Verweis auf die Inhaltsdefinition im selbstbestätigten technischen Profil definiert. Jedoch gibt es einige Fälle, in denen Azure AD B2C etwas ohne technisches Profil anzeigen muss. Hier sind zwei Beispiele: Wenn der Orchestrierungsschritt vom Typ ClaimsProviderSelection oder CombinedSignInAndSignUp ist, muss Azure AD B2C die Auswahl des Identitätsanbieters auch ohne technisches Profil anzeigen. |
CpimIssuerTechnicalProfileReferenceId | Nein | Der Typ des Orchestrierungsschritts ist SendClaims . Diese Eigenschaft definiert den Bezeichner für das technische Profil des Anspruchsanbieters, der das Token für die vertrauende Seite ausstellt. Wenn sie nicht vorhanden ist, wird kein Token für die vertrauende Seite erstellt. |
Das OrchestrationStep-Element kann die folgenden Elemente enthalten:
Element | Vorkommen | BESCHREIBUNG |
---|---|---|
Preconditions | 0:n | Eine Liste von Voraussetzungen, die für die Ausführung des Orchestrierungsschritts erfüllt sein müssen. |
ClaimsProviderSelections | 0:n | Eine Liste von Auswahloptionen für Anspruchsanbieter für den Orchestrierungsschritts. |
ClaimsExchanges | 0:n | Eine Liste von Anspruchsaustauschvorgängen für den Orchestrierungsschritt. |
JourneyList | 0:1 | Eine Liste der möglichen untergeordneten Journeys für den Orchestrierungsschritt. |
Preconditions
Orchestrierungsschritte können anhand von Voraussetzungen, die im Orchestrierungsschritt definiert werden, bedingungsabhängig ausgeführt werden. Das Preconditions
-Element enthält eine Liste der auszuwertenden Vorbedingungen. Wenn die Vorbedingungsauswertung erfüllt ist, wird der zugeordnete Orchestrierungsschritt mit dem nächsten Orchestrierungsschritt übersprungen.
Azure AD B2C wertet die Vorbedingungen in Listenreihenfolge aus. Mit den auf der Reihenfolge basierenden Vorbedingungen können Sie die Reihenfolge festlegen, in der die Vorbedingungen angewendet werden. Die erste erfüllte Vorbedingung überschreibt alle nachfolgenden Vorbedingungen. Der Orchestrierungsschritt wird nur ausgeführt, wenn nicht alle Vorbedingungen erfüllt sind.
Das Preconditions-Element enthält das folgende Element:
Element | Vorkommen | BESCHREIBUNG |
---|---|---|
Precondition | 1:n | Eine auszuwertende Vorbedingung. |
Precondition
Das Precondition-Element enthält die folgenden Attribute:
attribute | Erforderlich | Beschreibung |
---|---|---|
Type |
Ja | Der Typ der Überprüfung oder Abfrage, die für diese Voraussetzung ausgeführt werden soll. Dieser Wert kann ClaimsExist sein, wodurch festgelegt wird, dass die Aktionen durchgeführt werden sollen, wenn die angegebenen Ansprüche in den aktuellen Ansprüchen des Benutzers vorhanden sind. Alternativ kann der Wert ClaimEquals sein, wodurch festgelegt wird, dass die Aktionen durchgeführt werden sollen, wenn der angegebene Anspruch vorhanden ist und sein Wert dem angegebenen Wert gleicht. |
ExecuteActionsIf |
Ja | Entscheidet, wie die Vorbedingung als erfüllt betrachtet wird. Mögliche Werte sind true oder false . Wenn der Wert auf true festgelegt ist, wird sie als erfüllt betrachtet, wenn der Anspruch mit der Vorbedingung übereinstimmt. Wenn der Wert auf false festgelegt ist, wird sie als erfüllt betrachtet, wenn der Anspruch nicht mit der Vorbedingung übereinstimmt. |
Das Precondition-Element enthält die folgenden Elemente:
Element | Vorkommen | BESCHREIBUNG |
---|---|---|
Wert | 1:2 | Der Bezeichner eines Anspruchstyps. Der Anspruch ist bereits im Abschnitt für das Anspruchsschema in der Richtliniendatei oder der übergeordneten Richtliniendatei definiert. Bei Verwendung einer Vorbedingung vom Typ ClaimEquals enthält ein zweites Element vom Typ Value den zu überprüfenden Wert. |
Aktion | 1:1 | Die Aktion, die ausgeführt werden soll, wenn die Auswertung der Vorbedingung erfüllt ist. Möglicher Wert: SkipThisOrchestrationStep . Der zugeordnete Orchestrierungsschritt wird mit dem nächsten Schritt übersprungen. |
Jede Vorbedingung wertet einen einzelnen Anspruch aus. Es gibt zwei Arten von Voraussetzungen:
ClaimsExist: Gibt an, dass die Aktionen ausgeführt werden sollen, wenn der aktuelle Anspruchsbehälter des Benutzers die angegebenen Ansprüche enthält.
ClaimEquals: Gibt an, dass die Aktionen ausgeführt werden sollen, wenn der angegebene Anspruch vorhanden ist und dessen Wert dem angegebenen Wert entspricht. Bei der Überprüfung wird ein Ordinalvergleich unter Beachtung der Groß-/Kleinschreibung durchgeführt. Verwenden Sie bei der Überprüfung eines booleschen Anspruchstyps
True
oderFalse
.Wenn der Anspruch NULL oder nicht initialisiert ist, wird die Vorbedingung ignoriert, unabhängig davon, ob
ExecuteActionsIf
den Werttrue
oderfalse
aufweist. Als bewährte Methode sollten Sie überprüfen, ob der Anspruch vorhanden ist und einem bestimmten Wert entspricht.
Ein Beispielszenario wäre, den Benutzer zur MFA aufzufordern, wenn der Benutzer MfaPreference
auf Phone
festgelegt hat. Um diese bedingte Logik durchzuführen, überprüfen Sie, ob der Anspruch MfaPreference
vorhanden ist und überprüfen Sie außerdem, ob der Anspruchswert gleich Phone
ist. Im folgenden XML-Code wird veranschaulicht, wie diese Logik mit Vorbedingungen implementiert wird.
<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>
Beispiele für Voraussetzungen
Die folgenden Voraussetzungen überprüfen, ob der objectId-Wert des Benutzers vorhanden ist. Der Benutzer hat in der User Journey die Anmeldung mit einem lokalen Konto ausgewählt. Überspringen Sie diesen Orchestrierungsschritt, wenn der objectID-Wert vorhanden ist.
<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>
Die folgenden Voraussetzungen überprüfen, ob der Benutzer sich mit einem Social Media-Konto angemeldet hat. Es wird versucht, das Benutzerkonto im Verzeichnis zu finden. Überspringen Sie diesen Orchestrierungsschritt, wenn sich der Benutzer mit einem lokalen Konto anmeldet oder registriert.
<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>
Mit einem Preconditions-Element können mehrere Voraussetzungen überprüft werden. Im folgenden Beispiel wird überprüft, ob die Werte „objectId“ und „email“ vorhanden sind. Wenn die erste Bedingung TRUE lautet, springt die User Journey zum nächsten Orchestrierungsschritt.
<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>
Anspruchsanbieterauswahl
Mit der Anspruchsanbieterauswahl können Benutzer eine Aktion aus einer Liste von Optionen auswählen. Die Identitätsanbieterauswahl besteht aus einem Paar von Orchestrierungsschritten:
- Schaltflächen: Sie beginnt mit dem Typ
ClaimsProviderSelection
oder mit dem TypCombinedSignInAndSignUp
, der eine Liste von Optionen enthält, aus denen der Benutzer wählen kann. Die Reihenfolge der Optionen innerhalb des ElementsClaimsProviderSelections
steuert die Reihenfolge der Schaltflächen, die dem Benutzer angezeigt werden. - Aktionen: Danach folgt der Typ
ClaimsExchange
. „ClaimsExchange“ enthält eine Liste von Aktionen. Die Aktion ist ein Verweis auf ein technisches Profil wie OAuth2, OpenID Connect, Anspruchstransformation oder Selbstbestätigt. Wenn ein Benutzer auf eine der Schaltflächen klickt, wird die entsprechende Aktion ausgeführt.
Das ClaimsProviderSelections-Element enthält das folgende Element:
Element | Vorkommen | BESCHREIBUNG |
---|---|---|
ClaimsProviderSelection | 1:n | Stellt die Liste von Anspruchsanbietern bereit, die ausgewählt werden können. |
Das ClaimsProviderSelections-Element enthält die folgenden Attribute:
attribute | Erforderlich | Beschreibung |
---|---|---|
DisplayOption | Nein | Steuert das Verhalten in dem Fall, wenn nur eine Anspruchsanbieterauswahl verfügbar ist. Mögliche Werte: DoNotShowSingleProvider (Standardwert) – der Benutzer wird sofort an den Verbundidentitätsanbieter umgeleitet. Ein weiterer möglicher Wert ist ShowSingleProvider – Azure AD B2C zeigt die Anmeldeseite mit der Auswahl eines einzelnen Identitätsanbieters an. Damit dieses Attribut verwendet werden kann, muss die Version der Inhaltsdefinitionurn:com:microsoft:aad:b2c:elements:contract:providerselection:1.0.0 oder höher lauten. |
Das ClaimsProviderSelection-Element enthält die folgenden Attribute:
attribute | Erforderlich | Beschreibung |
---|---|---|
TargetClaimsExchangeId | Nein | Der Bezeichner des Anspruchsaustauschs, der im nächsten Orchestrierungsschritt der Auswahl des Anspruchsanbieters ausgeführt wird. Dieses oder das ValidationClaimsExchangeId-Attribut muss angegeben werden, aber nicht beide. |
ValidationClaimsExchangeId | Nein | Der Bezeichner des Anspruchsaustauschs, der im aktuellen Orchestrierungsschritt zur Validierung der Auswahl des Anspruchsanbieters ausgeführt wird. Dieses oder das TargetClaimsExchangeId-Attribut muss angegeben werden, aber nicht beide. |
Beispiel für die Anspruchsanbieterauswahl
Im folgenden Orchestrierungsschritt kann der Benutzer sich mit Facebook, LinkedIn, X, Google oder einem lokalen Konto anmelden. Wenn der Benutzer einen der Social Media-Identitätsanbieter auswählt, wird der zweite Orchestrierungsschritt mit dem ausgewählten Anspruchsaustausch ausgeführt, der im TargetClaimsExchangeId
-Attribut angegeben wurde. Der zweite Orchestrierungsschritt leitet den Benutzer an den Social Media-Identitätsanbieter weiter, um den Anmeldevorgang abzuschließen. Wenn der Benutzer sich dazu entscheidet, sich mit einem lokalen Konto anzumelden, bleibt Azure AD B2C beim gleichen Orchestrierungsschritt (die gleiche Registrierungs- oder Anmeldeseite) und überspringt den zweiten Orchestrierungsschritt.
<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
Das ClaimsExchanges-Element enthält das folgende Element:
Element | Vorkommen | BESCHREIBUNG |
---|---|---|
ClaimsExchange | 1:n | Abhängig vom verwendeten technischen Profil, wird der Client entweder gemäß des ClaimsProviderSelection-Elements weitergeleitet oder ein Serveraufruf wird zum Austauschen von Ansprüchen ausgeführt. |
Das ClaimsExchange-Element enthält die folgenden Attribute:
attribute | Erforderlich | Beschreibung |
---|---|---|
Id | Ja | Ein Bezeichner für den Schritt mit dem Anspruchsaustausch. Der Bezeichner wird verwendet, um in der Richtlinie auf den Anspruchsaustausch eines Schritts für die Auswahl des Anspruchsanbieters zu verweisen. |
TechnicalProfileReferenceId | Ja | Der Bezeichner des technischen Profils, das ausgeführt werden soll. |
JourneyList
Das JourneyList-Element enthält das folgende Element:
Element | Vorkommen | BESCHREIBUNG |
---|---|---|
Kandidat | 1:1 | Ein Verweis auf eine untergeordnete Journey, die aufgerufen werden soll. |
Kandidat
Das Candidate-Element enthält die folgenden Attribute:
attribute | Erforderlich | Beschreibung |
---|---|---|
SubJourneyReferenceId | Ja | Der Bezeichner der untergeordneten Journey, die ausgeführt werden soll. |