Share via


Gebruikersinvoer verzamelen en bewerken met behulp van aangepast Azure Active Directory B2C-beleid

Met aangepaste beleidsregels voor Azure Active Directory B2C (Azure AD B2C) kunt u gebruikersinvoer verzamelen. Vervolgens kunt u ingebouwde methoden gebruiken om de invoer van de gebruiker te manipuleren.

In dit artikel leert u hoe u een aangepast beleid schrijft waarmee gebruikersinvoer wordt verzameld via een grafische gebruikersinterface. Vervolgens opent u de invoer, verwerkt en retourneert u deze als claims in een JWT-token. Als u deze taak wilt voltooien, gaat u als volgt te werk:

  • Claims declareren. Een claim maakt tijdelijke opslag van gegevens mogelijk tijdens de uitvoering van een Azure AD B2C-beleid. Het kan informatie over de gebruiker opslaan, zoals voornaam, achternaam of een andere claim die is verkregen van de gebruiker of andere systemen. Meer informatie over claims vindt u in het overzicht van aangepast azure AD B2C-beleid.

  • Technische profielen definiëren. Een technisch profiel biedt een interface om te communiceren met verschillende soorten partijen. Hiermee kunt u bijvoorbeeld communiceren met de gebruiker om gegevens te verzamelen.

  • Configureer claimtransformaties die u gebruikt om de claims te bewerken die u declareert.

  • Inhoudsdefinities configureren. Een inhoudsdefinitie definieert de gebruikersinterface die moet worden geladen. Later kunt u de gebruikersinterface aanpassen door uw eigen aangepaste HTML-inhoud op te geven.

  • Configureer en toon gebruikersinterfaces voor de gebruiker met behulp van zelf-asserted technische profielen en DisplayClaims.

  • Roep technische profielen in een bepaalde volgorde aan met behulp van indelingsstappen.

Vereisten

Notitie

Dit artikel maakt deel uit van de reeks instructies voor het maken en uitvoeren van uw eigen aangepaste beleidsregels in Azure Active Directory B2C. We raden u aan deze reeks te starten vanuit het eerste artikel.

Stap 1: Claims declareren

Aanvullende claims declareren naast objectId en bericht:

  1. Open het ContosoCustomPolicy.XML bestand in VS Code.

  2. Voeg in de ClaimsSchema sectie de volgende ClaimType-declaraties toe:

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

We hebben drie claimtypen, givenName, achternaam en displayName gedeclareerd. Deze declaraties omvatten DataType, UserInputType en DisplayName elementen:

  • DataType geeft het gegevenstype op van de waarde die de claims bevatten. Meer informatie over de gegevenstypen die door de DataType-elementen worden ondersteund.
  • UserInputType geeft het ui-besturingselement op dat wordt weergegeven op de gebruikersinterface als u de waarde van de claim van de gebruiker wilt verzamelen. Meer informatie over de gebruikersinvoertypen die door Azure AD B2C worden ondersteund.
  • DisplayName geeft het label op voor het ui-besturingselement dat wordt weergegeven op de gebruikersinterface als u de waarde van de claim van de gebruiker wilt verzamelen.

Stap 2: claimtransformaties definiëren

Een ClaimsTransformation bevat een functie die u gebruikt om een bepaalde claim te converteren naar een andere. U kunt bijvoorbeeld een tekenreeksclaim wijzigen van kleine letters in hoofdletters. Meer informatie over claimtransformaties die worden ondersteund door Azure AD B2C.

  1. Voeg in het ContosoCustomPolicy.XML bestand een <ClaimsTransformations> element toe als onderliggend element van de BuildingBlocks sectie.

        <ClaimsTransformations>
    
        </ClaimsTransformations>
    
  2. Voeg de volgende code toe in het ClaimsTransformations element:

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

    We hebben drie claimtransformaties geconfigureerd:

    • GenerateRandomObjectIdTransformation genereert een willekeurige tekenreeks zoals opgegeven door de methode CreateRandomString . De objectId-claim wordt bijgewerkt met de gegenereerde tekenreeks zoals opgegeven door het OutputClaim element.

    • CreateDisplayNameTransformation voegt givenName en achternaam samen om displayName te vormen.

    • CreateMessageTransformation voegt Hello en displayName samen aan het formulierbericht.

Stap 3: inhoudsdefinities configureren

Met ContentDefinitions kunt u URL's opgeven voor HTML-sjablonen die de indeling van de webpagina's bepalen die u aan uw gebruikers weergeeft. U kunt specifieke gebruikersinterfaces opgeven voor elke stap, zoals aanmelden of registreren, wachtwoordherstel of foutpagina's.

Als u inhoudsdefinitie wilt toevoegen, voegt u de volgende code toe in BuildingBlocks de sectie van het ContosoCustomPolicy.XML bestand:

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

Stap 4: technische profielen configureren

