Udostępnij za pośrednictwem


Zbieranie danych wejściowych użytkowników i manipulowanie nimi przy użyciu niestandardowych zasad usługi Azure Active Directory B2C

Zasady niestandardowe usługi Azure Active Directory B2C (Azure AD B2C) umożliwiają zbieranie danych wejściowych użytkownika. Następnie można użyć wbudowanych metod do manipulowania danymi wejściowymi użytkownika.

Z tego artykułu dowiesz się, jak napisać zasady niestandardowe, które zbierają dane wejściowe użytkownika za pośrednictwem graficznego interfejsu użytkownika. Następnie uzyskasz dostęp do danych wejściowych, przetworzysz je, a następnie zwrócisz je jako oświadczenia w tokenie JWT. Aby wykonać to zadanie, wykonasz następujące czynności:

  • Deklarowanie oświadczeń. Oświadczenie zapewnia tymczasowe przechowywanie danych podczas wykonywania zasad usługi Azure AD B2C. Może przechowywać informacje o użytkowniku, takie jak imię, nazwisko lub inne oświadczenie uzyskane od użytkownika lub innych systemów. Więcej informacji na temat oświadczeń można uzyskać w temacie Omówienie zasad niestandardowych usługi Azure AD B2C.

  • Definiowanie profilów technicznych. Profil techniczny udostępnia interfejs do komunikowania się z różnymi typami stron. Na przykład umożliwia interakcję z użytkownikiem w celu zbierania danych.

  • Skonfiguruj przekształcenia oświadczeń, których używasz do manipulowania zadeklarowanych oświadczeń.

  • Konfigurowanie definicji zawartości. Definicja zawartości definiuje interfejs użytkownika do załadowania. Później możesz dostosować interfejs użytkownika, podając własną dostosowaną zawartość HTML.

  • Skonfiguruj i pokaż interfejsy użytkownika użytkownikowi przy użyciu profilów technicznych asertoryzowanych i displayClaims.

  • Wywoływanie profilów technicznych w danej sekwencji przy użyciu kroków orkiestracji.

Wymagania wstępne

Uwaga

Ten artykuł jest częścią serii Instrukcje tworzenia i uruchamiania własnych zasad niestandardowych w usłudze Azure Active Directory B2C. Zalecamy rozpoczęcie tej serii od pierwszego artykułu.

Krok 1. Deklarowanie oświadczeń

Zadeklaruj dodatkowe oświadczenia obok identyfikatora objectId i komunikatu:

  1. W programie VS Code otwórz ContosoCustomPolicy.XML plik.

  2. ClaimsSchema W sekcji dodaj następujące deklaracje 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>
    

Zadeklarowaliśmy trzy typy oświadczeń, givenName, nazwisko i displayName. Te deklaracje obejmują DataTypeelementy , UserInputType i DisplayName :

  • DataType określa typ danych wartości przechowywanej przez oświadczenia. Dowiedz się więcej o typach danych, które obsługują elementy DataType.
  • UserInputType określa kontrolkę interfejsu użytkownika wyświetlaną w interfejsie użytkownika, jeśli chcesz zebrać wartość oświadczenia od użytkownika. Dowiedz się więcej o typach danych wejściowych użytkownika , które obsługuje usługa Azure AD B2C.
  • DisplayName określa etykietę kontrolki interfejsu użytkownika wyświetlaną w interfejsie użytkownika, jeśli chcesz zebrać wartość oświadczenia od użytkownika.

Krok 2. Definiowanie przekształceń oświadczeń

Funkcja ClaimsTransformation zawiera funkcję używaną do konwertowania danego oświadczenia na inną. Na przykład można zmienić oświadczenie ciągu z małych liter na wielkie litery. Dowiedz się więcej o przekształceniach oświadczeń obsługiwanych przez usługę Azure AD B2C.

  1. ContosoCustomPolicy.XML W pliku dodaj <ClaimsTransformations> element jako element podrzędny BuildingBlocks sekcji.

        <ClaimsTransformations>
    
        </ClaimsTransformations>
    
  2. Dodaj następujący kod wewnątrz ClaimsTransformations elementu:

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

    Skonfigurowaliśmy trzy przekształcenia oświadczeń:

    • GenerateRandomObjectIdTransformation generuje losowy ciąg określony przez metodę CreateRandomString . Oświadczenie objectId jest aktualizowane przy użyciu wygenerowanego ciągu określonego OutputClaim przez element.

    • CreateDisplayNameTransformation łączy daną Nazwę i nazwisko w celu utworzenia nazwy displayName.

    • Funkcja CreateMessageTransformation łączy wartość Hello i displayName w celu utworzenia wiadomości.

Krok 3. Konfigurowanie definicji zawartości

ContentDefinitions umożliwia określenie adresu URL szablonów HTML, które kontrolują układ stron internetowych, które są wyświetlane użytkownikom. Można określić określone interfejsy użytkownika dla każdego kroku, takie jak logowanie lub rejestracja, resetowanie hasła lub strony błędów.

Aby dodać definicję zawartości, dodaj następujący kod w BuildingBlocks sekcji ContosoCustomPolicy.XML pliku:

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

Krok 4. Konfigurowanie profilów technicznych

W zasadach niestandardowych element TechnicalProfile jest elementem implementujący funkcje. Po zdefiniowaniu przekształceń oświadczeń i oświadczeń potrzebne są profile techniczne do wykonania definicji. Profil techniczny jest zadeklarowany wewnątrz ClaimsProvider elementów.

Usługa Azure AD B2C udostępnia zestaw profilów technicznych. Każdy profil techniczny pełni określoną rolę. Na przykład używasz profilu technicznego REST, aby wykonać wywołanie HTTP do punktu końcowego usługi. Możesz użyć profilu technicznego przekształcania oświadczeń, aby wykonać operację zdefiniowaną w transformacji oświadczeń. Dowiedz się więcej o typach profilów technicznych zapewnianych przez zasady niestandardowe usługi Azure AD B2C.

Ustawianie wartości dla oświadczeń

Aby ustawić wartości dla identyfikatorów objectId, displayName i oświadczeń komunikatów, należy skonfigurować profil techniczny, który wykonuje przekształcenia oświadczeń GenerateRandomObjectIdTransformation, CreateDisplayNameTransformation i CreateMessageTransformation. Przekształcenia oświadczeń są wykonywane przez kolejność zdefiniowaną w elemecie OutputClaimsTransformations . Na przykład najpierw tworzy nazwę wyświetlaną, a następnie komunikat.

  1. Dodaj następujące ClaimsProvider elementy jako element podrzędny ClaimsProviders sekcji.

        <ClaimsProvider>
    
            <DisplayName>Technical Profiles to generate claims</DisplayName>
        </ClaimsProvider>
    
    
  2. Aby ustawić wartości dla objectId, displayName i oświadczenia komunikatów, dodaj następujący kod wewnątrz właśnie utworzonego ClaimsProvider elementu:

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

Zbieranie danych wejściowych użytkownika

Wygenerujesz oświadczenie displayName z elementu givenName i nazwiska, więc musisz zebrać je jako dane wejściowe użytkownika. Aby zebrać dane wejściowe użytkownika, należy użyć typu profilu technicznego o nazwie Self-Asserted. Podczas konfigurowania własnego profilu technicznego należy odwołać się do definicji zawartości, ponieważ własny profil techniczny jest odpowiedzialny za wyświetlanie interfejsu użytkownika.

  1. Dodaj następujące ClaimsProvider elementy jako element podrzędny ClaimsProviders sekcji.

        <ClaimsProvider>
    
            <DisplayName>Technical Profiles to collect user's details </DisplayName>
        </ClaimsProvider>
    
  2. Dodaj następujący kod wewnątrz właśnie utworzonego ClaimsProvider elementu:

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

    Zwróć uwagę na dwa oświadczenia wyświetlane dla danegoName i oświadczenia nazwiska . Oba oświadczenia są oznaczone jako wymagane, dlatego użytkownik musi wprowadzić wartości przed przesłaniem wyświetlonego formularza. Oświadczenia są wyświetlane na ekranie w kolejności zdefiniowanej w elemecie DisplayClaims , takim jak Imię i Nazwisko.

Krok 5. Definiowanie podróży użytkowników

Podróże użytkowników służą do definiowania kolejności wywoływanej profilów technicznych. Element służy OrchestrationSteps do określania kroków w podróży użytkownika.

Zastąp istniejącą zawartość podróży HelloWorldJourney użytkownika następującym kodem:

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

Zgodnie z krokami aranżacji zbieramy dane wejściowe użytkownika, ustawiamy wartości objectId, displayName i message claims, a na koniec wysyłamy token Jwt.

Krok 6. Aktualizowanie jednostki uzależnionej

Zastąp zawartość OutputClaims elementu RelyingParty sekcji następującym kodem:

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

Po wykonaniu kroku 6ContosoCustomPolicy.XML plik powinien wyglądać podobnie do następującego kodu:

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

Jeśli jeszcze tego nie zrobiono, zastąp ciąg yourtenant częścią poddomeny nazwy dzierżawy, taką jak contoso. Dowiedz się, jak uzyskać nazwę dzierżawy.

Krok 3. Przekazywanie pliku zasad niestandardowych

Wykonaj kroki opisane w temacie Przekazywanie pliku zasad niestandardowych. Jeśli przekazujesz plik o tej samej nazwie co plik już w portalu, upewnij się, że wybierzesz pozycję Zastąp zasady niestandardowe, jeśli już istnieje.

Krok 4. Testowanie zasad niestandardowych

  1. W obszarze Zasady niestandardowe wybierz pozycję B2C_1A_CONTOSOCUSTOMPOLICY.

  2. W obszarze Wybierz aplikację na stronie przeglądu zasad niestandardowych wybierz aplikację internetową, taką jak aplikacja internetowa1 , która została wcześniej zarejestrowana. Upewnij się, że ustawionohttps://jwt.ms wartość Wybierz adres URL odpowiedzi.

  3. Wybierz przycisk Uruchom teraz .

  4. Wprowadź imię i nazwisko, a następnie wybierz pozycję Kontynuuj.

    screenshot of accepting user inputs in custom policy.

Po zakończeniu wykonywania zasad nastąpi przekierowanie do https://jwt.mselementu i zostanie wyświetlony zdekodowany token JWT. Wygląda podobnie do następującego fragmentu kodu tokenu JWT:

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

Następne kroki

Następnie dowiedz się: