UserJourneys

Notitie

In Azure Active Directory B2C is aangepast beleid voornamelijk bedoeld om met complexe scenario's om te gaan. Voor de meeste scenario's wordt aangeraden ingebouwde gebruikersstromen te gebruiken. Als u dit nog niet hebt gedaan, vindt u meer informatie over aangepast beleid in het starterspakket in Aan de slag met aangepaste beleidsregels in Active Directory B2C.

Met gebruikersbelevingen worden expliciete paden opgegeven waarmee een op claims gebaseerde toepassing de gewenste claims voor een gebruiker kan verkrijgen. De gebruiker wordt door deze paden geleid om de claims op te halen die aan de Relying Party moeten worden gepresenteerd. Met andere woorden, gebruikerstrajecten definiëren de bedrijfslogica van wat een eindgebruiker doorloopt als het Azure AD B2C Identity Experience Framework de aanvraag verwerkt.

Deze gebruikerstrajecten kunnen worden beschouwd als sjablonen die beschikbaar zijn om te voldoen aan de kernbehoefte van de verschillende relying party's van de community van belang. Gebruikerstrajecten vergemakkelijken de definitie van het relying party-onderdeel van een beleid. Een beleid kan meerdere gebruikerstrajecten definiëren. Elk gebruikerstraject is een reeks indelingsstappen.

Om de gebruikerstrajecten te definiëren die door het beleid worden ondersteund, wordt een UserJourneys element toegevoegd onder het element op het hoogste niveau TrustFrameworkPolicy van het beleidsbestand.

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

Het element UserJourneys bevat het volgende element:

Element Instanties Beschrijving
UserJourney 1:n Een gebruikerstraject dat alle constructies definieert die nodig zijn voor een volledige gebruikersstroom.

Het element UserJourney bevat het volgende kenmerk:

Kenmerk Vereist Beschrijving
ID Ja Een id van een gebruikerstraject dat kan worden gebruikt om ernaar te verwijzen vanuit andere elementen in het beleid. Het element DefaultUserJourney van het relying party-beleid verwijst naar dit kenmerk.
DefaultCpimIssuerTechnicalProfileReferenceId Nee De naslag-id van het technische profiel van de standaardtokenverlener. Bijvoorbeeld: JWT-tokenverlener, SAML-tokenverlener of aangepaste OAuth2-fout. Als uw gebruikerstraject of subtraject al een andere SendClaims indelingsstap heeft, stelt u het kenmerk in op het DefaultCpimIssuerTechnicalProfileReferenceId technische profiel van de tokenverlener van het gebruikerstraject.

Het element UserJourney bevat de volgende elementen:

Element Instanties Beschrijving
AuthorizationTechnicalProfiles 0:1 Lijst met technische profielen voor autorisatie.
OrchestrationSteps 1:n Een indelingsreeks die moet worden gevolgd voor een geslaagde transactie. Elke gebruikersbeleving bestaat uit een geordende lijst met indelingsstappen die op volgorde worden uitgevoerd. Als een stap mislukt, mislukt de transactie.

AuthorizationTechnicalProfiles

Stel dat een gebruiker een UserJourney heeft voltooid en een toegangs- of id-token heeft verkregen. Als u aanvullende resources wilt beheren, zoals het eindpunt UserInfo, moet de gebruiker worden geïdentificeerd. Om dit proces te starten, moet de gebruiker het eerder uitgegeven toegangstoken presenteren als bewijs dat ze oorspronkelijk zijn geverifieerd door een geldig Azure AD B2C-beleid. Een geldig token voor de gebruiker moet altijd aanwezig zijn tijdens dit proces om ervoor te zorgen dat de gebruiker deze aanvraag mag indienen. Met de technische autorisatieprofielen wordt het binnenkomende token gevalideerd en worden claims uit het token geëxtraheerd.

Het element AuthorizationTechnicalProfiles bevat het volgende element:

Element Instanties Beschrijving
AuthorizationTechnicalProfile 0:1 De technische profielreferentie die wordt gebruikt om de gebruiker te autoriseren.

Het element AuthorizationTechnicalProfile bevat het volgende kenmerk:

Kenmerk Vereist Beschrijving
ReferenceId Ja De id van het technische profiel dat moet worden uitgevoerd.

In het volgende voorbeeld ziet u een element voor gebruikersbeleving met technische autorisatieprofielen:

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

OrchestrationSteps

Een gebruikerstraject wordt weergegeven als een indelingsreeks die moet worden gevolgd voor een geslaagde transactie. Als een stap mislukt, mislukt de transactie. Deze indelingsstappen verwijzen naar zowel de bouwstenen als de claimproviders die zijn toegestaan in het beleidsbestand. Elke indelingsstap die verantwoordelijk is voor het weergeven of weergeven van een gebruikerservaring, heeft ook een verwijzing naar de bijbehorende inhoudsdefinitie-id.

Indelingsstappen kunnen voorwaardelijk worden uitgevoerd op basis van voorwaarden die zijn gedefinieerd in het element van de indelingsstap. U kunt bijvoorbeeld controleren of u een indelingsstap alleen wilt uitvoeren als er een specifieke claim bestaat of als een claim gelijk is aan of niet aan de opgegeven waarde.

Als u de geordende lijst met indelingsstappen wilt opgeven, wordt een OrchestrationSteps-element toegevoegd als onderdeel van het beleid. Dit element is vereist.

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

Het element OrchestrationSteps bevat het volgende element:

Element Instanties Beschrijving
OrchestrationStep 1:n Een geordende indelingsstap.

Het element OrchestrationStep bevat de volgende kenmerken:

Kenmerk Vereist Omschrijving
Order Ja De volgorde van de indelingsstappen. De waarde van het Order kenmerk begint tot 1 en met N. Dus als u tien stappen hebt en u de tweede stap verwijdert, moet u de stappen drie tot 10 opnieuw nummeren om twee tot negen te worden.
Type Ja Het type indelingsstap. Mogelijke waarden:
  • ClaimsProviderSelection - Geeft aan dat de indelingsstap verschillende claimproviders aan de gebruiker presenteert om er een te selecteren.
  • CombinedSignInAndSignUp - Geeft aan dat de indelingsstap een gecombineerde aanmeldingspagina voor sociale providers en lokale accounts presenteert.
  • ClaimsExchange - Geeft aan dat de indelingsstap claims uitwisselt met een claimprovider.
  • GetClaims - Hiermee geeft u op dat de indelingsstap claimgegevens moet verwerken die naar Azure AD B2C worden verzonden vanuit de relying party via de InputClaims configuratie.
  • InvokeSubJourney - Geeft aan dat de orchestration-stap claims uitwisselt met een subtraject.
  • SendClaims - Geeft aan dat de indelingsstap de claims naar de relying party verzendt met een token dat is uitgegeven door een claimverlener.
ContentDefinitionReferenceId Nee De id van de inhoudsdefinitie die aan deze indelingsstap is gekoppeld. Meestal wordt de referentie-id voor inhoudsdefinities gedefinieerd in het zelf-asserteerde technische profiel. Er zijn echter enkele gevallen waarin Azure AD B2C iets zonder technisch profiel moet weergeven. Er zijn twee voorbeelden: als het type indelingsstap een van de volgende is: ClaimsProviderSelection of CombinedSignInAndSignUpAzure AD B2C moet de selectie van de id-provider weergeven zonder een technisch profiel te hebben.
CpimIssuerTechnicalProfileReferenceId Nee Het type indelingsstap is SendClaims. Deze eigenschap definieert de technische profiel-id van de claimprovider die het token voor de relying party uitgeeft. Als u afwezig bent, wordt er geen relying party-token gemaakt.

Het element OrchestrationStep kan de volgende elementen bevatten:

Element Instanties Beschrijving
Voorwaarden vooraf 0:n Een lijst met voorwaarden waaraan moet worden voldaan voor de indelingsstap die moet worden uitgevoerd.
ClaimsProviderSelections 0:n Een lijst met claimproviderselecties voor de indelingsstap.
ClaimsExchanges 0:n Een lijst met claims uitwisselingen voor de indelingsstap.
JourneyList 0:1 Een lijst met subtrajectkandidaten voor de indelingsstap.

Voorwaarden vooraf

Indelingsstappen kunnen voorwaardelijk worden uitgevoerd op basis van voorwaarden die zijn gedefinieerd in de indelingsstap. Het Preconditions element bevat een lijst met voorwaarden die moeten worden geëvalueerd. Wanneer aan de evaluatie van de voorwaarde wordt voldaan, wordt de bijbehorende indelingsstap overgeslagen naar de volgende indelingsstap.

Azure AD B2C evalueert de voorwaarden in de lijstvolgorde. Met de op volgorde gebaseerde voorwaarden kunt u de volgorde instellen waarin de voorwaarden worden toegepast. De eerste voorwaarde waaraan wordt voldaan, overschrijft alle volgende voorwaarden. De indelingsstap wordt alleen uitgevoerd als niet aan alle voorwaarden wordt voldaan.

Het element Voorwaarden bevat het volgende element:

Element Instanties Beschrijving
Voorwaarde 1:n Een voorwaarde om te evalueren.

Voorwaarde

Het element Voorwaarde bevat de volgende kenmerken:

Kenmerk Vereist Omschrijving
Type Ja Het type controle of query dat moet worden uitgevoerd voor deze voorwaarde. De waarde kan ClaimsExist zijn, die aangeeft dat de acties moeten worden uitgevoerd als de opgegeven claims bestaan in de huidige claimset van de gebruiker, of ClaimEquals, die aangeeft dat de acties moeten worden uitgevoerd als de opgegeven claim bestaat en de waarde gelijk is aan de opgegeven waarde.
ExecuteActionsIf Ja Bepaalt hoe aan de voorwaarde wordt voldaan. Mogelijke waarden: true of false. Als de waarde is ingesteld trueop , wordt deze beschouwd als tevreden wanneer de claim overeenkomt met de voorwaarde. Als de waarde is ingesteld op false, wordt deze beschouwd als tevreden wanneer de claim niet overeenkomt met de voorwaarde.

De hoofdvoorwaarde-elementen bevatten de volgende elementen:

Element Instanties Beschrijving
Waarde 1:2 De id van een claimtype. De claim is al gedefinieerd in de sectie claimsschema in het beleidsbestand of het bovenliggende beleidsbestand. Wanneer de voorwaarde het type ClaimEqualsis, bevat een tweede Value element de waarde die moet worden gecontroleerd.
Actie 1:1 De actie die moet worden uitgevoerd als aan de voorwaarde-evaluatie wordt voldaan. Mogelijke waarde: SkipThisOrchestrationStep. De bijbehorende indelingsstap wordt overgeslagen naar de volgende.

Elke voorwaarde evalueert één claim. Er zijn twee soorten voorwaarden:

  • ClaimsExist : hiermee geeft u op dat de acties moeten worden uitgevoerd als de opgegeven claims aanwezig zijn in de huidige claimtas van de gebruiker.

  • ClaimEquals : geeft aan dat de acties moeten worden uitgevoerd als de opgegeven claim bestaat en de waarde gelijk is aan de opgegeven waarde. De controle voert een hoofdlettergevoelige ordinale vergelijking uit. Wanneer u booleaanse claimtype controleert, gebruikt Trueu , of False.

    Als de claim null of niet-geïnitialiseerd is, wordt de voorwaarde genegeerd, of het ExecuteActionsIf nu gaat trueom of false. Als best practice controleert u zowel of de claim bestaat als gelijk aan een waarde.

Een voorbeeldscenario is om de gebruiker uit te dagen voor MFA als de gebruiker is MfaPreference ingesteld op Phone. Als u deze voorwaardelijke logica wilt uitvoeren, controleert u of de MfaPreference claim bestaat en controleert u ook of de claimwaarde gelijk is aan Phone. In de volgende XML ziet u hoe u deze logica implementeert met voorwaarden.  

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

Voorbeelden van voorwaarden

Met de volgende voorwaarden wordt gecontroleerd of de object-id van de gebruiker bestaat. In het gebruikerstraject heeft de gebruiker zich geselecteerd om zich aan te melden met een lokaal account. Als de object-id bestaat, slaat u deze indelingsstap over.

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

Met de volgende voorwaarden wordt gecontroleerd of de gebruiker zich heeft aangemeld met een sociaal account. Er wordt geprobeerd het gebruikersaccount in de directory te vinden. Als de gebruiker zich aanmeldt of zich aanmeldt met een lokaal account, slaat u deze indelingsstap over.

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

Voorwaarden kunnen meerdere voorwaarden controleren. In het volgende voorbeeld wordt gecontroleerd of objectId of e-mail bestaat. Als de eerste voorwaarde waar is, wordt de reis overgeslagen naar de volgende indelingsstap.

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

Selectie van claimprovider

Met selectie van claimproviders kunnen gebruikers een actie selecteren in een lijst met opties. De selectie van de id-provider bestaat uit twee indelingsstappen:

  1. Knoppen : het begint met het type ClaimsProviderSelectionof CombinedSignInAndSignUp met een lijst met opties waaruit een gebruiker kan kiezen. De volgorde van de opties in het ClaimsProviderSelections element bepaalt de volgorde van de knoppen die aan de gebruiker worden gepresenteerd.
  2. Acties : gevolgd door het type ClaimsExchange. ClaimsExchange bevat een lijst met acties. De actie is een verwijzing naar een technisch profiel, zoals OAuth2, OpenID Verbinding maken, claimtransformatie of zelf-assertie. Wanneer een gebruiker op een van de knoppen klikt, wordt de bijbehorende actie uitgevoerd.

Het element ClaimsProviderSelections bevat het volgende element:

Element Instanties Beschrijving
ClaimsProviderSelection 1:n Bevat de lijst met claimproviders die kunnen worden geselecteerd.

Het element ClaimsProviderSelections bevat de volgende kenmerken:

Kenmerk Vereist Beschrijving
DisplayOption Nee Hiermee bepaalt u het gedrag van een geval waarin een selectie van één claimprovider beschikbaar is. Mogelijke waarden: DoNotShowSingleProvider (standaard): de gebruiker wordt onmiddellijk omgeleid naar de federatieve id-provider. Of ShowSingleProvider Azure AD B2C geeft de aanmeldingspagina weer met de selectie van één id-provider. Als u dit kenmerk wilt gebruiken, moet de versie van de inhoudsdefinitie zich en hoger hebbenurn:com:microsoft:aad:b2c:elements:contract:providerselection:1.0.0.

Het element ClaimsProviderSelection bevat de volgende kenmerken:

Kenmerk Vereist Beschrijving
TargetClaimsExchangeId Nee De id van de claimuitwisseling, die wordt uitgevoerd in de volgende indelingsstap van de selectie van de claimprovider. Dit kenmerk of het kenmerk ValidationClaimsExchangeId moet worden opgegeven, maar niet beide.
ValidationClaimsExchangeId Nee De id van de claimuitwisseling, die wordt uitgevoerd in de huidige indelingsstap om de selectie van de claimprovider te valideren. Dit kenmerk of het kenmerk TargetClaimsExchangeId moet worden opgegeven, maar niet beide.

Voorbeeld van selectie van claimprovider

In de volgende indelingsstap kan de gebruiker zich aanmelden met Facebook, LinkedIn, Twitter, Google of een lokaal account. Als de gebruiker een van de sociale id-providers selecteert, wordt de tweede indelingsstap uitgevoerd met de geselecteerde claimuitwisseling die is opgegeven in het TargetClaimsExchangeId kenmerk. Met de tweede indelingsstap wordt de gebruiker omgeleid naar de sociale id-provider om het aanmeldingsproces te voltooien. Als de gebruiker ervoor kiest zich aan te melden met het lokale account, blijft Azure AD B2C dezelfde indelingsstap (dezelfde registratiepagina of aanmeldingspagina) en wordt de tweede indelingsstap overgeslagen.

<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

Het element ClaimsExchanges bevat het volgende element:

Element Instanties Beschrijving
ClaimsExchange 1:n Afhankelijk van het gebruikte technische profiel wordt de client omgeleid op basis van de ClaimsProviderSelection die is geselecteerd of wordt er een serveraanroep uitgevoerd om claims uit te wisselen.

Het element ClaimsExchange bevat de volgende kenmerken:

Kenmerk Vereist Beschrijving
ID Ja Een id van de stap claimuitwisseling. De id wordt gebruikt om te verwijzen naar de claimuitwisseling van een selectiestap van een claimprovider in het beleid.
TechnicalProfileReferenceId Ja De id van het technische profiel dat moet worden uitgevoerd.

JourneyList

Het element JourneyList bevat het volgende element:

Element Instanties Beschrijving
Kandidaat 1:1 Een verwijzing naar een subtraject dat moet worden aangeroepen.

Kandidaat

Het element Kandidaat bevat de volgende kenmerken:

Kenmerk Vereist Beschrijving
SubJourneyReferenceId Ja De id van het subtraject dat moet worden uitgevoerd.