À propos des résolveurs de revendication dans les stratégies personnalisées d’Azure Active Directory B2C
Les résolveurs de revendication dans les stratégies personnalisées d’Azure Active Directory B2C (Azure AD B2C) fournissent des informations de contexte sur une demande d’autorisation, telles que le nom de la stratégie, l’ID de corrélation de la demande ou la langue de l’interface utilisateur, entre autres.
Pour utiliser un résolveur de revendication dans une revendication d’entrée ou de sortie, vous définissez une chaîne ClaimType sous l’élément ClaimsSchema, puis vous définissez DefaultValue sur le résolveur de revendication dans l’élément de la revendication d’entrée ou de sortie. Azure AD B2C lit la valeur du résolveur de revendication, puis l’utilise dans le profil technique.
Dans l’exemple suivant, un type de revendication nommé correlationId
est défini avec un DataType de string
.
<ClaimType Id="correlationId">
<DisplayName>correlationId</DisplayName>
<DataType>string</DataType>
<UserHelpText>Request correlation Id</UserHelpText>
</ClaimType>
Dans le profil technique, mappez le résolveur de revendication au type de revendication. Azure AD B2C renseigne la valeur du résolveur de revendication {Context:CorrelationId}
dans la revendication correlationId
et envoie la demande au profil technique.
<InputClaim ClaimTypeReferenceId="correlationId" DefaultValue="{Context:CorrelationId}" />
Culture
Le tableau suivant répertorie les programmes de résolution de revendication avec des informations sur la langue utilisée dans la demande d’autorisation :
Revendication | Description | Exemple |
---|---|---|
{Culture:LanguageName} | Code ISO à deux lettres pour la langue. | en |
{Culture:LCID} | LCID du code de langue | 1033 |
{Culture:RegionName} | Code ISO à deux lettres pour la région. | US |
{Culture:RFC5646} | Code de langue RFC5646. | fr-FR |
Découvrez la démonstration en direct des résolveurs de revendications de culture.
Stratégie
Le tableau suivant répertorie les programmes de résolution de revendication avec des informations sur la stratégie utilisée dans la demande d’autorisation :
Revendication | Description | Exemple |
---|---|---|
{Policy:PolicyId} | Nom de la stratégie de partie de confiance. | B2C_1A_signup_signin |
{Policy:RelyingPartyTenantId} | ID de locataire de la stratégie de partie de confiance. | votre-locataire.onmicrosoft.com |
{Policy:TenantObjectId} | ID d’objet de locataire de la stratégie de partie de confiance. | 00000000-0000-0000-0000-000000000000 |
{Policy:TrustFrameworkTenantId} | ID de locataire de l’infrastructure de confiance. | votre-locataire.onmicrosoft.com |
Découvrez la démonstration en direct des résolveurs de revendications de stratégie.
Context
Le tableau suivant répertorie les programmes de résolution de revendication contextuels de la demande d’autorisation :
Revendication | Description | Exemple |
---|---|---|
{Context:BuildNumber} | Version de l’infrastructure d’expérience d’identité (numéro de build). | 1.0.507.0 |
{Context:CorrelationId} | L’ID de corrélation. | 00000000-0000-0000-0000-000000000000 |
{Context:DateTimeInUtc} | Date et heure UTC. | 10/10/2021 12:00:00 PM |
{Context:DeploymentMode} | Mode de déploiement de la stratégie. | Production |
{Context:HostName} | Nom d’hôte de la requête actuelle. | contoso.b2clogin.com |
{Context:IPAddress} | Adresse IP utilisateur. | 11.111.111.11 |
{Context:KMSI} | Indique si la case Maintenir la connexion est cochée. | true |
Découvrez la démonstration en direct des résolveurs de revendications de contexte.
Revendications
Cette section décrit comment obtenir une valeur de revendication en tant que programme de résolution de revendication.
Revendication | Description | Exemple |
---|---|---|
{Claim:claim type} | Identificateur d’un type de revendication déjà défini dans la section ClaimsSchema du fichier de stratégie ou d’un fichier de stratégie parent. Par exemple : {Claim:displayName} ou {Claim:objectId} . |
Valeur du type de revendication. |
OpenID Connect
Le tableau suivant répertorie les programmes de résolution de revendication avec des informations sur la demande d’autorisation OpenID Connect :
Revendication | Description | Exemple |
---|---|---|
{OIDC:AuthenticationContextReferences} | Paramètre de chaîne de requête acr_values . |
N/A |
{OIDC:ClientId} | Paramètre de chaîne de requête client_id . |
00001111-aaaa-2222-bbbb-3333cccc4444 |
{OIDC:DomainHint} | Paramètre de chaîne de requête domain_hint . |
facebook.com |
{OIDC:LoginHint} | Paramètre de chaîne de requête login_hint . |
someone@contoso.com |
{OIDC:MaxAge} | Le max_age . |
N/A |
{OIDC:Nonce} | Paramètre de chaîne de requête Nonce . |
defaultNonce |
{OIDC:Password} | Mot de passe utilisateur du flux des informations d’identification par mot de passe du propriétaire de ressource. | password1 |
{OIDC:Prompt} | Paramètre de chaîne de requête prompt . |
login |
{OIDC:RedirectUri} | Paramètre de chaîne de requête redirect_uri . |
https://jwt.ms |
{OIDC:Resource} | Paramètre de chaîne de requête resource . |
N/A |
{OIDC:Scope} | Paramètre de chaîne de requête scope . |
openid |
{OIDC:Username} | Nom d’utilisateur de l’utilisateur du flux des informations d’identification par mot de passe du propriétaire de ressource. | emily@contoso.com |
{OIDC :IdToken} | Paramètre de chaîne de requête id token . |
N/A |
Découvrez la démonstration en direct des résolveurs de revendications OpenID Connect.
Paramètres clé-valeur OAuth2
Tous les noms de paramètre inclus dans le cadre d’une requête OIDC ou OAuth2 peuvent être mappés à une revendication dans le parcours utilisateur. Par exemple, la demande de l’application peut inclure un paramètre de chaîne de requête avec le nom app_session
, loyalty_number
ou toute chaîne de requête personnalisée.
Revendication | Description | Exemple |
---|---|---|
{OAUTH-KV:campaignId} | Paramètre de chaîne de requête. | Hawaii |
{OAUTH-KV:app_session} | Paramètre de chaîne de requête. | A3C5R |
{OAUTH-KV:loyalty_number} | Paramètre de chaîne de requête. | 1234 |
{OAUTH-KV : n’importe quelle chaîne de requête personnalisée} | Paramètre de chaîne de requête. | N/A |
Paramètres clé-valeur SAML
Dans une demande d’authentification SAML, tout nom de paramètre inclus dans la requête, mais qui n’est pas spécifique au protocole (par exemple, SAMLRequest) peut être mappé à une revendication dans le parcours utilisateur. Par exemple, la requête peut inclure un paramètre personnalisé tel que username
. Cela s’applique aux requêtes SAML initiées par le fournisseur de services et initiées par le fournisseur d’identité.
Réclamation | Description | Exemple |
---|---|---|
{SAML-KV :username} | Chaîne de requête ou paramètre de corps POST. | username@domain.com |
{SAML-KV :loyalty_number} | Chaîne de requête ou paramètre de corps POST. | 1234 |
{SAML-KV :any custom query string} | Chaîne de requête ou paramètre de corps POST. | N/A |
SAML
Le tableau suivant répertorie les programmes de résolution de revendication avec des informations sur la demande d’autorisation SAML :
Revendication | Description | Exemple |
---|---|---|
{SAML:AuthnContextClassReferences} | Valeur de l'élément AuthnContextClassRef , provenant de la demande SAML. |
urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport |
{SAML:NameIdPolicyFormat} | Attribut Format , provenant de l'élément NameIDPolicy de la demande SAML. |
urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress |
{SAML:Issuer} | Valeur de l'élément Issuer SAML de la demande SAML. |
https://contoso.com |
{SAML:AllowCreate} | Valeur de l'attribut AllowCreate , provenant de l'élément NameIDPolicy de la demande SAML. |
True |
{SAML:ForceAuthn} | Valeur de l'attribut ForceAuthN , provenant de l'élément AuthnRequest de la demande SAML. |
True |
{SAML:ProviderName} | Valeur de l'attribut ProviderName , provenant de l'élément AuthnRequest de la demande SAML. |
Contoso.com |
{SAML:RelayState} | Paramètre de chaîne de requête RelayState . |
|
{SAML:Subject} | Subject de l’élément NameId de la demande SAML AuthN. |
|
{SAML:Binding} | Valeur de l'attribut ProtocolBinding , provenant de l'élément AuthnRequest de la demande SAML. |
urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST |
Découvrez la démonstration en direct des résolveurs de revendications SAML.
Fournisseur d’identité OAuth2
Le tableau suivant répertorie les programmes de résolution de revendication du fournisseur d’identité OAuth2 :
Revendication | Description | Exemple |
---|---|---|
{oauth2:access_token} | Jeton d’accès au fournisseur d’identité OAuth2. Attribut access_token . |
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1Ni... |
{oauth2:token_type} | Type du jeton d’accès. Attribut token_type . |
Porteur |
{oauth2:expires_in} | La durée de validité du jeton d’accès access_token en secondes. Attribut expires_in . Le DataType de la revendication de sortie doit être int ou long . |
960000 |
{oauth2:refresh_token} | Jeton d’actualisation du fournisseur d’identité OAuth2. Attribut refresh_token . |
eyJraWQiOiJacW9pQlp2TW5pYVc2MUY... |
Pour utiliser les programmes de résolution de revendication de fournisseur d’identité OAuth2, définissez l’attribut PartnerClaimType
de la revendication de sortie sur le programme de résolution de revendication. L’exemple suivant montre comment obtenir les revendications du fournisseur d’identité externe :
<ClaimsProvider>
<DisplayName>Contoso</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="Contoso-OAUTH">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="{oauth2:access_token}" />
<OutputClaim ClaimTypeReferenceId="identityProviderAccessTokenType" PartnerClaimType="{oauth2:token_type}" />
<OutputClaim ClaimTypeReferenceId="identityProviderAccessTokenExpiresIn" PartnerClaimType="{oauth2:expires_in}" />
<OutputClaim ClaimTypeReferenceId="identityProviderRefreshToken" PartnerClaimType="{oauth2:refresh_token}" />
</OutputClaims>
...
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
Utilisation de programmes de résolution de revendications
Vous pouvez utiliser des programmes de résolution de revendications avec les éléments suivants :
Élément | Élément | Paramètres |
---|---|---|
Profil technique Application Insights | InputClaim |
|
Profil technique Microsoft Entra | InputClaim , OutputClaim |
1, 2 |
Profil technique OAuth2 | InputClaim , OutputClaim |
1, 2 |
Profil technique OpenID Connect | InputClaim , OutputClaim |
1, 2 |
Profil technique de transformation de revendications | InputClaim , OutputClaim |
1, 2 |
Profil technique du fournisseur RESTful | InputClaim |
1, 2 |
Profil technique du fournisseur d’identité SAML | OutputClaim |
1, 2 |
Profil technique Autodéclaré | InputClaim , OutputClaim |
1, 2 |
ContentDefinition | LoadUri |
|
ContentDefinitionParameters | Parameter |
|
Profil technique RelyingParty | OutputClaim |
2 |
Paramètres :
- Les métadonnées
IncludeClaimResolvingInClaimsHandling
doivent être définies surtrue
. - L'attribut des revendications d'entrée ou de sortie
AlwaysUseDefaultValue
doit être défini surtrue
.
Exemples de programmes de résolution de revendications
Profil technique RESTful
Dans un profil technique RESTful, vous pouvez envoyer la langue de l’utilisateur, le nom de la stratégie, l’étendue et l’ID client. Selon ces revendications, l’API REST peut exécuter une logique métier personnalisée et éventuellement déclencher un message d’erreur localisé.
L'exemple suivant illustre un profil technique RESTful en lien avec ce scénario :
<TechnicalProfile Id="REST">
<DisplayName>Validate user input data and return loyaltyNumber claim</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ServiceUrl">https://your-app.azurewebsites.net/api/identity</Item>
<Item Key="AuthenticationType">None</Item>
<Item Key="SendClaimsIn">Body</Item>
<Item Key="IncludeClaimResolvingInClaimsHandling">true</Item>
</Metadata>
<InputClaims>
<InputClaim ClaimTypeReferenceId="userLanguage" DefaultValue="{Culture:LCID}" AlwaysUseDefaultValue="true" />
<InputClaim ClaimTypeReferenceId="policyName" DefaultValue="{Policy:PolicyId}" AlwaysUseDefaultValue="true" />
<InputClaim ClaimTypeReferenceId="scope" DefaultValue="{OIDC:Scope}" AlwaysUseDefaultValue="true" />
<InputClaim ClaimTypeReferenceId="clientId" DefaultValue="{OIDC:ClientId}" AlwaysUseDefaultValue="true" />
</InputClaims>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>
Connexion directe
À l’aide de résolveurs de revendication, vous pouvez préremplir le nom de connexion ou diriger la connexion vers un fournisseur d’identité sociale spécifique, comme Facebook, LinkedIn ou un compte Microsoft. Pour plus d’informations, consultez Configurer la connexion directe avec Azure Active Directory B2C.
Personnalisation dynamique de l’interface utilisateur
Azure AD B2C vous permet de transmettre des paramètres de chaîne de requête à vos points de terminaison de définition de contenu HTML afin d'afficher dynamiquement le contenu de la page. Par exemple, cette fonctionnalité permet de changer l’image d’arrière-plan sur la page de connexion ou d’inscription Azure AD B2C en fonction d’un paramètre personnalisé que vous transmettez depuis votre application web ou mobile. Pour plus d’informations, consultez Configurer dynamiquement l’interface utilisateur à l’aide de stratégies personnalisées dans Azure Active Directory B2C. Vous pouvez également localiser votre page HTML en fonction d’un paramètre de langue ou changer le contenu selon l’ID client.
L'exemple suivant transmet dans la chaîne de requête les paramètres campaignId (valeur Hawaii
), language (valeur en-US
), et app (représentant l'ID client) :
<UserJourneyBehaviors>
<ContentDefinitionParameters>
<Parameter Name="campaignId">{OAUTH-KV:campaignId}</Parameter>
<Parameter Name="language">{Culture:RFC5646}</Parameter>
<Parameter Name="app">{OIDC:ClientId}</Parameter>
</ContentDefinitionParameters>
</UserJourneyBehaviors>
Ainsi, Azure AD B2C envoie les paramètres ci-dessus à la page de contenu HTML :
/selfAsserted.aspx?campaignId=hawaii&language=en-US&app=0239a9cc-309c-4d41-87f1-31288feb2e82
Définition de contenu
Une définition de contenu (ContentDefinitionLoadUri
) vous permet d'envoyer des programmes de résolution de revendications pour extraire du contenu à partir de différents emplacements, conformément aux paramètres utilisés.
<ContentDefinition Id="api.signuporsignin">
<LoadUri>https://contoso.blob.core.windows.net/{Culture:LanguageName}/myHTML/unified.html</LoadUri>
...
</ContentDefinition>
Profil technique Application Insights
Avec Azure Application Insights et les résolveurs de revendication, vous pouvez obtenir des insights sur le comportement de l’utilisateur. Dans le profil technique Application Insights, vous envoyez des revendications d’entrée qui sont conservées dans Azure Application Insights. Pour plus d’informations, consultez Suivre le comportement des utilisateurs dans les parcours Azure AD B2C à l’aide d’Application Insights. L’exemple suivant envoie l’ID de stratégie, l’ID de corrélation, la langue et l’ID client à Azure Application Insights.
<TechnicalProfile Id="AzureInsights-Common">
<DisplayName>Alternate Email</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.Insights.AzureApplicationInsightsProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
...
<InputClaims>
<InputClaim ClaimTypeReferenceId="PolicyId" PartnerClaimType="{property:Policy}" DefaultValue="{Policy:PolicyId}" />
<InputClaim ClaimTypeReferenceId="CorrelationId" PartnerClaimType="{property:CorrelationId}" DefaultValue="{Context:CorrelationId}" />
<InputClaim ClaimTypeReferenceId="language" PartnerClaimType="{property:language}" DefaultValue="{Culture:RFC5646}" />
<InputClaim ClaimTypeReferenceId="AppId" PartnerClaimType="{property:App}" DefaultValue="{OIDC:ClientId}" />
</InputClaims>
</TechnicalProfile>
Stratégie de partie de confiance
Le profil technique d'une stratégie Partie de confiance vous permet d'envoyer l'ID du locataire ou l'ID de corrélation à l'application par partie de confiance dans le jeton JWT.
<RelyingParty>
<DefaultUserJourney ReferenceId="SignUpOrSignIn" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="OpenIdConnect" />
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="displayName" />
<OutputClaim ClaimTypeReferenceId="givenName" />
<OutputClaim ClaimTypeReferenceId="surname" />
<OutputClaim ClaimTypeReferenceId="email" />
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
<OutputClaim ClaimTypeReferenceId="identityProvider" />
<OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
<OutputClaim ClaimTypeReferenceId="correlationId" AlwaysUseDefaultValue="true" DefaultValue="{Context:CorrelationId}" />
</OutputClaims>
<SubjectNamingInfo ClaimType="sub" />
</TechnicalProfile>
</RelyingParty>
Étapes suivantes
- Vous trouverez d’autres exemples de résolution de revendications dans le dépôt GitHub de la communauté Azure AD B2C