Vytvoření větvení na cestě uživatele pomocí vlastních zásad Azure Active Directory B2C
Různí uživatelé stejné aplikace můžou sledovat různé cesty uživatelů v závislosti na hodnotách dat ve vlastních zásadách. Vlastní zásady Azure Active Directory B2C (Azure AD B2C) umožňují podmíněně povolit nebo zakázat technický profil, abyste tuto funkci dosáhli. Například při ověřování uživatelských vstupů pomocí vlastních zásad Azure AD B2C jsme použili Precondition
k určení, jestli bychom měli spustit technický profil ověření na základě hodnoty deklarace identity accountType .
Technický profil také poskytuje EnabledForUserJourneys
prvek, který vám umožní určit, jestli se má technický profil spustit nebo ne. Prvek EnabledForUserJourneys
obsahuje jednu z pěti hodnot včetně OnClaimsExistence, které slouží k určení, že technický profil by měl běžet pouze v případě, že existuje určitá deklarace identity zadaná v technickém profilu. Přečtěte si další informace o elementu EnabledForUserJourneys technického profilu.
Přehled scénáře
V článku o ověření uživatelských vstupů pomocí vlastní zásady Azure AD B2C uživatel zadá podrobnosti na jedné obrazovce. V tomto článku musí uživatel nejprve vybrat typ svého účtu, účet zaměstnance contoso nebo osobní účet. Uživatel, který vybere účet zaměstnance Contoso, může pokračovat a zadat další podrobnosti. Uživatel, který vybere osobní účet , ale musí zadat platný přístupový kód pozvánky, aby mohl pokračovat v poskytování dalších podrobností. Proto uživatelé, kteří používají typ účtu osobního účtu , uvidí další uživatelské rozhraní pro dokončení své cesty.
V tomto článku se dozvíte, jak pomocí EnabledForUserJourneys
elementu uvnitř technického profilu vytvořit různá uživatelská prostředí na základě hodnoty deklarace identity.
Předpoklady
Pokud ho ještě nemáte, vytvořte tenanta Azure AD B2C, který je propojený s vaším předplatným Azure.
Zaregistrujte webovou aplikaci a povolte implicitní udělení tokenu ID. Pro identifikátor URI přesměrování použijte https://jwt.ms.
V počítači musíte mít nainstalovaný Visual Studio Code (VS Code ).
Proveďte kroky v části Ověření uživatelských vstupů pomocí vlastních zásad Azure AD B2C. Tento článek je součástí vytváření a spouštění vlastních zásad, které vás provedou řadou návodů.
Poznámka:
Tento článek je součástí řady s návody k vytvoření a spuštění vlastních zásad v Azure Active Directory B2C. Doporučujeme spustit tuto řadu z prvního článku.
Krok 1 – Deklarace deklarací identity
Uživatel, který vybere osobní účet , musí zadat platný přístupový kód. Proto potřebujeme deklaraci identity, která bude obsahovat tuto hodnotu:
V editoru
ContosoCustomPolicy.XML
VS Code otevřete soubor.ClaimsSchema
V části deklarujte přístupový kód a deklarace identity isValidAccessCode pomocí následujícího kódu:<ClaimType Id="accessCode"> <DisplayName>Access Code</DisplayName> <DataType>string</DataType> <UserHelpText>Enter your invitation access code.</UserHelpText> <UserInputType>Password</UserInputType> <Restriction> <Pattern RegularExpression="[0-9][0-9][0-9][0-9][0-9]" HelpText="Please enter your invitation access code. It's a 5-digit number, something like 95765"/> </Restriction> </ClaimType> <ClaimType Id="isValidAccessCode"> <DataType>boolean</DataType> </ClaimType>
Krok 2 : Definování transformací deklarací identity
ClaimsTransformations
Vyhledejte element a přidejte následující transformace deklarací identity:
<!---<ClaimsTransformations>-->
<ClaimsTransformation Id="CheckIfIsValidAccessCode" TransformationMethod="CompareClaimToValue">
<InputClaims>
<InputClaim ClaimTypeReferenceId="accessCode" TransformationClaimType="inputClaim1"/>
</InputClaims>
<InputParameters>
<InputParameter Id="compareTo" DataType="string" Value="88888"/>
<InputParameter Id="operator" DataType="string" Value="equal"/>
<InputParameter Id="ignoreCase" DataType="string" Value="true"/>
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="isValidAccessCode" TransformationClaimType="outputClaim"/>
</OutputClaims>
</ClaimsTransformation>
<ClaimsTransformation Id="ThrowIfIsNotValidAccessCode" TransformationMethod="AssertBooleanClaimIsEqualToValue">
<InputClaims>
<InputClaim ClaimTypeReferenceId="isValidAccessCode" TransformationClaimType="inputClaim"/>
</InputClaims>
<InputParameters>
<InputParameter Id="valueToCompareTo" DataType="boolean" Value="true"/>
</InputParameters>
</ClaimsTransformation>
<!---</ClaimsTransformations>-->
Definovali jsme dvě transformace deklarací identity, CheckIfIsValidAccessCode a ThrowIfIsNotValidAccessCode. CheckIfIsValidAccessCode používá metodu transformace CompareClaimToValue k porovnání vstupu přístupového kódu uživatelem se statickou hodnotou 88888 (pojďme tuto hodnotu použít pro testování) a přiřadí true
nebo false
k deklaraci identity isValidAccessCode . ThrowIfIsNotValidAccessCode zkontroluje, jestli jsou dvě logické hodnoty dvou deklarací rovny, a vyvolá výjimku, pokud nejsou.
Krok 3 – Konfigurace nebo aktualizace technických profilů
Teď potřebujete dva nové technické profily s vlastním kontrolním výrazem, jeden pro shromáždění typu účtu a druhý pro shromáždění přístupového kódu od uživatele. Potřebujete také nový technický profil transformace deklarací identity, který ověří přístupový kód uživatele spuštěním transformací deklarací identity, které jste definovali v kroku 2. Teď, když shromažďujeme typ účtu v jiném technickém profilu s vlastním kontrolním výrazem, musíme aktualizovat UserInformationCollector
technický profil s vlastním kontrolním výrazem, aby se zabránilo jeho shromažďování typu účtu.
ClaimsProviders
Vyhledejte element a přidejte nového zprostředkovatele deklarací identity pomocí následujícího kódu:<!--<ClaimsProviders>--> <ClaimsProvider> <DisplayName>Technical Profiles to collect user's access code</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="AccessCodeInputCollector"> <DisplayName>Collect Access Code Input from user Technical Profile</DisplayName> <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/> <Metadata> <Item Key="ContentDefinitionReferenceId">SelfAssertedContentDefinition</Item> <Item Key="UserMessageIfClaimsTransformationBooleanValueIsNotEqual">The access code is invalid.</Item> <Item Key="ClaimTypeOnWhichToEnable">accountType</Item> <Item Key="ClaimValueOnWhichToEnable">personal</Item> </Metadata> <DisplayClaims> <DisplayClaim ClaimTypeReferenceId="accessCode" Required="true"/> </DisplayClaims> <OutputClaims> <OutputClaim ClaimTypeReferenceId="accessCode"/> </OutputClaims> <ValidationTechnicalProfiles> <ValidationTechnicalProfile ReferenceId="CheckAccessCodeViaClaimsTransformationChecker"/> </ValidationTechnicalProfiles> <EnabledForUserJourneys>OnClaimsExistence</EnabledForUserJourneys> </TechnicalProfile> <TechnicalProfile Id="CheckAccessCodeViaClaimsTransformationChecker"> <DisplayName>A Claims Transformations to check user's access code validity</DisplayName> <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/> <OutputClaims> <OutputClaim ClaimTypeReferenceId="isValidAccessCode"/> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="CheckIfIsValidAccessCode"/> <OutputClaimsTransformation ReferenceId="ThrowIfIsNotValidAccessCode"/> </OutputClaimsTransformations> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider> <!--</ClaimsProviders>-->
Nakonfigurovali jsme dva technické profily, AccessCodeInputCollector a CheckAccessCodeViaClaimsTransformationChecker. Technický profil CheckAccessCodeViaClaimsTransformationChecker označujeme jako technický profil ověření z technického profilu AccessCodeInputCollector. CheckAccessCodeViaClaimsTransformationChecker je typ Transformace deklarací identity technický profil, který spouští transformace deklarací identity, které jsme definovali v kroku 2.
AccessCodeInputCollector je technický profil, který se používá k shromáždění přístupového kódu od uživatele.
EnabledForUserJourneys
Obsahuje prvek, který je nastaven na OnClaimsExistence. JehoMetadata
element obsahuje deklaraci identity (accountType) a její hodnotu (osobní), která aktivuje tento technický profil.ClaimsProviders
Vyhledejte element a přidejte nového zprostředkovatele deklarací identity pomocí následujícího kódu:<!--<ClaimsProviders>--> <ClaimsProvider> <DisplayName>Technical Profile to collect user's accountType</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="AccountTypeInputCollector"> <DisplayName>Collect User Input Technical Profile</DisplayName> <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/> <Metadata> <Item Key="ContentDefinitionReferenceId">SelfAssertedContentDefinition</Item> </Metadata> <DisplayClaims> <DisplayClaim ClaimTypeReferenceId="accountType" Required="true"/> </DisplayClaims> <OutputClaims> <OutputClaim ClaimTypeReferenceId="accountType"/> </OutputClaims> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider> <!--</ClaimsProviders>-->
Nakonfigurovali jsme technický profil
AccountTypeInputCollector
, který shromáždí typ účtu uživatele. Jedná se o hodnotu typu účtu, která určuje, jestliAccessCodeInputCollector
má být aktivovaný technický profil s vlastním kontrolním výrazem.Chcete-li zabránit, aby technický profil s vlastním kontrolním
UserInformationCollector
výrazem shromažďoval typ účtu, vyhledejteUserInformationCollector
technický profil s vlastním potvrzením a pak:accountType
Odeberte deklaraci identity<DisplayClaim ClaimTypeReferenceId="accountType" Required="true"/>
zobrazení zDisplayClaims
kolekce.accountType
Odeberte výstupní deklaraci identity<OutputClaim ClaimTypeReferenceId="accountType"/>
zOutputClaims
kolekce.
Krok 4 – aktualizace kroků orchestrace cesty uživatele
Teď, když jste nastavili technické profily, musíte aktualizovat kroky orchestrace cest uživatelů:
Vyhledejte cestu
HelloWorldJourney
uživatele a přidejte všechny kroky orchestrace následujícím kódem:<!--<OrchestrationSteps>--> <OrchestrationStep Order="1" Type="ClaimsExchange"> <ClaimsExchanges> <ClaimsExchange Id="AccountTypeInputCollectorClaimsExchange" TechnicalProfileReferenceId="AccountTypeInputCollector"/> </ClaimsExchanges> </OrchestrationStep> <OrchestrationStep Order="2" Type="ClaimsExchange"> <ClaimsExchanges> <ClaimsExchange Id="GetAccessCodeClaimsExchange" TechnicalProfileReferenceId="AccessCodeInputCollector" /> </ClaimsExchanges> </OrchestrationStep> <OrchestrationStep Order="3" Type="ClaimsExchange"> <ClaimsExchanges> <ClaimsExchange Id="GetUserInformationClaimsExchange" TechnicalProfileReferenceId="UserInformationCollector"/> </ClaimsExchanges> </OrchestrationStep> <OrchestrationStep Order="4" Type="ClaimsExchange"> <ClaimsExchanges> <ClaimsExchange Id="GetMessageClaimsExchange" TechnicalProfileReferenceId="ClaimGenerator"/> </ClaimsExchanges> </OrchestrationStep> <OrchestrationStep Order="5" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer"/> <!--</OrchestrationSteps>-->
Kroky orchestrace ukazují, že voláme technický profil v pořadí uvedeném atributem orchestration steps
Order
. Technický profil se ale aktivuje,AccessCodeInputCollector
pokud uživatel vybere typ účtu osobního účtu .
Krok 5 : Nahrání souboru vlastních zásad
Postupujte podle kroků v části Nahrání souboru vlastních zásad a nahrajte soubor zásad. Pokud nahráváte soubor se stejným názvem jako soubor, který už je na portálu, nezapomeňte vybrat Možnost Přepsat vlastní zásadu, pokud už existuje.
Krok 6 – otestování vlastních zásad
Postupujte podle kroků v části Otestování vlastních zásad a otestujte vlastní zásady :
- Na první obrazovce v části Typ účtu vyberte Osobní účet.
- Jako přístupový kód zadejte 88888 a pak vyberte Pokračovat.
- Podle potřeby zadejte zbývající podrobnosti a pak vyberte Pokračovat. Po dokončení provádění zásady budete přesměrováni na
https://jwt.ms
a zobrazí se dekódovaný token JWT. - Opakujte krok 5, ale tentokrát vyberte Typ účtu, vyberte Účet zaměstnance contoso a postupujte podle pokynů.
Další kroky
V kroku 3 povolíme nebo zakážeme technický profil pomocí elementu EnabledForUserJourneys
. Případně můžete pomocí předběžných předpokladů v rámci kroků orchestrace cesty uživatele provést nebo přeskočit krok orchestrace, jak se dozvíme dále v této sérii.
Dále se dozvíte:
Použití souboru schématu TrustFrameworkPolicy k ověření souborů zásad Azure AD B2C