UserJourneys

Kommentar

I Azure Active Directory B2C är anpassade principer främst utformade för att hantera komplexa scenarier. I de flesta scenarier rekommenderar vi att du använder inbyggda användarflöden. Om du inte har gjort det kan du läsa mer om startpaketet för anpassad princip i Kom igång med anpassade principer i Active Directory B2C.

Användarresor anger explicita sökvägar genom vilka en princip tillåter att ett anspråksbaserat program hämtar önskade anspråk för en användare. Via dessa sökvägar kan användaren hämta de anspråk som ska presenteras för den förlitande parten. Med andra ord definierar användarresor affärslogik för vad en slutanvändare går igenom när Azure AD B2C Identity Experience Framework bearbetar begäran.

Dessa användarresor kan betraktas som mallar som är tillgängliga för att uppfylla de grundläggande behoven hos de olika förlitande parterna i samhället av intresse. Användarresor underlättar definitionen av den förlitande partens del av en princip. En princip kan definiera flera användarresor. Varje användarresa är en sekvens med orkestreringssteg.

För att definiera de användarresor som stöds av principen läggs ett UserJourneys element till under elementet på den översta nivån TrustFrameworkPolicy i principfilen.

<TrustFrameworkPolicy  ...>
  ...
  <UserJourneys>
    ...
  </UserJourneys>
</TrustFrameworkPolicy>

Elementet UserJourneys innehåller följande element:

Element Händelser beskrivning
UserJourney 1:n En användarresa som definierar alla konstruktioner som krävs för ett fullständigt användarflöde.

Elementet UserJourney innehåller följande attribut:

Attribut Obligatoriskt Beskrivning
Id Ja En identifierare för en användarresa som kan användas för att referera till den från andra element i principen. Elementet DefaultUserJourney i den förlitande partens princip pekar på det här attributet.
DefaultCpimIssuerTechnicalProfileReferenceId Nej Standardreferens-ID för tokenutfärdare för teknisk profil. Till exempel JWT-tokenutfärdare, SAML-tokenutfärdare eller OAuth2-anpassat fel. Om din användarresa eller underresa redan har ett annat SendClaims orkestreringssteg anger du DefaultCpimIssuerTechnicalProfileReferenceId attributet till användarens tekniska profil för token utfärdare.

Elementet UserJourney innehåller följande element:

Element Händelser beskrivning
AuthorizationTechnicalProfiles 0:1 Lista över tekniska auktoriseringsprofiler.
OrchestrationSteps 1:n En orkestreringssekvens som måste följas upp för en lyckad transaktion. Varje användarresa består av en ordnad lista över orkestreringssteg som körs i följd. Om något steg misslyckas misslyckas transaktionen.

AuthorizationTechnicalProfiles

Anta att en användare har slutfört en UserJourney och fått en åtkomst eller en ID-token. Om du vill hantera ytterligare resurser, till exempel UserInfo-slutpunkten, måste användaren identifieras. För att påbörja den här processen måste användaren presentera den åtkomsttoken som utfärdades tidigare som ett bevis på att de ursprungligen autentiserades av en giltig Azure AD B2C-princip. En giltig token för användaren måste alltid finnas under den här processen för att säkerställa att användaren får göra den här begäran. Tekniska auktoriseringsprofiler verifierar den inkommande token och extraherar anspråk från token.

Elementet AuthorizationTechnicalProfiles innehåller följande element:

Element Händelser beskrivning
AuthorizationTechnicalProfile 0:1 Den tekniska profilreferens som används för att auktorisera användaren.

Elementet AuthorizationTechnicalProfile innehåller följande attribut:

Attribut Obligatoriskt Beskrivning
ReferenceId Ja Identifieraren för den tekniska profil som ska köras.

I följande exempel visas ett användarresa-element med tekniska auktoriseringsprofiler:

