Azure Active Directory B2C özel ilkesini kullanarak kullanıcı girişlerini toplama ve işleme

Azure Active Directory B2C (Azure AD B2C) özel ilkeleri, kullanıcı girişlerini toplamanıza olanak tanır. Ardından, kullanıcı girişlerini işlemek için yerleşik yöntemleri kullanabilirsiniz.

Bu makalede, grafik kullanıcı arabirimi aracılığıyla kullanıcı girişleri toplayan özel bir ilke yazmayı öğreneceksiniz. Ardından girişlere erişip işlem yapacak ve son olarak bunları JWT belirtecinde talep olarak döndüreceksiniz. Bu görevi tamamlamak için şunları yapacaksınız:

  • Beyanları bildirin. Talep, Azure AD B2C ilkesi yürütme sırasında verilerin geçici olarak depolanmasını sağlar. Ad, soyadı veya kullanıcıdan veya diğer sistemlerden alınan diğer talepler gibi kullanıcı hakkındaki bilgileri depolayabilir. Talepler hakkında daha fazla bilgi için Bkz. Azure AD B2C özel ilkesine genel bakış.

  • Teknik profilleri tanımlayın. Teknik profil, farklı taraf türleriyle iletişim kurmak için bir arabirim sağlar. Örneğin, veri toplamak için kullanıcıyla etkileşim kurmanızı sağlar.

  • Bildirdiğiniz talepleri işlemek için kullandığınız talep dönüştürmelerini yapılandırın.

  • İçerik tanımlarını yapılandırın. İçerik tanımı yüklenecek kullanıcı arabirimini tanımlar. Daha sonra kendi özelleştirilmiş HTML içeriğinizi sağlayarak kullanıcı arabirimini özelleştirebilirsiniz.

  • Kendi Kendine Onaylanan Teknik Profiller ve DisplayClaims kullanarak kullanıcı arabirimlerini yapılandırın ve kullanıcıya gösterin.

  • Düzenleme Adımlarını kullanarak belirli bir sırada Teknik Profilleri çağır.

Ön koşullar

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

objectId ve iletiyle birlikte ek talepler bildirin:

  1. VS Code'da dosyayı açın ContosoCustomPolicy.XML .

  2. ClaimsSchema bölümüne aşağıdaki ClaimType bildirimlerini ekleyin:

        <ClaimType Id="givenName">
            <DisplayName>Given Name</DisplayName>
            <DataType>string</DataType>
            <UserHelpText>Your given name (also known as first name).</UserHelpText>
            <UserInputType>TextBox</UserInputType>
        </ClaimType>
    
        <ClaimType Id="surname">
            <DisplayName>Surname</DisplayName>
            <DataType>string</DataType>
            <UserHelpText>Your surname (also known as family name or last name).</UserHelpText>
            <UserInputType>TextBox</UserInputType>
        </ClaimType>
        <ClaimType Id="displayName">
            <DisplayName>Display Name</DisplayName>
            <DataType>string</DataType>
            <UserHelpText>Your display name.</UserHelpText>
            <UserInputType>TextBox</UserInputType>
        </ClaimType>
    

GivenName, soyad ve displayName olmak üzere üç Talep Türü bildirdik. Bu bildirimler , UserInputType ve DisplayName öğelerini içerirDataType:

  • DataType , taleplerin barındırdığını değerin veri türünü belirtir. DataType öğelerinin desteklediği veri türleri hakkında daha fazla bilgi edinin.
  • Kullanıcıdan talebin değerini toplamak istiyorsanız UserInputType , kullanıcı arabiriminde görüntülenen kullanıcı arabirimi denetimini belirtir. Azure AD B2C'nin desteklediği kullanıcı giriş türleri hakkında daha fazla bilgi edinin.
  • Kullanıcıdan talebin değerini toplamak istiyorsanız, DisplayName kullanıcı arabiriminde görünen kullanıcı arabirimi denetiminin etiketini belirtir.

2. Adım - Talep dönüştürmelerini tanımlama

ClaimsTransformation, belirli bir talebi başka bir talepe dönüştürmek için kullandığınız bir işlev içerir. Örneğin, bir dize talebini küçük harften büyük harfe değiştirebilirsiniz. Azure AD B2C tarafından desteklenen Talep dönüştürmeleri hakkında daha fazla bilgi edinin.

  1. dosyasında, bölümün ContosoCustomPolicy.XMLBuildingBlocks alt öğesi olarak bir <ClaimsTransformations> öğe ekleyin.

        <ClaimsTransformations>
    
        </ClaimsTransformations>
    
  2. öğesinin içine ClaimsTransformations aşağıdaki kodu ekleyin:

        <ClaimsTransformation Id="GenerateRandomObjectIdTransformation" TransformationMethod="CreateRandomString">
            <InputParameters>
            <InputParameter Id="randomGeneratorType" DataType="string" Value="GUID"/>
            </InputParameters>
            <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="objectId" TransformationClaimType="outputClaim"/>
            </OutputClaims>
        </ClaimsTransformation>
    
        <ClaimsTransformation Id="CreateDisplayNameTransformation" TransformationMethod="FormatStringMultipleClaims">
            <InputClaims>
            <InputClaim ClaimTypeReferenceId="givenName" TransformationClaimType="inputClaim1"/>
            <InputClaim ClaimTypeReferenceId="surname" TransformationClaimType="inputClaim2"/>
            </InputClaims>
            <InputParameters>
            <InputParameter Id="stringFormat" DataType="string" Value="{0} {1}"/>
            </InputParameters>
            <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="displayName" TransformationClaimType="outputClaim"/>
            </OutputClaims>
        </ClaimsTransformation>
    
        <ClaimsTransformation Id="CreateMessageTransformation" TransformationMethod="FormatStringClaim">
            <InputClaims>
            <InputClaim ClaimTypeReferenceId="displayName" TransformationClaimType="inputClaim"/>
            </InputClaims>
            <InputParameters>
            <InputParameter Id="stringFormat" DataType="string" Value="Hello {0}"/>
            </InputParameters>
            <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="message" TransformationClaimType="outputClaim"/>
            </OutputClaims>
        </ClaimsTransformation> 
    

    Üç talep dönüştürmesi yapılandırdık:

    • GenerateRandomObjectIdTransformation, CreateRandomString yöntemi tarafından belirtilen rastgele bir dize oluşturur. objectId talebi, öğesi tarafından OutputClaim belirtilen şekilde oluşturulan dizeyle güncelleştirilir.

    • CreateDisplayNameTransformation, displayName oluşturmak için givenName ve soyadlarını birleştirir.

    • CreateMessageTransformation, Hello ve displayName'i ileti oluşturmak için birleştirir.

3. Adım - İçerik tanımlarını yapılandırma

ContentDefinitions, kullanıcılarınıza gösterdiğiniz web sayfalarının düzenini denetleen HTML şablonlarının URL'sini belirtmenize olanak sağlar. Her adım için oturum açma veya kaydolma, parola sıfırlama veya hata sayfaları gibi belirli kullanıcı arabirimleri belirtebilirsiniz.

İçerik tanımı eklemek için dosyanın bölümüne ContosoCustomPolicy.XML aşağıdaki kodu BuildingBlocks ekleyin:

    <ContentDefinitions>
        <ContentDefinition Id="SelfAssertedContentDefinition">
            <LoadUri>~/tenant/templates/AzureBlue/selfAsserted.cshtml</LoadUri>
            <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
            <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7</DataUri>
        </ContentDefinition>
    </ContentDefinitions>

4. Adım - Teknik profilleri yapılandırma

Özel bir ilkede TechnicalProfile işlevi uygulayan öğedir. Artık Talepler ve Talep Dönüştürmeleri tanımladığınıza göre tanımlarınızı yürütmek için Teknik Profillere ihtiyacınız vardır. Öğelerin içinde ClaimsProvider bir teknik profil bildirilir.

Azure AD B2C bir dizi teknik profil sağlar. Her teknik profil belirli bir rol gerçekleştirir. Örneğin, bir hizmet uç noktasına HTTP çağrısı yapmak için REST teknik profili kullanırsınız. Talep Dönüştürme'de tanımladığınız işlemi yürütmek için bir talep dönüştürme teknik profili kullanabilirsiniz. Azure AD B2C özel ilkelerinin sağladığı teknik profil türleri hakkında daha fazla bilgi edinin.

Talepleriniz için değerleri ayarlama

objectId, displayName ve ileti talepleri değerlerini ayarlamak için GenerateRandomObjectIdTransformation, CreateDisplayNameTransformation ve CreateMessageTransformation talep dönüştürmelerini yürüten bir teknik profil yapılandırabilirsiniz. Talep dönüştürmeleri öğesinde OutputClaimsTransformations tanımlanan sırayla yürütülür. Örneğin, önce görünen adı, ardından iletiyi oluşturur.

  1. Aşağıdakileri ClaimsProvider bölümün ClaimsProviders alt öğesi olarak ekleyin.

        <ClaimsProvider>
    
            <DisplayName>Technical Profiles to generate claims</DisplayName>
        </ClaimsProvider>
    
    
  2. objectId, displayName ve ileti talepleri değerlerini ayarlamak için, az önce oluşturduğunuz öğenin içine ClaimsProvider aşağıdaki kodu ekleyin:

        <!--<ClaimsProvider>-->
            <TechnicalProfiles>
                <TechnicalProfile Id="ClaimGenerator">
                    <DisplayName>Generate Object ID, displayName and message Claims Technical Profile.</DisplayName>
                    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
                    <OutputClaims>
                        <OutputClaim ClaimTypeReferenceId="objectId"/>
                        <OutputClaim ClaimTypeReferenceId="displayName"/>
                        <OutputClaim ClaimTypeReferenceId="message"/>
                    </OutputClaims>
                    <OutputClaimsTransformations>
                        <OutputClaimsTransformation ReferenceId="GenerateRandomObjectIdTransformation"/>
                        <OutputClaimsTransformation ReferenceId="CreateDisplayNameTransformation"/>
                        <OutputClaimsTransformation ReferenceId="CreateMessageTransformation"/>
                    </OutputClaimsTransformations>
                </TechnicalProfile>
            </TechnicalProfiles>
        <!--</ClaimsProvider>-->
    

Kullanıcı girişlerini toplama

displayName talebi givenName ve soyadlarından oluşturursunuz, bu nedenle kullanıcı girişi olarak toplamanız gerekir. Kullanıcı girişi toplamak için, Kendi Kendine Onaylanan adlı bir teknik profil türü kullanırsınız. Kendi kendine onaylanan bir teknik profil yapılandırırken, kullanıcı arabirimini görüntülemek kendi kendini onaylayan teknik profilden sorumlu olduğundan içerik tanımlarına başvurmanız gerekir.

  1. Aşağıdakileri ClaimsProvider bölümün ClaimsProviders alt öğesi olarak ekleyin.

        <ClaimsProvider>
    
            <DisplayName>Technical Profiles to collect user's details </DisplayName>
        </ClaimsProvider>
    
  2. Az önce oluşturduğunuz öğenin içine ClaimsProvider aşağıdaki kodu ekleyin:

        <TechnicalProfiles>
            <TechnicalProfile Id="UserInformationCollector">
                <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="givenName" Required="true"/>
                    <DisplayClaim ClaimTypeReferenceId="surname" Required="true"/>
                </DisplayClaims>
                <OutputClaims>
                    <OutputClaim ClaimTypeReferenceId="givenName"/>
                    <OutputClaim ClaimTypeReferenceId="surname"/>
                </OutputClaims>
            </TechnicalProfile>
        </TechnicalProfiles>
    

    givenName ve soyad talepleri için iki görünen beyana dikkat edin. Her iki talep de gerekli olarak işaretlendiğinden, kullanıcının görüntülenen formu göndermeden önce değerleri girmesi gerekir. Talepler ekranda Verilen Ad ve ardından Soyadı gibi DisplayClaims öğesinde tanımlanan sırada görüntülenir.

5. Adım - Kullanıcı yolculuklarını tanımlama

Teknik profillerin çağrılma sırasını tanımlamak için kullanıcı yolculuklarını kullanırsınız. kullanıcı yolculuğundaki adımları belirtmek için öğesini kullanırsınız OrchestrationSteps .

Kullanıcı Yolculuğu'nun HelloWorldJourney mevcut içeriğini aşağıdaki kodla değiştirin:

    <OrchestrationSteps>
        <OrchestrationStep Order="1" Type="ClaimsExchange">
            <ClaimsExchanges>
                <ClaimsExchange Id="GetUserInformationClaimsExchange" TechnicalProfileReferenceId="UserInformationCollector"/>
            </ClaimsExchanges>
        </OrchestrationStep>
        <OrchestrationStep Order="2" Type="ClaimsExchange">
            <ClaimsExchanges>
                <ClaimsExchange Id="GetMessageClaimsExchange" TechnicalProfileReferenceId="ClaimGenerator"/>
            </ClaimsExchanges>
        </OrchestrationStep>
        <OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer"/>
    </OrchestrationSteps>

Düzenleme adımlarına göre kullanıcı girişlerini toplar, objectId, displayName ve ileti talepleri için değerleri ayarlar ve son olarak Jwt belirtecini göndeririz.

6. Adım - Bağlı olan tarafı güncelleştirme

bölümünün öğesinin OutputClaimsRelyingParty içeriğini aşağıdaki kodla değiştirin:

    <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
    <OutputClaim ClaimTypeReferenceId="displayName"/>
    <OutputClaim ClaimTypeReferenceId="message"/>

6. adımı tamamladıktan sonra dosya ContosoCustomPolicy.XML aşağıdaki koda benzer görünmelidir:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TrustFrameworkPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06" 
    PolicySchemaVersion="0.3.0.0" TenantId="yourtenant.onmicrosoft.com" 
    PolicyId="B2C_1A_ContosoCustomPolicy" 
    PublicPolicyUri="http://yourtenant.onmicrosoft.com/B2C_1A_ContosoCustomPolicy">
    
    <BuildingBlocks>
        <ClaimsSchema>
            <ClaimType Id="objectId">
                <DisplayName>unique object Id for subject of the claims being returned</DisplayName>
                <DataType>string</DataType>
            </ClaimType>
            <ClaimType Id="message">
                <DisplayName>Will hold Hello World message</DisplayName>
                <DataType>string</DataType>
            </ClaimType>

            <ClaimType Id="givenName">
                <DisplayName>Given Name</DisplayName>
                <DataType>string</DataType>
                <UserHelpText>Your given name (also known as first name).</UserHelpText>
                <UserInputType>TextBox</UserInputType>
            </ClaimType>
            <ClaimType Id="surname">
                <DisplayName>Surname</DisplayName>
                <DataType>string</DataType>
                <UserHelpText>Your surname (also known as family name or last name).</UserHelpText>
                <UserInputType>TextBox</UserInputType>
            </ClaimType>
            <ClaimType Id="displayName">
                <DisplayName>Display Name</DisplayName>
                <DataType>string</DataType>
                <UserHelpText>Your display name.</UserHelpText>
                <UserInputType>TextBox</UserInputType>
            </ClaimType>
        </ClaimsSchema>
        <ClaimsTransformations>
            <ClaimsTransformation Id="GenerateRandomObjectIdTransformation" TransformationMethod="CreateRandomString">
                <InputParameters>
                    <InputParameter Id="randomGeneratorType" DataType="string" Value="GUID"/>
                </InputParameters>
                <OutputClaims>
                    <OutputClaim ClaimTypeReferenceId="objectId" TransformationClaimType="outputClaim"/>
                </OutputClaims>
            </ClaimsTransformation>

            <ClaimsTransformation Id="CreateDisplayNameTransformation" TransformationMethod="FormatStringMultipleClaims">
                <InputClaims>
                    <InputClaim ClaimTypeReferenceId="givenName" TransformationClaimType="inputClaim1"/>
                    <InputClaim ClaimTypeReferenceId="surname" TransformationClaimType="inputClaim2"/>
                </InputClaims>
                <InputParameters>
                    <InputParameter Id="stringFormat" DataType="string" Value="{0} {1}"/>
                </InputParameters>
                <OutputClaims>
                    <OutputClaim ClaimTypeReferenceId="displayName" TransformationClaimType="outputClaim"/>
                </OutputClaims>
            </ClaimsTransformation>

            <ClaimsTransformation Id="CreateMessageTransformation" TransformationMethod="FormatStringClaim">
                <InputClaims>
                    <InputClaim ClaimTypeReferenceId="displayName" TransformationClaimType="inputClaim"/>
                </InputClaims>
                <InputParameters>
                    <InputParameter Id="stringFormat" DataType="string" Value="Hello {0}"/>
                </InputParameters>
                <OutputClaims>
                    <OutputClaim ClaimTypeReferenceId="message" TransformationClaimType="outputClaim"/>
                </OutputClaims>
            </ClaimsTransformation> 
        </ClaimsTransformations>
        <ContentDefinitions>
            <ContentDefinition Id="SelfAssertedContentDefinition">
                <LoadUri>~/tenant/templates/AzureBlue/selfAsserted.cshtml</LoadUri>
                <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
                <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7</DataUri>
            </ContentDefinition>
        </ContentDefinitions>
    </BuildingBlocks>
    <!--Claims Providers Here-->
    <ClaimsProviders>
        <ClaimsProvider>
            <DisplayName>Token Issuer</DisplayName>
            <TechnicalProfiles>
                <TechnicalProfile Id="JwtIssuer">
                    <DisplayName>JWT Issuer</DisplayName>
                    <Protocol Name="None"/>
                    <OutputTokenFormat>JWT</OutputTokenFormat>
                    <Metadata>
                        <Item Key="client_id">{service:te}</Item>
                        <Item Key="issuer_refresh_token_user_identity_claim_type">objectId</Item>
                        <Item Key="SendTokenResponseBodyWithJsonNumbers">true</Item>
                    </Metadata>
                    <CryptographicKeys>
                        <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer"/>
                        <Key Id="issuer_refresh_token_key" StorageReferenceId="B2C_1A_TokenEncryptionKeyContainer"/>
                    </CryptographicKeys>
                </TechnicalProfile>
            </TechnicalProfiles>
        </ClaimsProvider>

        <ClaimsProvider>
            <DisplayName>Trustframework Policy Engine TechnicalProfiles</DisplayName>
            <TechnicalProfiles>
                <TechnicalProfile Id="TpEngine_c3bd4fe2-1775-4013-b91d-35f16d377d13">
                    <DisplayName>Trustframework Policy Engine Default Technical Profile</DisplayName>
                    <Protocol Name="None"/>
                    <Metadata>
                        <Item Key="url">{service:te}</Item>
                    </Metadata>
                </TechnicalProfile>
            </TechnicalProfiles>
        </ClaimsProvider>

        <ClaimsProvider>
            <DisplayName>Claim Generator Technical Profiles</DisplayName>
            <TechnicalProfiles>
                <TechnicalProfile Id="ClaimGenerator">
                    <DisplayName>Generate Object ID, displayName and  message Claims Technical Profile.</DisplayName>
                    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
                    <OutputClaims>
                        <OutputClaim ClaimTypeReferenceId="objectId"/>
                        <OutputClaim ClaimTypeReferenceId="displayName"/>
                        <OutputClaim ClaimTypeReferenceId="message"/>
                    </OutputClaims>
                    <OutputClaimsTransformations>
                        <OutputClaimsTransformation ReferenceId="GenerateRandomObjectIdTransformation"/>
                        <OutputClaimsTransformation ReferenceId="CreateDisplayNameTransformation"/>
                        <OutputClaimsTransformation ReferenceId="CreateMessageTransformation"/>
                    </OutputClaimsTransformations>
                </TechnicalProfile>
            </TechnicalProfiles>            
        </ClaimsProvider>

        <ClaimsProvider>
            <DisplayName>Technical Profiles to collect user's details</DisplayName>
            <TechnicalProfiles>
                <TechnicalProfile Id="UserInformationCollector">
                    <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="givenName" Required="true"/>
                        <DisplayClaim ClaimTypeReferenceId="surname" Required="true"/>
                    </DisplayClaims>
                    <OutputClaims>
                        <OutputClaim ClaimTypeReferenceId="givenName"/>
                        <OutputClaim ClaimTypeReferenceId="surname"/>
                    </OutputClaims>
                </TechnicalProfile>
            </TechnicalProfiles>
        </ClaimsProvider>
    </ClaimsProviders>

    <UserJourneys>
        <UserJourney Id="HelloWorldJourney">
            <OrchestrationSteps>
                <OrchestrationStep Order="1" Type="ClaimsExchange">
                    <ClaimsExchanges>
                        <ClaimsExchange Id="GetUserInformationClaimsExchange" TechnicalProfileReferenceId="UserInformationCollector"/>
                    </ClaimsExchanges>
                </OrchestrationStep>
                <OrchestrationStep Order="2" Type="ClaimsExchange">
                    <ClaimsExchanges>
                        <ClaimsExchange Id="GetMessageClaimsExchange" TechnicalProfileReferenceId="ClaimGenerator"/>
                    </ClaimsExchanges>
                </OrchestrationStep>
                <OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer"/>
            </OrchestrationSteps>
        </UserJourney>
    </UserJourneys>

    <RelyingParty><!-- 
            Relying Party Here that's your policy’s entry point
            Specify the User Journey to execute 
            Specify the claims to include in the token that is returned when the policy runs
        -->
        <DefaultUserJourney ReferenceId="HelloWorldJourney"/>
        <TechnicalProfile Id="HelloWorldPolicyProfile">
            <DisplayName>Hello World Policy Profile</DisplayName>
            <Protocol Name="OpenIdConnect"/>
            <OutputClaims>
                <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
                <OutputClaim ClaimTypeReferenceId="displayName"/>
                <OutputClaim ClaimTypeReferenceId="message"/>
            </OutputClaims>
            <SubjectNamingInfo ClaimType="sub"/>
        </TechnicalProfile>
    </RelyingParty>
</TrustFrameworkPolicy>

Henüz yapmadıysanız, değerini kiracı adınızın alt etki alanı bölümüyle (gibi) contosodeğiştirinyourtenant. Kiracı adınızı alma hakkında bilgi edinin.

3. Adım - Özel ilke dosyasını karşıya yükleme

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

4. Adım - Özel ilkeyi test edin

  1. Özel ilkeler'in altında B2C_1A_CONTOSOCUSTOMPOLICY'ı seçin.

  2. Özel ilkenin genel bakış sayfasında Uygulamayı seçin için daha önce kaydettiğiniz webapp1 gibi web uygulamasını seçin. Yanıt URL'si seç değerinin olarak ayarlandığındanhttps://jwt.ms emin olun.

  3. Şimdi çalıştır düğmesini seçin.

  4. Verilen Ad ve Soyadı girin ve Devam'ı seçin.

    screenshot of accepting user inputs in custom policy.

İlke yürütmeyi tamamladıktan sonra adresine yönlendirilirsiniz https://jwt.msve kodu çözülen bir JWT belirteci görürsünüz. Aşağıdaki JWT belirteci kod parçacığına benzer:

    {
      "typ": "JWT",
      "alg": "RS256",
      "kid": "pxLOMWFg...."
    }.{
      ...
      "sub": "c7ae4515-f7a7....",
      ...
      "acr": "b2c_1a_contosocustompolicy",
      ...
      "name": "Maurice Paulet",
      "message": "Hello Maurice Paulet"
    }.[Signature]

Sonraki adımlar

Ardından şunları öğrenin: