Condividi tramite


Raccogliere e modificare gli input utente usando criteri personalizzati di Azure Active Directory B2C

I criteri personalizzati di Azure Active Directory B2C (Azure AD B2C) consentono di raccogliere input utente. È quindi possibile usare metodi predefiniti per modificare gli input dell'utente.

Questo articolo illustra come scrivere un criterio personalizzato che raccoglie gli input utente tramite un'interfaccia utente grafica. Sarà quindi possibile accedere agli input, elaborare e infine restituirli come attestazioni in un token JWT. Per completare questa attività, è necessario:

  • Dichiarare le attestazioni. Un'attestazione fornisce un'archiviazione temporanea dei dati durante l'esecuzione dei criteri di Azure AD B2C. Può archiviare informazioni sull'utente, ad esempio nome, cognome o qualsiasi altra attestazione ottenuta dall'utente o da altri sistemi. Altre informazioni sulle attestazioni sono disponibili nella panoramica dei criteri personalizzati di Azure AD B2C.

  • Definire i profili tecnici. Un profilo tecnico fornisce un'interfaccia per comunicare con diversi tipi di parti. Ad esempio, consente di interagire con l'utente per raccogliere i dati.

  • Configurare le trasformazioni delle attestazioni, usate per modificare le attestazioni dichiarate.

  • Configurare le definizioni di contenuto. Una definizione di contenuto definisce l'interfaccia utente da caricare. In seguito è possibile personalizzare l'interfaccia utente fornendo contenuto HTML personalizzato.

  • Configurare e visualizzare le interfacce utente per l'utente usando profili tecnici autocertificati e DisplayClaims.

  • Chiamare i profili tecnici in una determinata sequenza usando i passaggi di orchestrazione.

Prerequisiti

Nota

Questo articolo fa parte della serie di procedure Creare ed eseguire criteri personalizzati in Azure Active Directory B2C. È consigliabile iniziare questa serie dal primo articolo.

Passaggio 1- Dichiarare attestazioni

Dichiarare attestazioni aggiuntive insieme a objectId e messaggio:

  1. In VS Code aprire il ContosoCustomPolicy.XML file.

  2. ClaimsSchema Nella sezione aggiungere le dichiarazioni ClaimType seguenti:

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

Sono stati dichiarati tre tipi di attestazione, givenName, cognome e displayName. Queste dichiarazioni includono DataTypegli elementi e UserInputTypeDisplayName :

  • DataType specifica il tipo di dati del valore che le attestazioni contengono. Altre informazioni sui tipi di dati supportati dagli elementi DataType.
  • UserInputType specifica il controllo dell'interfaccia utente visualizzato nell'interfaccia utente se si vuole raccogliere il valore dell'attestazione dall'utente. Altre informazioni sui tipi di input utente supportati da Azure AD B2C.
  • DisplayName specifica l'etichetta per il controllo dell'interfaccia utente visualizzato nell'interfaccia utente se si vuole raccogliere il valore dell'attestazione dall'utente.

Passaggio 2: Definire le trasformazioni delle attestazioni

ClaimsTransformation contiene una funzione usata per convertire una determinata attestazione in un'altra. Ad esempio, è possibile modificare un'attestazione stringa da lettere minuscole a maiuscole. Altre informazioni sulle trasformazioni delle attestazioni supportate da Azure AD B2C.

  1. ContosoCustomPolicy.XML Nel file aggiungere un <ClaimsTransformations> elemento come elemento figlio della BuildingBlocks sezione .

        <ClaimsTransformations>
    
        </ClaimsTransformations>
    
  2. Aggiungere il codice seguente all'interno dell'elemento 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> 
    

    Sono stati configurati tre trasformazioni di attestazioni:

    • GenerateRandomObjectIdTransformation genera una stringa casuale come specificato dal metodo CreateRandomString . L'attestazione objectId viene aggiornata con la stringa generata come specificato dall'elemento OutputClaim .

    • CreateDisplayNameTransformation concatena givenName e cognome per formare displayName.

    • CreateMessageTransformation concatena Hello e displayName per formare il messaggio.

Passaggio 3: Configurare le definizioni di contenuto

ContentDefinitions consente di specificare l'URL dei modelli HTML che controllano il layout delle pagine Web visualizzate agli utenti. È possibile specificare interfacce utente specifiche per ogni passaggio, ad esempio l'accesso o l'iscrizione, la reimpostazione della password o le pagine di errore.

Per aggiungere la definizione del contenuto, aggiungere il codice seguente nella BuildingBlocks sezione del ContosoCustomPolicy.XML file:

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

Passaggio 4: Configurare i profili tecnici

In un criterio personalizzato, technicalProfile è l'elemento che implementa la funzionalità. Dopo aver definito le trasformazioni attestazioni e attestazioni, sono necessari profili tecnici per eseguire le definizioni. Un profilo tecnico viene dichiarato all'interno degli ClaimsProvider elementi.

Azure AD B2C offre un set di profili tecnici. Ogni profilo tecnico svolge un ruolo specifico. Ad esempio, si usa un profilo tecnico REST per effettuare una chiamata HTTP a un endpoint di servizio. È possibile usare un profilo tecnico di trasformazione delle attestazioni per eseguire l'operazione definita in una trasformazione delle attestazioni. Altre informazioni sui tipi di profili tecnici forniti dai criteri personalizzati di Azure AD B2C.

Impostare i valori per le attestazioni

Per impostare i valori per le attestazioni objectId, displayName e message, configurare un profilo tecnico che esegue le trasformazioni delle attestazioni GenerateRandomObjectIdTransformation, CreateDisplayNameTransformation e CreateMessageTransformation. Le trasformazioni delle attestazioni vengono eseguite dall'ordine definito nell'elemento OutputClaimsTransformations . Ad esempio, crea prima il nome visualizzato, quindi il messaggio.

  1. Aggiungere quanto segue ClaimsProvider come elemento figlio della ClaimsProviders sezione .

        <ClaimsProvider>
    
            <DisplayName>Technical Profiles to generate claims</DisplayName>
        </ClaimsProvider>
    
    
  2. Per impostare i valori per le attestazioni objectId, displayName e message , aggiungere il codice seguente all'interno dell'elemento ClaimsProvider appena creato:

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

Raccogliere gli input utente

Si genera l'attestazione displayName da givenName e cognome, quindi è necessario raccogliere quindi come input dell'utente. Per raccogliere un input utente, si usa un tipo di profilo tecnico denominato Autocertificazione. Quando si configura un profilo tecnico autocertivi, è necessario fare riferimento alle definizioni di contenuto come profilo tecnico autocertificato è responsabile della visualizzazione di un'interfaccia utente.

  1. Aggiungere quanto segue ClaimsProvider come elemento figlio della ClaimsProviders sezione .

        <ClaimsProvider>
    
            <DisplayName>Technical Profiles to collect user's details </DisplayName>
        </ClaimsProvider>
    
  2. Aggiungere il codice seguente all'interno dell'elemento ClaimsProvider appena creato:

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

    Si notino le due attestazioni di visualizzazione per le attestazioni givenName e surname . Entrambe le attestazioni sono contrassegnate come necessarie, quindi l'utente deve immettere i valori prima di inviare il modulo visualizzato. Le attestazioni vengono visualizzate sullo schermo nell'ordine definito nell'elemento DisplayClaims , ad esempio Il nome specificato e quindi il cognome.

Passaggio 5- Definire i percorsi utente

Si usano percorsi utente per definire l'ordine in cui vengono chiamati i profili tecnici. Usare l'elemento OrchestrationSteps per specificare i passaggi in un percorso utente.

Sostituire il contenuto esistente del HelloWorldJourney percorso utente con il codice seguente:

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

In base ai passaggi di orchestrazione, vengono raccolti gli input utente, vengono impostati i valori per le attestazioni objectId, displayName e message e infine viene inviato il token Jwt.

Passaggio 6 - Aggiornare la relying party

Sostituire il contenuto dell'elemento OutputClaims della RelyingParty sezione con il codice seguente:

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

Al termine del passaggio 6, il ContosoCustomPolicy.XML file dovrebbe essere simile al codice seguente:

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

Se non è già stato fatto, sostituire yourtenant con la parte del sottodominio del nome del tenant, ad esempio contoso. Informazioni su come ottenere il nome del tenant.

Passaggio 3 - Caricare un file di criteri personalizzato

Seguire la procedura descritta in Caricare un file di criteri personalizzato. Se si carica un file con lo stesso nome di quello già presente nel portale, assicurarsi di selezionare Sovrascrivi il criterio personalizzato, se già esistente.

Passaggio 4- Testare i criteri personalizzati

  1. In Criteri personalizzati selezionare B2C_1A_CONTOSOCUSTOMPOLICY.

  2. Per Selezionare l'applicazione nella pagina di panoramica dei criteri personalizzati, selezionare l'applicazione Web, ad esempio webapp1 registrata in precedenza. Assicurarsi che il valore Select reply URL (Seleziona URL di risposta) sia impostato suhttps://jwt.ms .

  3. Selezionare Il pulsante Esegui adesso .

  4. Immettere Il nome e il cognome specificati e quindi selezionare Continua.

    screenshot of accepting user inputs in custom policy.

Al termine dell'esecuzione del criterio, si viene reindirizzati a https://jwt.mse viene visualizzato un token JWT decodificato. È simile al frammento di token JWT seguente:

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

Passaggi successivi

A questo punto, vedere: