UserJourneys

Poznámka:

V Azure Active Directory B2C jsou vlastní zásady navržené především pro řešení složitých scénářů. Ve většině scénářů doporučujeme používat integrované toky uživatelů. Pokud jste to neudělali, přečtěte si informace o úvodním balíčku vlastních zásad v tématu Začínáme s vlastními zásadami ve službě Active Directory B2C.

Cesty uživatelů určují explicitní cesty, prostřednictvím kterých zásady umožňují aplikaci přijímající strany získat pro uživatele požadované deklarace identity. Uživatel těmito cestami získá deklarace identity, které se mají předložit přijímající straně. Jinými slovy, cesty uživatelů definují obchodní logiku toho, co koncový uživatel prochází, protože Azure AD B2C Identity Experience Framework zpracovává požadavek.

Tyto cesty uživatelů lze považovat za šablony, které jsou k dispozici pro splnění základní potřeby různých předávajících stran komunity zájmu. Cesty uživatelů usnadňují definici části zásady předávající strany. Zásada může definovat více cest uživatelů. Každá cesta uživatele je posloupnost kroků orchestrace.

Chcete-li definovat cesty uživatele podporované zásadou UserJourneys , přidá se prvek pod element nejvyšší úrovně TrustFrameworkPolicy souboru zásad.

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

Element UserJourneys obsahuje následující prvek:

Element (Prvek) Výskyty Popis
UserJourney 1:n Cesta uživatele, která definuje všechny konstrukce nezbytné pro úplný tok uživatele.

Element UserJourney obsahuje následující atribut:

Atribut Požadováno Popis
Id Ano Identifikátor cesty uživatele, který lze použít k odkazování z jiných prvků zásad. Element DefaultUserJourneyzásad předávající strany odkazuje na tento atribut.
DefaultCpimIssuerTechnicalProfileReferenceId No Referenční ID technického profilu vystavitele výchozího tokenu. Například vystavitel tokenu JWT, vystavitel tokenu SAML nebo vlastní chyba OAuth2. Pokud už cesta uživatele nebo dílčí cesta má jiný SendClaims krok orchestrace, nastavte DefaultCpimIssuerTechnicalProfileReferenceId atribut na technický profil vystavitele tokenů uživatele.

Element UserJourney obsahuje následující prvky:

Element (Prvek) Výskyty Popis
AuthorizationTechnicalProfiles 0:1 Seznam technických profilů autorizace
OrchestraationSteps 1:n Posloupnost orchestrace, kterou je nutné provést pro úspěšnou transakci. Každá cesta uživatele se skládá z uspořádaného seznamu kroků orchestrace, které se spouštějí postupně. Pokud některý krok selže, transakce selže.

AuthorizationTechnicalProfiles

Předpokládejme, že uživatel dokončil UserJourney a získal přístup nebo token ID. Pokud chcete spravovat další prostředky, jako je koncový bod UserInfo, musí být identifikován uživatel. Aby uživatel zahájil tento proces, musí předložit přístupový token vydaný dříve jako důkaz, že byl původně ověřen platnými zásadami Azure AD B2C. Během tohoto procesu musí být vždy k dispozici platný token pro uživatele, aby se zajistilo, že uživatel může tuto žádost provést. Technické profily autorizace ověřují příchozí token a extrahují deklarace identity z tokenu.

Element AuthorizationTechnicalProfiles obsahuje následující prvek:

Element (Prvek) Výskyty Popis
AuthorizationTechnicalProfile 0:1 Referenční informace k technickému profilu použitému k autorizaci uživatele.

Element AuthorizationTechnicalProfile obsahuje následující atribut:

Atribut Požadováno Popis
ReferenceId Ano Identifikátor technického profilu, který se má spustit.

Následující příklad ukazuje prvek cesty uživatele s technickými profily autorizace:

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

OrchestraationSteps

Cesta uživatele je reprezentována jako sekvence orchestrace, která musí být sledována pro úspěšnou transakci. Pokud některý krok selže, transakce selže. Tyto kroky orchestrace odkazují na stavební bloky i zprostředkovatele deklarací identity povolené v souboru zásad. Jakýkoli krok orchestrace, který je zodpovědný za zobrazení nebo vykreslení uživatelského prostředí, má také odkaz na odpovídající identifikátor definice obsahu.

Kroky orchestrace lze podmíněně spouštět na základě předpokladů definovaných v elementu kroku orchestrace. Můžete například zkontrolovat provedení kroku orchestrace pouze v případě, že existuje určitá deklarace identity nebo pokud je deklarace identity rovna zadané hodnotě nebo ne.

Pokud chcete určit uspořádaný seznam kroků orchestrace, přidá se jako součást zásady element OrchestrationSteps . Tento prvek je povinný.

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

Element OrchestrationSteps obsahuje následující prvek:

Element (Prvek) Výskyty Popis
OrchestraationStep 1:n Seřazený krok orchestrace.

Element OrchestrationStep obsahuje následující atributy:

Atribut Požadováno Popis
Order Ano Pořadíkrokůch Hodnotaatributho Order1N Pokud tedy máte 10 kroků a druhý krok odstraníte, musíte přečíslovat kroky tři až 10, abyste se stali dvěma až devíti.
Type Ano Typ kroku orchestrace. Možné hodnoty:
  • ClaimsProviderSelection – Označuje, že krok orchestrace prezentuje uživateli různé zprostředkovatele deklarací, aby ho vybral.
  • CombinedSignInAndSignUp – Označuje, že krok orchestrace představuje kombinovanou přihlašovací stránku poskytovatele sociálních sítí a přihlašovací stránku místního účtu.
  • ClaimsExchange – označuje, že krok orchestrace vyměňuje deklarace identity se zprostředkovatelem deklarací.
  • GetClaims – Určuje, že krok orchestrace by měl zpracovávat data deklarací identity odesílaná do Azure AD B2C z předávající strany prostřednictvím konfigurace InputClaims .
  • InvokeSubJourney – označuje, že krok orchestrace vyměňuje deklarace identity s dílčí cestou.
  • SendClaims – označuje, že krok orchestrace odesílá deklarace identity předávající straně s tokenem vystaveným vystavitelem deklarací.
ContentDefinitionReferenceId No Identifikátor definice obsahu přidruženého k tomuto kroku orchestrace. Identifikátor odkazu na definici obsahu je obvykle definován v technickém profilu s vlastním kontrolním výrazem. Existují ale případy, kdy Azure AD B2C potřebuje zobrazit něco bez technického profilu. Existují dva příklady – pokud je typ kroku orchestrace jeden z následujících kroků: ClaimsProviderSelection nebo CombinedSignInAndSignUp, Azure AD B2C musí zobrazit výběr zprostředkovatele identity bez technického profilu.
CpimIssuerTechnicalProfileReferenceId No Typ kroku orchestrace je SendClaims. Tato vlastnost definuje identifikátor technického profilu zprostředkovatele deklarací identity, který vydává token předávající strany. Pokud chybí, není vytvořen žádný token předávající strany.

Element OrchestrationStep může obsahovat následující prvky:

Element (Prvek) Výskyty Popis
Předpoklady 0:n Seznam předpokladů, které musí být splněny pro provedení kroku orchestrace.
ClaimsProviderSelections 0:n Seznam výběrů zprostředkovatele deklarací identity pro krok orchestrace.
ClaimsExchanges 0:n Seznam výměn deklarací identity pro krok orchestrace
JourneyList 0:1 Seznam kandidátů dílčí cesty pro krok orchestrace.

Předpoklady

Kroky orchestrace lze podmíněně spouštět na základě předpokladů definovaných v kroku orchestrace. Prvek Preconditions obsahuje seznam předpokladů k vyhodnocení. Po splnění předběžného vyhodnocení se přidružený krok orchestrace přeskočí k dalšímu kroku orchestrace.

Azure AD B2C vyhodnocuje předpoklady v pořadí seznamu. Předběžné podmínky na základě objednávek umožňují nastavit pořadí, ve kterém jsou použity předběžné podmínky. První předpoklad, který byl splněn, přepíše všechny následné předpoklady. Krok orchestrace se provede pouze v případě, že nejsou splněny všechny předpoklady.

Element Předběžné podmínky obsahuje následující prvek:

Element (Prvek) Výskyty Popis
Předběžná podmínka 1:n Předběžná podmínka, která se má vyhodnotit.

Předběžná podmínka

Element Předběžné podmínky obsahuje následující atributy:

Atribut Požadováno Popis
Type Ano Typ kontroly nebo dotazu, který se má provést pro tuto předběžnou podmínku. Hodnota může být ClaimsExist, která určuje, že akce by se měly provést, pokud zadané deklarace identity existují v aktuální sadě deklarací identity uživatele, nebo ClaimEquals, který určuje, že akce by měly být provedeny, pokud zadaná deklarace existuje a její hodnota je rovna zadané hodnotě.
ExecuteActionsIf Ano Rozhoduje o tom, jak je předběžná podmínka považována za splněnou. Možné hodnoty: truenebo false. Pokud je hodnota nastavená na true, považuje se za splněnou, když deklarace identity odpovídá předpokladu. Pokud je hodnota nastavená na false, považuje se za splněnou, když deklarace neodpovídá předběžnému předpokladu.

Předběžné prvky obsahují následující prvky:

Element (Prvek) Výskyty Popis
Hodnota 1:2 Identifikátor typu deklarace identity. Deklarace identity je již definována v oddílu schématu deklarací identity v souboru zásad nebo nadřazeného souboru zásad. Pokud je předběžná podmínka typu ClaimEquals, druhý Value prvek obsahuje hodnotu, která má být zkontrolována.
Akce 1:1 Akce, která by se měla provést, pokud je splněno předběžné vyhodnocení. Možná hodnota: SkipThisOrchestrationStep. Přidružený krok orchestrace přeskočí na další.

Každá předběžná podmínka vyhodnocuje jednu deklaraci identity. Existují dva typy předpokladů:

  • ClaimsExist – Určuje, že akce by měly být provedeny, pokud zadané deklarace identity existují v aktuálním balíčku deklarací identity uživatele.

  • ClaimEquals – Určuje, že akce by měly být provedeny, pokud zadaná deklarace existuje, a její hodnota se rovná zadané hodnotě. Při kontrole se provádí porovnání řadových písmen. Při kontrole typu logické deklarace identity použijte nebo TrueFalse.

    Pokud je deklarace identity null nebo není inicializována, předběžná podmínka je ignorována, zda ExecuteActionsIf je true, nebo false. Osvědčeným postupem je zkontrolovat, jestli deklarace identity existuje, a že se rovná hodnotě.

Příkladem scénáře by bylo vyzvat uživatele pro vícefaktorové ověřování, pokud je MfaPreference uživatel nastavený na Phone. Pokud chcete tuto podmíněnou logiku MfaPreference provést, zkontrolujte, jestli deklarace identity existuje, a zkontrolujte také hodnotu deklarace identity, která Phonese rovná hodnotě deklarace identity . Následující KÓD XML ukazuje, jak tuto logiku implementovat s předpoklady.  

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

Příklady předběžných předpokladů

Následující předpoklady kontrolují, zda existuje ID objektu uživatele. Na cestě uživatele uživatel vybral, aby se přihlásil pomocí místního účtu. Pokud id objektu existuje, přeskočte tento krok orchestrace.

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

Následující předpoklady kontrolují, jestli se uživatel přihlásil pomocí účtu sociální sítě. Provede se pokus o vyhledání uživatelského účtu v adresáři. Pokud se uživatel přihlásí nebo zaregistruje pomocí místního účtu, přeskočte tento krok orchestrace.

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

Předpoklady mohou zkontrolovat více předpokladů. Následující příklad zkontroluje, jestli existuje objectId nebo Email. Pokud je první podmínka pravdivá, cesta přeskočí k dalšímu kroku orchestrace.

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

Výběr zprostředkovatele deklarací identity

Výběr zprostředkovatele deklarací identity umožňuje uživatelům vybrat akci ze seznamu možností. Výběr zprostředkovatele identity se skládá ze dvou kroků orchestrace:

  1. Tlačítka – začíná typem nebo ClaimsProviderSelectionCombinedSignInAndSignUp obsahujícím seznam možností, ze které si uživatel může vybrat. Pořadí možností uvnitř ClaimsProviderSelections prvku řídí pořadí tlačítek zobrazených uživateli.
  2. Akce – následované typem .ClaimsExchange Deklarace IdentityExchange obsahuje seznam akcí. Akce je odkazem na technický profil, jako je OAuth2, OpenID Připojení, transformace deklarací identity nebo samoobslužné uplatnění. Když uživatel klikne na jedno z tlačítek, provede se odpovídající akce.

Element ClaimsProviderSelections obsahuje následující prvek:

Element (Prvek) Výskyty Popis
ClaimsProviderSelection 1:n Poskytuje seznam zprostředkovatelů deklarací identity, které je možné vybrat.

Element ClaimsProviderSelections obsahuje následující atributy:

Atribut Požadováno Popis
DisplayOption No Řídí chování případu, kdy je k dispozici jeden výběr zprostředkovatele deklarací identity. Možné hodnoty: DoNotShowSingleProvider (výchozí) – uživatel se okamžitě přesměruje na zprostředkovatele federované identity. Nebo ShowSingleProvider Azure AD B2C zobrazí přihlašovací stránku s výběrem jednoho zprostředkovatele identity. Chcete-li použít tento atribut, musí být urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.0.0 verze definice obsahu a vyšší.

Element ClaimsProviderSelection obsahuje následující atributy:

Atribut Požadováno Popis
TargetClaimsExchangeId No Identifikátor výměny deklarací identity, který se provádí v dalším kroku orchestrace výběru zprostředkovatele deklarací. Tento atribut nebo ValidationClaimsExchangeId atribut musí být zadán, ale ne obojí.
ValidationClaimsExchangeId No Identifikátor výměny deklarací identity, který se provádí v aktuálním kroku orchestrace za účelem ověření výběru zprostředkovatele deklarací. Tento atribut nebo Atribut TargetClaimsExchangeId musí být zadán, ale ne oba.

Příklad výběru zprostředkovatele deklarací identity

V následujícím kroku orchestrace se uživatel může přihlásit přes Facebook, LinkedIn, Twitter, Google nebo místní účet. Pokud uživatel vybere jednoho z poskytovatelů sociálních identit, druhý krok orchestrace se provede s vybranou výměnou deklarací identity zadanou v atributu TargetClaimsExchangeId . Druhý krok orchestrace přesměruje uživatele na zprostředkovatele sociální identity a dokončí proces přihlášení. Pokud se uživatel rozhodne přihlásit pomocí místního účtu, Azure AD B2C zůstane ve stejném kroku orchestrace (stejné registrační stránce nebo přihlašovací stránce) a přeskočí druhý krok orchestrace.

<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

Element ClaimsExchanges obsahuje následující prvek:

Element (Prvek) Výskyty Popis
ClaimsExchange 1:n V závislosti na použitém technickém profilu buď přesměruje klienta podle vybraného claimsProviderSelectionu, nebo provede volání serveru pro výměnu deklarací identity.

Element ClaimsExchange obsahuje následující atributy:

Atribut Požadováno Popis
Id Ano Identifikátor kroku výměny deklarací identity. Identifikátor se používá k odkazování na výměnu deklarací identity z kroku výběru zprostředkovatele deklarací identity v zásadě.
TechnicalProfileReferenceId Ano Identifikátor technického profilu, který se má spustit.

JourneyList

Element JourneyList obsahuje následující prvek:

Element (Prvek) Výskyty Popis
Uchazeč 1:1 Odkaz na dílčí cestu, která se má volat.

Uchazeč

Element Candidate obsahuje následující atributy:

Atribut Požadováno Popis
SubJourneyReferenceId Ano Identifikátor dílčí cesty , která se má provést.