Over claim-resolvers in aangepast azure Active Directory B2C-beleid
Claim-resolvers in aangepaste beleidsregels van Azure Active Directory B2C (Azure AD B2C) bieden contextinformatie over een autorisatieaanvraag, zoals de beleidsnaam, aanvraagcorrelatie-id, taal van de gebruikersinterface en meer.
Als u een claim-resolver wilt gebruiken in een invoer- of uitvoerclaim, definieert u een tekenreeks ClaimType, onder het element ClaimsSchema , en stelt u vervolgens de DefaultValue in op de claim-resolver in het element invoer- of uitvoerclaim. Azure AD B2C leest de waarde van de claim-resolver en gebruikt de waarde in het technische profiel.
In het volgende voorbeeld wordt een claimtype met de naam correlationId
gedefinieerd met een DataType van string
.
<ClaimType Id="correlationId">
<DisplayName>correlationId</DisplayName>
<DataType>string</DataType>
<UserHelpText>Request correlation Id</UserHelpText>
</ClaimType>
Wijs in het technische profiel de claim-resolver toe aan het claimtype. Azure AD B2C vult de waarde van de claim-resolver {Context:CorrelationId}
in de claim correlationId
en verzendt de claim naar het technische profiel.
<InputClaim ClaimTypeReferenceId="correlationId" DefaultValue="{Context:CorrelationId}" />
Cultuur
De volgende tabel bevat de claim-resolvers met informatie over de taal die in de autorisatieaanvraag wordt gebruikt:
Claimen | Beschrijving | Voorbeeld |
---|---|---|
{Culture:LanguageName} | De ISO-code van twee letters voor de taal. | en |
{Cultuur:LCID} | De LCID van taalcode. | 1033 |
{Culture:RegionName} | De ISO-code van twee letters voor de regio. | VS |
{Cultuur:RFC5646} | De RFC5646 taalcode. | nl |
Bekijk de Live-demo van de cultuur claim resolvers.
Beleid
De volgende tabel bevat de claim-resolvers met informatie over het beleid dat in de autorisatieaanvraag wordt gebruikt:
Claimen | Beschrijving | Voorbeeld |
---|---|---|
{Policy:PolicyId} | De naam van het relying party-beleid. | B2C_1A_signup_signin |
{Policy:RelyingPartyTenantId} | De tenant-id van het Relying Party-beleid. | your-tenant.onmicrosoft.com |
{Policy:TenantObjectId} | De tenantobject-id van het relying party-beleid. | 00000000-0000-0000-0000-000000000000 |
{Policy:TrustFrameworkTenantId} | De tenant-id van het vertrouwensframework. | your-tenant.onmicrosoft.com |
Bekijk de Live-demo van de claimomzettingsprogramma's van het beleid.
Context
De volgende tabel bevat de contextuele claim resolvers van de autorisatieaanvraag:
Claimen | Beschrijving | Voorbeeld |
---|---|---|
{Context:BuildNumber} | De versie van Identity Experience Framework (buildnummer). | 1.0.507.0 |
{Context:CorrelationId} | De correlatie-id. | 00000000-0000-0000-0000-000000000000 |
{Context:DateTimeInUtc} | De datum/tijd in UTC. | 10-10-2021 12:00:00 uur |
{Context:DeploymentMode} | De beleidsimplementatiemodus. | Productie |
{Context:HostName} | De hostnaam van de huidige aanvraag. | contoso.b2clogin.com |
{Context:IPAddress} | Het IP-adres van de gebruiker. | 11.111.111.11 |
{Context:KMSI} | Hiermee wordt aangegeven of het selectievakje Aangemeld blijven is ingeschakeld. | true |
Bekijk de livedemo van de contextclaim-resolvers.
Claims
In deze sectie wordt beschreven hoe u een claimwaarde kunt ophalen als claim-resolver.
Claimen | Beschrijving | Voorbeeld |
---|---|---|
{Claim:claimtype} | Een id van een claimtype dat al is gedefinieerd in de sectie ClaimsSchema in het beleidsbestand of het bovenliggende beleidsbestand. Bijvoorbeeld: {Claim:displayName} , of {Claim:objectId} . |
Een claimtypewaarde. |
OpenID Connect
De volgende tabel bevat de claim resolvers met informatie over de OpenID Connect-autorisatieaanvraag:
Claimen | Beschrijving | Voorbeeld |
---|---|---|
{OIDC:AuthenticationContextReferences} | De acr_values queryreeksparameter. |
N.v.t. |
{OIDC:ClientId} | De client_id queryreeksparameter. |
00000000-0000-0000-0000-000000000000 |
{OIDC:DomainHint} | De domain_hint queryreeksparameter. |
facebook.com |
{OIDC:LoginHint} | De login_hint queryreeksparameter. |
someone@contoso.com |
{OIDC:MaxAge} | De max_age . |
N.v.t. |
{OIDC:Nonce} | De Nonce queryreeksparameter. |
defaultNonce |
{OIDC:Password} | De wachtwoordreferenties van de resource-eigenaar stromen het wachtwoord van de gebruiker. | wachtwoord1 |
{OIDC:Prompt} | De prompt queryreeksparameter. |
aanmelding |
{OIDC:RedirectUri} | De redirect_uri queryreeksparameter. |
https://jwt.ms |
{OIDC:Resource} | De resource queryreeksparameter. |
N.v.t. |
{OIDC:Scope} | De scope queryreeksparameter. |
openid |
{OIDC:Username} | De gebruikersnaam van de gebruiker met wachtwoordreferenties van de resource-eigenaar. | emily@contoso.com |
{OIDC:IdToken} | De id token queryreeksparameter. |
N.v.t. |
Bekijk de livedemo van de OpenID Connect-claimomzettingsprogramma's.
OAuth2-sleutelwaardeparameters
Elke parameternaam die is opgenomen als onderdeel van een OIDC- of OAuth2-aanvraag, kan worden toegewezen aan een claim in het gebruikerstraject. De aanvraag van de toepassing kan bijvoorbeeld een querytekenreeksparameter met een naam of app_session
loyalty_number
een aangepaste querytekenreeks bevatten.
Claimen | Beschrijving | Voorbeeld |
---|---|---|
{OAUTH-KV:campaignId} | Een queryreeksparameter. | Hawaii |
{OAUTH-KV:app_session} | Een queryreeksparameter. | A3C5R |
{OAUTH-KV:loyalty_number} | Een queryreeksparameter. | 1234 |
{OAUTH-KV:any custom query string} | Een queryreeksparameter. | N.v.t. |
PARAMETERS voor SAML-sleutelwaarde
In een SAML-verificatieaanvraag kan elke parameternaam die is opgenomen in de aanvraag, maar niet specifiek is voor het protocol (zoals SAMLRequest) worden toegewezen aan een claim in het gebruikerstraject. De aanvraag kan bijvoorbeeld een aangepaste parameter bevatten, zoals username
. Dit geldt voor zowel DOOR SP geïnitieerde als IDP geïnitieerde SAML-aanvragen.
Claimen | Beschrijving | Voorbeeld |
---|---|---|
{SAML-KV:username} | Een querytekenreeks of POST-hoofdtekstparameter. | username@domain.com |
{SAML-KV:loyalty_number} | Een querytekenreeks of POST-hoofdtekstparameter. | 1234 |
{SAML-KV:any custom query string} | Een querytekenreeks of POST-hoofdtekstparameter. | N.v.t. |
SAML
De volgende tabel bevat de claim-resolvers met informatie over de SAML-autorisatieaanvraag:
Claimen | Beschrijving | Voorbeeld |
---|---|---|
{SAML:AuthnContextClassReferences} | De AuthnContextClassRef elementwaarde uit de SAML-aanvraag. |
urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport |
{SAML:NameIdPolicyFormat} | Het Format kenmerk, van het NameIDPolicy element van de SAML-aanvraag. |
urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress |
{SAML:Issuer} | De SAML-elementwaarde Issuer van de SAML-aanvraag. |
https://contoso.com |
{SAML:AllowCreate} | De AllowCreate kenmerkwaarde, van het NameIDPolicy element van de SAML-aanvraag. |
Waar |
{SAML:ForceAuthn} | De ForceAuthN kenmerkwaarde, van het AuthnRequest element van de SAML-aanvraag. |
Waar |
{SAML:ProviderName} | De ProviderName kenmerkwaarde, van het AuthnRequest element van de SAML-aanvraag. |
Contoso.com |
{SAML:RelayState} | De RelayState queryreeksparameter. |
|
{SAML:Subject} | Het Subject element NameId van de SAML AuthN-aanvraag. |
|
{SAML:Binding} | De ProtocolBinding kenmerkwaarde, van het AuthnRequest element van de SAML-aanvraag. |
urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST |
Bekijk de livedemo van de SAML-claimomzettingsprogramma's.
OAuth2-id-provider
De volgende tabel bevat de claimomzettingen van de OAuth2-id-provider :
Claimen | Beschrijving | Voorbeeld |
---|---|---|
{oauth2:access_token} | Het toegangstoken van de OAuth2-id-provider. Het access_token kenmerk. |
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1Ni... |
{oauth2:token_type} | Het type toegangstoken. Het token_type kenmerk. |
Drager |
{oauth2:expires_in} | De tijdsduur die het toegangstoken in seconden geldig is. Het expires_in kenmerk. Het gegevenstype van de uitvoerclaim moet of int long . |
960000 |
{oauth2:refresh_token} | Het vernieuwingstoken van de OAuth2-id-provider. Het refresh_token kenmerk. |
eyJraWQiOiJacW9pQlp2TW5pYVc2MUY... |
Als u de claim-resolvers van de OAuth2-id-provider wilt gebruiken, stelt u het kenmerk van PartnerClaimType
de uitvoerclaim in op de claimomzettingsfunctie. In het volgende voorbeeld ziet u hoe de claims van de externe id-provider worden get:
<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>
Claim resolvers gebruiken
U kunt claim resolvers gebruiken met de volgende elementen:
Artikel | Element | Instellingen |
---|---|---|
Technisch profiel van Application Insights | InputClaim |
|
Technisch profiel van Microsoft Entra | InputClaim , OutputClaim |
1, 2 |
Technisch OAuth2-profiel | InputClaim , OutputClaim |
1, 2 |
Technisch openID Connect-profiel | InputClaim , OutputClaim |
1, 2 |
Technisch profiel voor claimtransformatie | InputClaim , OutputClaim |
1, 2 |
Technische profiel van RESTful-provider | InputClaim |
1, 2 |
Technisch profiel van SAML-id-provider | OutputClaim |
1, 2 |
Zelf-asserted technisch profiel | InputClaim , OutputClaim |
1, 2 |
ContentDefinition | LoadUri |
|
ContentDefinitionParameters | Parameter |
|
Technical Profile RelyingParty | OutputClaim |
2 |
Instellingen:
- De
IncludeClaimResolvingInClaimsHandling
metagegevens moeten worden ingesteld optrue
. - Het kenmerk
AlwaysUseDefaultValue
invoer- of uitvoerclaims moet worden ingesteld optrue
.
Voorbeelden van claim-resolvers
RESTful technisch profiel
In een RESTful-technisch profiel wilt u mogelijk de gebruikerstaal, beleidsnaam, bereik en client-id verzenden. Op basis van de claims kan de REST API aangepaste bedrijfslogica uitvoeren en indien nodig een gelokaliseerd foutbericht genereren.
In het volgende voorbeeld ziet u een RESTful-technisch profiel met dit scenario:
<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>
Direct aanmelden
Met claim-resolvers kunt u de aanmeldingsnaam vooraf invullen of direct aanmelden bij een specifieke sociale id-provider, zoals Facebook, LinkedIn of een Microsoft-account. Raadpleeg Direct aanmelden met behulp van Azure Active Directory B2C instellen.
Aanpassing van dynamische gebruikersinterface
Met Azure AD B2C kunt u queryreeksparameters doorgeven aan uw eindpunten voor HTML-inhoudsdefinities om de pagina-inhoud dynamisch weer te geven. Met deze functie kunt u bijvoorbeeld de achtergrondafbeelding op de aanmeldings- of aanmeldingspagina van Azure AD B2C wijzigen op basis van een aangepaste parameter die u via uw web- of mobiele toepassing doorgeeft. Zie de gebruikersinterface dynamisch configureren met behulp van aangepaste beleidsregels in Azure Active Directory B2C voor meer informatie. U kunt uw HTML-pagina ook lokaliseren op basis van een taalparameter of u kunt de inhoud wijzigen op basis van de client-id.
In het volgende voorbeeld wordt de queryreeksparameter met de naam campaignId doorgegeven met een waarde van Hawaii
, een taalcode van en-US
en de app die de client-id vertegenwoordigt:
<UserJourneyBehaviors>
<ContentDefinitionParameters>
<Parameter Name="campaignId">{OAUTH-KV:campaignId}</Parameter>
<Parameter Name="language">{Culture:RFC5646}</Parameter>
<Parameter Name="app">{OIDC:ClientId}</Parameter>
</ContentDefinitionParameters>
</UserJourneyBehaviors>
Als gevolg hiervan verzendt Azure AD B2C de bovenstaande parameters naar de HTML-inhoudspagina:
/selfAsserted.aspx?campaignId=hawaii&language=en-US&app=0239a9cc-309c-4d41-87f1-31288feb2e82
Inhoudsdefinitie
In een ContentDefinition LoadUri
kunt u claim-resolvers verzenden om inhoud van verschillende plaatsen op te halen, op basis van de gebruikte parameters.
<ContentDefinition Id="api.signuporsignin">
<LoadUri>https://contoso.blob.core.windows.net/{Culture:LanguageName}/myHTML/unified.html</LoadUri>
...
</ContentDefinition>
Technisch profiel van Application Insights
Met Azure-toepassing Insights en claim resolvers kunt u inzicht krijgen in gebruikersgedrag. In het technische profiel van Application Insights verzendt u invoerclaims die blijven behouden naar Azure-toepassing Insights. Zie Gebruikersgedrag bijhouden in Azure AD B2C-trajecten met behulp van Application Insights voor meer informatie. In het volgende voorbeeld worden de beleids-id, correlatie-id, taal en de client-id verzonden naar Azure-toepassing 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>
Beleid van relying party
In een technisch profiel voor Relying Party-beleid wilt u mogelijk de tenant-id of correlatie-id verzenden naar de relying party-toepassing in de 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>
Volgende stappen
- Meer voorbeelden van claimomzettingen zoeken in de GitHub-opslagplaats van de Azure AD B2C-community