Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
À compter du 1er mai 2025, Azure AD B2C ne sera plus disponible pour les nouveaux clients. Pour plus d’informations, consultez notre FAQ.
Dans votre application, vous pouvez utiliser des flux d’utilisateurs qui permettent aux utilisateurs d’inscrire, de se connecter ou de gérer leur profil. Lorsque les flux utilisateur ne couvrent pas tous vos besoins spécifiques à votre entreprise, vous pouvez utiliser des stratégies personnalisées.
Bien que vous puissiez utiliser le pack de démarrage de stratégie personnalisé prédéfini pour écrire des stratégies personnalisées, il est important de comprendre comment une stratégie personnalisée est générée. Dans cet article, vous allez apprendre à créer votre première stratégie personnalisée à partir de zéro.
Conditions préalables
Si vous n’en avez pas encore, créez un locataire Azure AD B2C lié à votre abonnement Azure.
Visual Studio Code (VS Code) doit être installé sur votre ordinateur.
Remarque
Cet article fait partie de la série de guides de création et d’exécution de vos propres stratégies personnalisées dans Azure Active Directory B2C. Nous vous recommandons de commencer cette série à partir du premier article.
Étape 1 : configurer les clés de signature et de chiffrement
Si ce n’est déjà fait, créez les clés de chiffrement suivantes. Pour automatiser la procédure pas à pas ci-dessous, consultez l’application de configuration IEF et suivez les instructions suivantes :
Utilisez les étapes décrites dans Ajouter des clés de signature et de chiffrement pour les applications Identity Experience Framework pour créer la clé de signature.
Utilisez les étapes décrites dans Ajouter des clés de signature et de chiffrement pour les applications Identity Experience Framework pour créer la clé de chiffrement.
Étape 2 : Générer le fichier de stratégie personnalisé
Dans VS Code, créez et ouvrez le fichier
ContosoCustomPolicy.XML
.Dans le
ContosoCustomPolicy.XML
fichier, ajoutez le code suivant :<?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>
Remplacez
yourtenant
par la partie sous-domaine de votre nom de locataire, parcontoso
exemple . Découvrez comment obtenir le nom de votre locataire.Les éléments XML définissent l'élément supérieur de niveau
TrustFrameworkPolicy
d’un fichier de politique comportant son ID de politique et son nom de locataire. L’élément TrustFrameworkPolicy contient d’autres éléments XML que vous utiliserez dans cette série.Pour déclarer une revendication, ajoutez le code suivant dans
BuildingBlocks
la section duContosoCustomPolicy.XML
fichier :<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>
Une assertion est semblable à une variable. La déclaration de la revendication affiche également le type de données de la revendication.
Dans la
ClaimsProviders
section duContosoCustomPolicy.XML
fichier, ajoutez le code suivant :<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>
Nous avons déclaré un émetteur JWT. Dans la
CryptographicKeys
section, si vous avez utilisé différents noms pour configurer les clés de signature et de chiffrement à l’étape 1, veillez à utiliser la valeur correcte pour leStorageReferenceId
.Dans la
UserJourneys
section duContosoCustomPolicy.XML
fichier, ajoutez le code suivant :<UserJourney Id="HelloWorldJourney"> <OrchestrationSteps> <OrchestrationStep Order="1" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" /> </OrchestrationSteps> </UserJourney>
Nous avons ajouté un UserJourney. Le parcours utilisateur spécifie la logique métier que l’utilisateur final passe en tant qu’Azure AD B2C traite une demande. Ce parcours utilisateur n’a qu’une seule étape qui émet un jeton JTW avec les revendications que vous allez définir à l’étape suivante.
Dans la
RelyingParty
section duContosoCustomPolicy.XML
fichier, ajoutez le code suivant :<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>
La section RelyingParty est le point d’entrée de votre stratégie. Il spécifie l’élément UserJourney à exécuter et les revendications à inclure dans le jeton retourné quand la stratégie est exécutée.
Une fois l’étape 2 terminée, le ContosoCustomPolicy.XML
fichier doit ressembler au code suivant :
<?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>
Étape 3 - Charger un fichier de stratégie personnalisé
- Connectez-vous au portail Azure.
- Si vous avez accès à plusieurs tenants (locataires), sélectionnez l’icône Paramètres dans le menu supérieur pour basculer vers votre tenant Azure AD B2C à partir du menu Annuaires + abonnements.
- Dans le portail Azure, recherchez et sélectionnez Azure AD B2C.
- Dans le menu de gauche, sous Stratégies, sélectionnez Identity Experience Framework.
- Sélectionnez Charger une stratégie personnalisée, parcourez et sélectionnez, puis chargez le fichier
ContosoCustomPolicy.XML
.
Une fois que vous avez chargé le fichier, Azure AD B2C ajoute le préfixe B2C_1A_
, de sorte que les noms ressemblent à B2C_1A_CONTOSOCUSTOMPOLICY.
Étape 4 : tester la stratégie personnalisée
- Sous Stratégies personnalisées, sélectionnez B2C_1A_CONTOSOCUSTOMPOLICY.
- Pour Sélectionner une application sur la page vue d’ensemble de la stratégie personnalisée, sélectionnez l’application web telle que webapp1 que vous avez précédemment inscrite. Vérifiez que la valeur Sélectionner l’URL de réponse est définie sur
https://jwt.ms
. - Sélectionnez Le bouton Exécuter maintenant .
Une fois l’exécution de la stratégie terminée, vous êtes redirigé vers https://jwt.ms
, et vous voyez un JWT décodé. Il ressemble à l’extrait de code JWT suivant :
{
"typ": "JWT",
"alg": "RS256",
"kid": "pxLOMWFg...."
}.{
...
"sub": "abcd-1234-efgh-5678-ijkl-etc.",
...
"acr": "b2c_1a_contosocustompolicy",
...
"message": "Hello World!"
}.[Signature]
Notez les revendications message
et sub
, que nous définissons comme revendications de sortie dans la section RelyingParty
.
Contenu connexe
Dans cet article, vous avez appris et utilisé quatre sections incluses dans une stratégie personnalisée Azure AD B2C. Ces sections sont ajoutées comme éléments enfants de l’élément racine TrustFrameworkPolicy
:
- BuildingBlocks
- FournisseursDeRéclamations
- UserJourneys
- Parti Contributeur
Découvrez ensuite :
Comment collecter et utiliser des entrées utilisateur à l’aide d’une stratégie personnalisée.
La vue d’ensemble des revendications d’une stratégie personnalisée
Comment déclarer une revendication de stratégie personnalisée.
Le type de données des revendications d’une stratégie personnalisée
Les types d’entrée utilisateur d’une stratégie personnalisée