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
Als u er nog geen hebt, maakt u een Azure AD B2C-tenant die is gekoppeld aan uw Azure-abonnement.
Registreer een webtoepassing en schakel impliciete toekenning van id-token in. Gebruik voor de omleidings-URI https://jwt.ms.
Visual Studio Code (VS Code) moet op uw computer zijn geïnstalleerd.
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:
Gebruik de stappen in Ondertekenings- en versleutelingssleutels toevoegen voor Identity Experience Framework-toepassingen om de ondertekeningssleutel te maken.
Gebruik de stappen in Ondertekenings- en versleutelingssleutels toevoegen voor Identity Experience Framework-toepassingen om de versleutelingssleutel te maken.
Stap 2: het aangepaste beleidsbestand maken
Maak en open het bestand
ContosoCustomPolicy.XML
in VS Code.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, zoalscontoso
. 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.Als u een claim wilt declareren, voegt u de volgende code toe in
BuildingBlocks
de sectie van hetContosoCustomPolicy.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.
Voeg in de
ClaimsProviders
sectie van hetContosoCustomPolicy.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 deStorageReferenceId
.Voeg in de
UserJourneys
sectie van hetContosoCustomPolicy.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.
Voeg in de
RelyingParty
sectie van hetContosoCustomPolicy.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
- Meld u aan bij de Azure-portal.
- 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.
- Zoek en selecteer Azure AD B2C in de Azure-portal.
- Selecteer in het linkermenu onder Beleid de optie Identity Experience Framework.
- 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
- Selecteer onder Aangepast beleid B2C_1A_CONTOSOCUSTOMPOLICY.
- 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 op
https://jwt.ms
. - Knop Nu uitvoeren selecteren.
Nadat het beleid is uitgevoerd, wordt u omgeleid naar https://jwt.ms
en 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:
Gebruikersinvoer verzamelen en gebruiken met behulp van aangepast beleid.
Een aangepaste beleidsclaim declareren.
Informatie over het gegevenstype voor aangepaste beleidsclaims.
Over aangepaste gebruikersinvoertypen voor beleid.