In een aangepast beleid is een TechnicalProfile het element dat functionaliteit implementeert. Nu u claims en claimstransformaties hebt gedefinieerd, hebt u technische profielen nodig om uw definities uit te voeren. Een technisch profiel wordt gedeclareerd binnen de ClaimsProvider elementen.

Azure AD B2C biedt een set technische profielen. Elk technisch profiel voert een specifieke rol uit. U gebruikt bijvoorbeeld een TECHNISCH REST-profiel om een HTTP-aanroep naar een service-eindpunt te maken. U kunt een technisch profiel voor claimtransformatie gebruiken om de bewerking uit te voeren die u in een claimtransformatie definieert. Meer informatie over de typen technische profielen die aangepaste Azure AD B2C-beleidsregels bieden.

Waarden instellen voor uw claims

Als u waarden wilt instellen voor objectId, displayName en berichtclaims, configureert u een technisch profiel waarmee de transformaties GenerateRandomObjectIdTransformation, CreateDisplayNameTransformation en CreateMessageTransformation-claims worden uitgevoerd. De claimtransformaties worden uitgevoerd door de volgorde die in het OutputClaimsTransformations element is gedefinieerd. Er wordt bijvoorbeeld eerst de weergavenaam gemaakt en vervolgens het bericht.

  1. Voeg het volgende ClaimsProvider toe als onderliggend element van de ClaimsProviders sectie.

        <ClaimsProvider>
    
            <DisplayName>Technical Profiles to generate claims</DisplayName>
        </ClaimsProvider>
    
    
  2. Als u waarden wilt instellen voor objectId, displayName en berichtclaims, voegt u de volgende code toe binnen het ClaimsProvider element dat u zojuist hebt gemaakt:

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

Gebruikersinvoer verzamelen

U genereert de displayName-claim van givenName en achternaam, dus u moet deze verzamelen als gebruikersinvoer. Als u een gebruikersinvoer wilt verzamelen, gebruikt u een type technisch profiel met de naam Self-Asserted. Wanneer u een zelf-asserted technisch profiel configureert, moet u verwijzen naar de inhoudsdefinities als zelf-asserted technisch profiel is verantwoordelijk voor het weergeven van een gebruikersinterface.

  1. Voeg het volgende ClaimsProvider toe als onderliggend element van de ClaimsProviders sectie.

        <ClaimsProvider>
    
            <DisplayName>Technical Profiles to collect user's details </DisplayName>
        </ClaimsProvider>
    
  2. Voeg de volgende code toe in het ClaimsProvider element dat u zojuist hebt gemaakt:

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

    Let op de twee weergaveclaims voor de claims givenName en achternaam . Beide claims worden gemarkeerd als vereist, zodat de gebruiker de waarden moet invoeren voordat het formulier wordt weergegeven. De claims worden weergegeven op het scherm in de volgorde die is gedefinieerd in het element DisplayClaims , zoals de opgegeven naam en vervolgens de achternaam.

Stap 5: Gebruikersbelevingen definiëren

U gebruikt gebruikerstrajecten om de volgorde te definiëren waarin de technische profielen worden aangeroepen. U gebruikt het OrchestrationSteps element om de stappen in een gebruikerstraject op te geven.

Vervang de bestaande inhoud van de HelloWorldJourney User Journey door de volgende code:

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

Volgens de indelingsstappen verzamelen we gebruikersinvoer, stellen we waarden in voor objectId, displayName en berichtclaims en verzenden we het Jwt-token.

Stap 6: Relying Party bijwerken

Vervang de inhoud van het OutputClaims element van de RelyingParty sectie door de volgende code:

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

Nadat u stap 6 hebt voltooid, ziet het ContosoCustomPolicy.XML bestand er ongeveer als volgt uit:

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

Als u dit nog niet hebt gedaan, vervangt yourtenant u het subdomeingedeelte van uw tenantnaam, zoals contoso. Meer informatie over het ophalen van uw tenantnaam.

Stap 3: Aangepast beleidsbestand uploaden

Volg de stappen in het bestand Aangepast beleid uploaden. Als u een bestand met dezelfde naam uploadt als het bestand dat zich al in de portal bevindt, moet u het aangepaste beleid overschrijven selecteren als dit al bestaat.

Stap 4: het aangepaste beleid testen

  1. Selecteer onder Aangepast beleid B2C_1A_CONTOSOCUSTOMPOLICY.

  2. Selecteer voor Toepassing selecteren op de overzichtspagina van het aangepaste beleid de webtoepassing, zoals web-app1 die u eerder hebt geregistreerd. Zorg ervoor dat de waarde antwoord-URL selecteren is ingesteld ophttps://jwt.ms.

  3. Knop Nu uitvoeren selecteren.

  4. Voer de opgegeven naam en achternaam in en selecteer Vervolgens Doorgaan.

    screenshot of accepting user inputs in custom policy.

Nadat het beleid is uitgevoerd, wordt u omgeleid naar https://jwt.msen ziet u een gedecodeerd JWT-token. Het lijkt op het volgende JWT-tokenfragment:

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

Volgende stappen

Vervolgens leert u: