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 Verbinding maken 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 Live-demo van de OpenID Verbinding maken claim-resolvers.

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_sessionloyalty_numbereen 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 intlong. 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
OpenID Verbinding maken technisch 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:

  1. De IncludeClaimResolvingInClaimsHandling metagegevens moeten worden ingesteld op true.
  2. Het kenmerk AlwaysUseDefaultValue invoer- of uitvoerclaims moet worden ingesteld op true.

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-USen 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 ContentDefinitionLoadUri kunt u claim-resolvers verzenden om inhoud van verschillende locaties 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