Share via


Schrijf uw eerste aangepaste Azure Active Directory B2C-beleid - Hallo wereld!

In uw toepassing kunt u gebruikersstromen gebruiken waarmee gebruikers zich kunnen registreren, aanmelden of hun profiel kunnen beheren. Wanneer gebruikersstromen niet voldoen aan al uw zakelijke specifieke behoeften, kunt u aangepaste beleidsregels gebruiken.

Hoewel u vooraf gemaakte aangepaste beleidsstartpakketten kunt gebruiken om aangepaste beleidsregels te schrijven, is het belangrijk dat u begrijpt hoe een aangepast beleid wordt gebouwd. In dit artikel leert u hoe u uw eerste aangepaste beleid helemaal zelf maakt.

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: de ondertekenings- en versleutelingssleutels configureren

Als u dit nog niet hebt gedaan, maakt u de volgende versleutelingssleutels. Als u het onderstaande overzicht wilt automatiseren, gaat u naar de IEF-installatie-app en volgt u de instructies:

  1. Gebruik de stappen in Ondertekenings- en versleutelingssleutels toevoegen voor Identity Experience Framework-toepassingen om de ondertekeningssleutel te maken.

  2. Gebruik de stappen in Ondertekenings- en versleutelingssleutels toevoegen voor Identity Experience Framework-toepassingen om de versleutelingssleutel te maken.

Stap 2: het aangepaste beleidsbestand maken

  1. Maak en open het bestand ContosoCustomPolicy.XMLin VS Code.

  2. Voeg in het bestand ContosoCustomPolicy.XML de volgende code toe:

        <?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>
                <!-- Building Blocks Here-->
            </BuildingBlocks>
    
            <ClaimsProviders>
                <!-- Claims Providers Here-->
            </ClaimsProviders>
    
            <UserJourneys>
                <!-- User Journeys Here-->
            </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
                -->
            </RelyingParty>
        </TrustFrameworkPolicy>
    
    

    Vervang yourtenant door het subdomeingedeelte van uw tenantnaam, zoals contoso. Meer informatie over het ophalen van uw tenantnaam.

    De XML-elementen definiëren het element op het hoogste niveau TrustFrameworkPolicy van een beleidsbestand met de beleids-id en de naam van de tenant. Het Element TrustFrameworkPolicy bevat andere XML-elementen die u in deze reeks gaat gebruiken.

  3. Als u een claim wilt declareren, voegt u de volgende code toe in BuildingBlocks de sectie van het ContosoCustomPolicy.XML bestand:

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

    Een claim is als een variabele. De declaratie van de claim toont ook het gegevenstype van de claim.

  4. Voeg in de ClaimsProviders sectie van het ContosoCustomPolicy.XML bestand de volgende code toe:

        <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>
          <!-- The technical profile(s) defined in this section is required by the framework to be included in all custom policies. -->
          <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>
    

    We hebben een JWT-tokenverlener gedeclareerd. Als u in stap CryptographicKeys 1 verschillende namen hebt gebruikt om de ondertekenings- en versleutelingssleutels te configureren, controleert u of u de juiste waarde voor de StorageReferenceId.

  5. Voeg in de UserJourneys sectie van het ContosoCustomPolicy.XML bestand de volgende code toe:

      <UserJourney Id="HelloWorldJourney">
        <OrchestrationSteps>
          <OrchestrationStep Order="1" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
        </OrchestrationSteps>
      </UserJourney>
    

    We hebben een UserJourney toegevoegd. Het gebruikerstraject specificeert de bedrijfslogica die de eindgebruiker doorloopt als Azure AD B2C een aanvraag verwerkt. Deze gebruikersbeleving heeft slechts één stap die een JTW-token uitgeeft met de claims die u in de volgende stap definieert.

  6. Voeg in de RelyingParty sectie van het ContosoCustomPolicy.XML bestand de volgende code toe:

      <DefaultUserJourney ReferenceId="HelloWorldJourney"/>
      <TechnicalProfile Id="HelloWorldPolicyProfile">
        <DisplayName>Hello World Policy Profile</DisplayName>
        <Protocol Name="OpenIdConnect" />
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" DefaultValue="abcd-1234-efgh-5678-ijkl-etc."/>
          <OutputClaim ClaimTypeReferenceId="message" DefaultValue="Hello World!"/>
        </OutputClaims>
        <SubjectNamingInfo ClaimType="sub" />
      </TechnicalProfile>
    

    De sectie RelyingParty is het toegangspunt voor uw beleid. Hiermee geeft u de UserJourney op die moet worden uitgevoerd en de claims die moeten worden opgenomen in het token dat wordt geretourneerd wanneer het beleid wordt uitgevoerd.

Nadat u stap 2 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="Contosob2c2233.onmicrosoft.com" PolicyId="B2C_1A_ContosoCustomPolicy" PublicPolicyUri="http://Contosob2c2233.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>
            </ClaimsSchema>
        </BuildingBlocks>
        <ClaimsProviders><!--Claims Providers Here-->
            <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>
        </ClaimsProviders>
      <UserJourneys>
        <UserJourney Id="HelloWorldJourney">
          <OrchestrationSteps>
            <OrchestrationStep Order="1" 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" DefaultValue="abcd-1234-efgh-5678-ijkl-etc."/>
                    <OutputClaim ClaimTypeReferenceId="message" DefaultValue="Hello World!"/>
                </OutputClaims>
                <SubjectNamingInfo ClaimType="sub"/>
            </TechnicalProfile>
        </RelyingParty>
    </TrustFrameworkPolicy>

Stap 3: Aangepast beleidsbestand uploaden

  1. Meld u aan bij de Azure-portal.
  2. Als u toegang hebt tot meerdere tenants, selecteert u het pictogram Instellingen in het bovenste menu om over te schakelen naar uw Azure AD B2C-tenant in het menu Mappen en abonnementen.
  3. Zoek en selecteer Azure AD B2C in de Azure-portal.
  4. Selecteer in het linkermenu onder Beleid de optie Identity Experience Framework.
  5. Selecteer Aangepast beleid uploaden, blader en upload het ContosoCustomPolicy.XML bestand.

Nadat u het bestand hebt geüpload, voegt Azure AD B2C het voorvoegsel B2C_1A_toe, zodat de namen er ongeveer uitzien als B2C_1A_CONTOSOCUSTOMPOLICY.

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.

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": "abcd-1234-efgh-5678-ijkl-etc.",
      ...
      "acr": "b2c_1a_contosocustompolicy",
      ...
      "message": "Hello World!"
    }.[Signature]

Let op de message en sub claims, die we instellen als uitvoerclaims in de RelyingParty sectie.

Volgende stappen

In dit artikel hebt u vier secties geleerd en gebruikt die zijn opgenomen in een aangepast Azure AD B2C-beleid. Deze secties worden toegevoegd als onderliggende elementen het TrustFrameworkPolicy hoofdelement:

  • BuildingBlocks
  • ClaimsProviders
  • UserJourneys
  • RelyingParty

Vervolgens leert u: