Azure Active Directory B2C özel ilkesini kullanarak kullanıcı yolculuğunda dallanma oluşturma
Aynı uygulamanın farklı kullanıcıları, özel ilkedeki verilerin değerlerine bağlı olarak farklı kullanıcı yolculuklarını izleyebilir. Azure Active Directory B2C (Azure AD B2C) özel ilkeleri, bu özelliği elde etmek için bir teknik profili koşullu olarak etkinleştirmenize veya devre dışı bırakmanıza olanak tanır. Örneğin, Azure AD B2C özel ilkesini kullanarak kullanıcı girişlerini doğrulama bölümünde accountType talebi değerine göre bir doğrulama teknik profili çalıştırıp çalıştırmayacağımızı belirlemek için bir Precondition
kullandık.
Teknik profil, teknik bir EnabledForUserJourneys
profilin çalıştırılıp çalıştırılmayacağını belirtmenize olanak sağlayan bir öğe de sağlar. EnabledForUserJourneys
öğesi OnClaimsExistence dahil olmak üzere beş değerden birini içerir. Bu değer, teknik profilin yalnızca teknik profilde belirtilen belirli bir talep mevcut olduğunda çalıştırılması gerektiğini belirtir. Teknik profilin EnabledForUserJourneys öğesi hakkında daha fazla bilgi edinin.
Senaryoya genel bakış
Kullanıcı girişlerini Azure AD B2C özel ilkesi kullanarak doğrulama makalesinde, kullanıcı ayrıntılarını tek bir ekrana ekler. Bu makalede, bir kullanıcının önce kendi hesap türünü (Contoso Çalışan Hesabı veya Kişisel Hesap) seçmesi gerekir. Contoso Çalışan Hesabı'nı seçen bir kullanıcı daha fazla ayrıntı sağlamaya devam edebilir. Ancak, Kişisel Hesap'ı seçen bir kullanıcının daha fazla ayrıntı sağlamaya devam etmeden önce geçerli bir davet erişim kodu sağlaması gerekir. Bu nedenle, Kişisel Hesap hesabı türünü kullanan kullanıcılar yolculuklarını tamamlamak için ek bir kullanıcı arabirimi görür.
Bu makalede, bir talep değerine göre farklı kullanıcı deneyimleri oluşturmak için bir teknik profilin içindeki öğesini kullanmayı EnabledForUserJourneys
öğreneceksiniz.
Ön koşullar
Henüz bir kiracınız yoksa, Azure aboneliğinize bağlı bir Azure AD B2C kiracısı oluşturun.
Bir web uygulaması kaydedin ve kimlik belirteci örtük verme özelliğini etkinleştirin. Yeniden Yönlendirme URI'sinde kullanın https://jwt.ms.
Bilgisayarınızda Visual Studio Code (VS Code) yüklü olmalıdır.
Azure AD B2C özel ilkesini kullanarak kullanıcı girişlerini doğrulama başlığındaki adımları tamamlayın. Bu makale, Kendi özel ilkelerinizi oluşturma ve çalıştırma kılavuz serisinin bir parçasıdır.
Dekont
Bu makale, Azure Active Directory B2C'de kendi özel ilkelerinizi oluşturma ve çalıştırma nasıl yapılır kılavuzu serisinin bir parçasıdır. Bu seriyi ilk makaleden başlatmanızı öneririz.
1. Adım - Beyanları bildirme
Kişisel Hesap'ı seçen bir kullanıcının geçerli bir erişim kodu sağlaması gerekir. Bu nedenle, bu değeri tutmak için bir talep gerekir:
VS Code'da dosyayı açın
ContosoCustomPolicy.XML
.ClaimsSchema
bölümünde, aşağıdaki kodu kullanarak accessCode ve isValidAccessCode taleplerini bildirin:<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>
2. Adım - Talep dönüştürmelerini tanımlama
ClaimsTransformations
öğesini bulun ve aşağıdaki talep dönüştürmelerini ekleyin:
<!---<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>-->
CheckIfIsValidAccessCode ve ThrowIfIsNotValidAccessCode olarak iki talep dönüştürmesi tanımladık. CheckIfIsValidAccessCode, kullanıcının erişim kodu girişini 88888 statik değeriyle karşılaştırmak için CompareClaimToValue dönüştürme yöntemini kullanır (test için bu değeri kullanalım) ve veya false
isValidAccessCode talebi atar true
. ThrowIfIsNotValidAccessCode , iki talebin iki boole değerinin eşit olup olmadığını denetler ve eşit değilse bir özel durum oluşturur.
3. Adım - Teknik profilleri yapılandırma veya güncelleştirme
Şimdi biri hesap türünü toplamak için diğeri de kullanıcıdan erişim kodu toplamak için olmak üzere iki yeni kendi kendine onaylanan teknik profile ihtiyacınız vardır. Ayrıca, 2. adımda tanımladığınız talep dönüştürmelerini yürüterek kullanıcının erişim kodunu doğrulamak için yeni bir talep dönüştürme türü teknik profiline de ihtiyacınız vardır. Hesap türünü kendi kendine onaylanan farklı bir teknik profilde topladığımıza göre, hesap türünü toplamasını önlemek için kendi kendine onaylanan teknik profili güncelleştirmemiz UserInformationCollector
gerekir.
ClaimsProviders
öğesini bulun ve aşağıdaki kodu kullanarak yeni bir talep sağlayıcısı ekleyin:<!--<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>-->
AccessCodeInputCollector ve CheckAccessCodeViaClaimsTransformationChecker olarak iki teknik profil yapılandırdık. CheckAccessCodeViaClaimsTransformationChecker teknik profilini AccessCodeInputCollector teknik profili içinden doğrulama teknik profili olarak adlandırıyoruz. CheckAccessCodeViaClaimsTransformationChecker, 2. adımda tanımladığımız Talep Dönüştürmelerini yürüten Talep Dönüştürme teknik Profili türündedir.
AccessCodeInputCollector , kullanıcıdan erişim kodu toplamak için kullanılan, Kendinden Onaylanan bir Teknik Profildir. OnClaimsExistence olarak ayarlanmış öğeyi içerir
EnabledForUserJourneys
. ÖğesiMetadata
, bu teknik profili etkinleştiren bir talep (accountType) ve değerini (kişisel) içerir.ClaimsProviders
öğesini bulun ve aşağıdaki kodu kullanarak yeni bir talep sağlayıcısı ekleyin:<!--<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>-->
Kullanıcının hesap türünü toplayan, kendi kendine onaylanan bir teknik profil
AccountTypeInputCollector
yapılandırdık. Kendi kendine onaylanan teknik profilin etkinleştirilip etkinleştirilmeyeceğini belirleyen hesap türlerininAccessCodeInputCollector
değeridir.Kendi kendine onaylanan teknik profilin
UserInformationCollector
hesap türünü toplamasını önlemek için, kendi kendine onaylanan teknik profili bulunUserInformationCollector
ve ardından:accountType
Görünen talebi koleksiyondan<DisplayClaim ClaimTypeReferenceId="accountType" Required="true"/>
DisplayClaims
kaldırın.accountType
Çıkış talebi olan<OutputClaim ClaimTypeReferenceId="accountType"/>
öğesini koleksiyondanOutputClaims
kaldırın.
4. Adım - Kullanıcı yolculuğu düzenleme adımlarını güncelleştirme
Artık teknik profillerinizi ayarladığınıza göre, kullanıcı yolculuğu düzenleme adımlarınızı güncelleştirmeniz gerekir:
Kullanıcı yolculuğunuzu
HelloWorldJourney
bulun ve tüm düzenleme adımlarını aşağıdaki kodla değiştirin:<!--<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>-->
Düzenleme adımları, teknik profili düzenleme adımlarının
Order
özniteliği tarafından gösterilen sırayla çağırdığımız gösterir. Ancak kullanıcıAccessCodeInputCollector
Kişisel Hesap hesap türünü seçerse teknik profil etkinleştirilir.
5. Adım - Özel ilke dosyasını karşıya yükleme
İlke dosyanızı karşıya yüklemek için Özel ilke dosyasını karşıya yükleme bölümünde yer alan adımları izleyin. Portalda bulunan dosyayla aynı ada sahip bir dosyayı karşıya yüklüyorsanız, zaten varsa Özel ilkenin üzerine yaz'ı seçtiğinizden emin olun.
6. Adım - Özel ilkeyi test edin
Özel ilkenizi test etmek için Özel ilkeyi test etme altındaki adımları izleyin:
- İlk ekranda, Hesap Türü için Kişisel Hesap'ı seçin.
- Erişim Kodu için 88888 girin ve Devam'ı seçin.
- Diğer ayrıntıları gerektiği gibi girin ve Devam'ı seçin. İlke yürütmeyi tamamladıktan sonra adresine yönlendirilirsiniz
https://jwt.ms
ve kodu çözülen bir JWT belirteci görürsünüz. - 5. adımı yineleyin, ancak bu kez Hesap Türü'nü seçin, Contoso Çalışan Hesabı'nı seçin ve ardından istemleri izleyin.
Sonraki adımlar
3. adımda, öğesini kullanarak EnabledForUserJourneys
teknik profili etkinleştirir veya devre dışı bırakırız. Alternatif olarak, bu serinin ilerleyen bölümlerinde öğrendiğimiz bir düzenleme adımını yürütmek veya atlamak için kullanıcı yolculuğu düzenleme adımlarının içindeki Önkoşullar'ı kullanabilirsiniz.
Ardından şunları öğrenin:
Kullanıcı Yolculuğu Düzenleme Adımları Önkoşulları hakkında.
Azure AD B2C ilke dosyalarını doğrulamak için TrustFrameworkPolicy şema dosyasını kullanma.