<UserJourney Id="UserInfoJourney" DefaultCpimIssuerTechnicalProfileReferenceId="UserInfoIssuer">
  <Authorization>
    <AuthorizationTechnicalProfiles>
      <AuthorizationTechnicalProfile ReferenceId="UserInfoAuthorization" />
    </AuthorizationTechnicalProfiles>
  </Authorization>
  <OrchestrationSteps>
    <OrchestrationStep Order="1" Type="ClaimsExchange">
     ...

OrchestrationSteps

En användarresa representeras som en orkestreringssekvens som måste följas upp för en lyckad transaktion. Om något steg misslyckas misslyckas transaktionen. Dessa orkestreringssteg refererar till både byggstenarna och anspråksprovidrar som tillåts i principfilen. Alla orkestreringssteg som ansvarar för att visa eller återge en användarupplevelse har också en referens till motsvarande innehållsdefinitionsidentifierare.

Orkestreringssteg kan köras villkorligt baserat på förhandsvillkor som definierats i orkestreringsstegelementet. Du kan till exempel kontrollera att endast utföra ett orkestreringssteg om det finns ett specifikt anspråk, eller om ett anspråk är lika med eller inte med det angivna värdet.

Om du vill ange den ordnade listan över orkestreringssteg läggs ett OrchestrationSteps-element till som en del av principen. Det här elementet krävs.

<UserJourney Id="SignUpOrSignIn">
  <OrchestrationSteps>
    <OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
      ...

Elementet OrchestrationSteps innehåller följande element:

Element Händelser beskrivning
OrchestrationStep 1:n Ett ordnat orkestreringssteg.

Elementet OrchestrationStep innehåller följande attribut:

Attribut Obligatoriskt Beskrivning
Order Ja Orkestreringsstegens ordning. Värdet för Order attributet börjar via 1N. Så om du har 10 steg och tar bort det andra steget måste du numrera om stegen tre till tio för att bli två till nio.
Type Ja Typ av orkestreringssteg. Möjliga värden:
  • ClaimsProviderSelection – anger att orkestreringssteget presenterar olika anspråksproviders för användaren för att välja en.
  • CombinedSignInAndSignUp – anger att orkestreringssteget visar en kombinerad inloggningssida för social provider och ett lokalt konto.
  • ClaimsExchange – anger att orkestreringssteget utbyter anspråk med en anspråksprovider.
  • GetClaims – Anger att orkestreringssteget ska bearbeta anspråksdata som skickas till Azure AD B2C från den förlitande parten via konfigurationen InputClaims .
  • InvokeSubJourney – anger att orkestreringssteget utbyter anspråk med en underresa.
  • SendClaims – anger att orkestreringssteget skickar anspråken till den förlitande parten med en token utfärdad av en anspråksutfärdare.
ContentDefinitionReferenceId Nej Identifieraren för innehållsdefinitionen som är associerad med det här orkestreringssteget. Vanligtvis definieras referensidentifieraren för innehållsdefinition i den självsäkra tekniska profilen. Men det finns vissa fall när Azure AD B2C behöver visa något utan en teknisk profil. Det finns två exempel – om typen av orkestreringssteg är något av följande: ClaimsProviderSelection eller CombinedSignInAndSignUpmåste Azure AD B2C visa valet av identitetsprovider utan att ha en teknisk profil.
CpimIssuerTechnicalProfileReferenceId Nej Orkestreringsstegets typ är SendClaims. Den här egenskapen definierar den tekniska profilidentifieraren för anspråksprovidern som utfärdar token för den förlitande parten. Om den saknas skapas ingen förlitande parttoken.

Elementet OrchestrationStep kan innehålla följande element:

Element Händelser beskrivning
Förvillkor 0:n En lista över förhandsvillkor som måste uppfyllas för att orkestreringssteget ska kunna köras.
ClaimsProviderSelections 0:n En lista över val av anspråksprovider för orkestreringssteget.
ClaimsExchanges 0:n En lista över anspråksutbyten för orkestreringssteget.
JourneyList 0:1 En lista över underresa kandidater för orkestreringssteget.

Förvillkor

Orkestreringssteg kan köras villkorligt baserat på förhandsvillkor som definierats i orkestreringssteget. Elementet Preconditions innehåller en lista över förhandsvillkor att utvärdera. När förhandsutvärderingen är uppfylld hoppar det associerade orkestreringssteget till nästa orkestreringssteg.

Azure AD B2C utvärderar förhandsvillkoren i listordning. Med de ordningsbaserade förhandsvillkoren kan du ange i vilken ordning förhandsvillkoren ska tillämpas. Den första förutsättningen som uppfylldes åsidosätter alla efterföljande förhandsvillkor. Orkestreringssteget körs endast om alla förhandsvillkor inte uppfylls.

Elementet Villkor innehåller följande element:

Element Händelser beskrivning
Förhandsvillkor 1:n En förutsättning för att utvärdera.

Förhandsvillkor

Elementet Precondition innehåller följande attribut:

Attribut Obligatoriskt Beskrivning
Type Ja Typen av kontroll eller fråga som ska utföras för den här förhandsvillkoret. Värdet kan vara ClaimsExist, som anger att åtgärderna ska utföras om de angivna anspråken finns i användarens aktuella anspråksuppsättning, eller ClaimEquals, som anger att åtgärderna ska utföras om det angivna anspråket finns och dess värde är lika med det angivna värdet.
ExecuteActionsIf Ja Avgör hur förhandsvillkoret anses vara uppfyllt. Möjliga värden: true, eller false. Om värdet är inställt på trueanses det vara uppfyllt när anspråket matchar förhandsvillkoret. Om värdet är inställt på falseanses det vara uppfyllt när anspråket inte matchar förhandsvillkoret.

Elementen Villkor innehåller följande element:

Element Händelser beskrivning
Värde 1:2 Identifieraren för en anspråkstyp. Anspråket har redan definierats i avsnittet anspråksschema i principfilen eller den överordnade principfilen. När förhandsvillkoret är typ av ClaimEqualsinnehåller ett andra Value element det värde som ska kontrolleras.
Åtgärd 1:1 Den åtgärd som ska utföras om förhandsvillkorsutvärderingen är uppfylld. Möjligt värde: SkipThisOrchestrationStep. Det associerade orkestreringssteget hoppar till nästa.

Varje förhandsvillkor utvärderar ett enda anspråk. Det finns två typer av förhandsvillkor:

  • ClaimsExist – Anger att åtgärderna ska utföras om de angivna anspråken finns i användarens aktuella anspråkspåse.

  • ClaimEquals – Anger att åtgärderna ska utföras om det angivna anspråket finns och dess värde är lika med det angivna värdet. Kontrollen utför en skiftlägeskänslig ordningstalsjämförelse. När du kontrollerar boolesk anspråkstyp använder du True, eller False.

    Om anspråket är null eller uninitialiserat ignoreras förhandsvillkoret, oavsett om ExecuteActionsIf är true, eller false. Vi rekommenderar att du kontrollerar både att anspråket finns och är lika med ett värde.

Ett exempelscenario skulle vara att utmana användaren för MFA om användaren har MfaPreference angett till Phone. Om du vill utföra den här villkorliga logiken kontrollerar du om anspråket MfaPreference finns och kontrollerar även att anspråksvärdet är Phonelika med . Följande XML visar hur du implementerar den här logiken med förhandsvillkor.  

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

Exempel på förhandsvillkor

Följande förhandsvillkor kontrollerar om användarens objectId finns. Under användarresan har användaren valt att logga in med ett lokalt konto. Om objectId finns hoppar du över det här orkestreringssteget.

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

Följande förhandsvillkor kontrollerar om användaren har loggat in med ett socialt konto. Ett försök görs att hitta användarkontot i katalogen. Om användaren loggar in eller registrerar sig med ett lokalt konto hoppar du över det här orkestreringssteget.

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

Förhandsvillkor kan kontrollera flera förhandsvillkor. I följande exempel kontrolleras om "objectId" eller "email" finns. Om det första villkoret är sant går resan vidare till nästa orkestreringssteg.

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

Val av anspråksprovider

Med val av anspråksprovider kan användarna välja en åtgärd från en lista med alternativ. Valet av identitetsprovider består av ett par med två orkestreringssteg:

  1. Knappar – Den börjar med typen ClaimsProviderSelection, eller CombinedSignInAndSignUp som innehåller en lista med alternativ som en användare kan välja mellan. Ordningen på alternativen i elementet ClaimsProviderSelections styr ordningen på knapparna som visas för användaren.
  2. Åtgärder – följt av ClaimsExchangetypen . ClaimsExchange innehåller en lista över åtgärder. Åtgärden är en referens till en teknisk profil, till exempel OAuth2, OpenID Anslut, anspråkstransformering eller självbekrävande. När en användare klickar på någon av knapparna körs motsvarande åtgärd.

Elementet ClaimsProviderSelections innehåller följande element:

Element Händelser beskrivning
ClaimsProviderSelection 1:n Innehåller en lista över anspråksproviders som kan väljas.

Elementet ClaimsProviderSelections innehåller följande attribut:

Attribut Obligatoriskt Beskrivning
DisplayOption Nej Styr beteendet för ett fall där en enskild anspråksprovider är tillgänglig. Möjliga värden: DoNotShowSingleProvider (standard) , användaren omdirigeras omedelbart till den federerade identitetsprovidern. Eller så ShowSingleProvider visar Azure AD B2C inloggningssidan med valet av enskild identitetsprovider. Om du vill använda det här attributet måste innehållsdefinitionsversionen vara urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.0.0 och högre.

Elementet ClaimsProviderSelection innehåller följande attribut:

Attribut Obligatoriskt Beskrivning
TargetClaimsExchangeId Nej Identifieraren för anspråksutbytet, som körs i nästa orkestreringssteg i valet av anspråksprovider. Det här attributet eller attributet ValidationClaimsExchangeId måste anges, men inte båda.
ValidationClaimsExchangeId Nej Identifieraren för anspråksutbytet, som körs i det aktuella orkestreringssteget för att verifiera valet av anspråksprovider. Det här attributet eller attributet TargetClaimsExchangeId måste anges, men inte båda.

Exempel på val av anspråksprovider

I följande orkestreringssteg kan användaren välja att logga in med Facebook, LinkedIn, Twitter, Google eller ett lokalt konto. Om användaren väljer en av de sociala identitetsprovidrar körs det andra orkestreringssteget med det valda anspråksutbytet som anges i TargetClaimsExchangeId attributet. Det andra orkestreringssteget omdirigerar användaren till den sociala identitetsprovidern för att slutföra inloggningsprocessen. Om användaren väljer att logga in med det lokala kontot förblir Azure AD B2C på samma orkestreringssteg (samma registreringssida eller inloggningssida) och hoppar över det andra orkestreringssteget.

<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

Elementet ClaimsExchanges innehåller följande element:

Element Händelser beskrivning
ClaimsExchange 1:n Beroende på vilken teknisk profil som används omdirigeras klienten enligt den valda ClaimsProviderSelection eller gör ett serveranrop för att utbyta anspråk.

Elementet ClaimsExchange innehåller följande attribut:

Attribut Obligatoriskt Beskrivning
Id Ja En identifierare för anspråksutbytessteget. Identifieraren används för att referera till anspråksutbytet från ett urvalssteg för anspråksprovidern i principen.
TechnicalProfileReferenceId Ja Identifieraren för den tekniska profil som ska köras.

JourneyList

JourneyList-elementet innehåller följande element:

Element Händelser beskrivning
Kandidat 1:1 En referens till en underresa som ska anropas.

Kandidat

Elementet Candidate innehåller följande attribut:

Attribut Obligatoriskt Beskrivning
SubJourneyReferenceId Ja Identifieraren för den underresa som ska köras.