Om anspråkslösare i anpassade Azure Active Directory B2C-principer

Anspråksmatchare i anpassade Azure Active Directory B2C-principer (Azure AD B2C) ger kontextinformation om en auktoriseringsbegäran, till exempel principnamn, korrelations-ID för begäran, användargränssnittsspråk med mera.

Om du vill använda en anspråkslösare i ett indata- eller utdataanspråk definierar du en sträng ClaimType, under elementet ClaimsSchema , och sedan anger du DefaultValue till anspråkslösaren i indata- eller utdataanspråkelementet. Azure AD B2C läser värdet för anspråkslösaren och använder värdet i den tekniska profilen.

I följande exempel definieras en anspråkstyp med namnet correlationId med datatypen string.

<ClaimType Id="correlationId">
  <DisplayName>correlationId</DisplayName>
  <DataType>string</DataType>
  <UserHelpText>Request correlation Id</UserHelpText>
</ClaimType>

I den tekniska profilen mappar du anspråkslösaren till anspråkstypen. Azure AD B2C fyller värdet för anspråkslösaren {Context:CorrelationId} i anspråket correlationId och skickar anspråket till den tekniska profilen.

<InputClaim ClaimTypeReferenceId="correlationId" DefaultValue="{Context:CorrelationId}" />

Kultur

I följande tabell visas anspråkslösare med information om det språk som används i auktoriseringsbegäran:

Anspråk beskrivning Exempel
{Kultur:LanguageName} Iso-koden med två bokstäver för språket. en
{Kultur:LCID} LCID för språkkod. 1053
{Culture:RegionName} Iso-koden med två bokstäver för regionen. USA
{Kultur:RFC5646} Språkkoden RFC5646. en-US

Kolla in Live-demonstrationen av kulturanspråkslösare.

Policy

I följande tabell visas anspråkslösare med information om principen som används i auktoriseringsbegäran:

Anspråk beskrivning Exempel
{Policy:PolicyId} Namnet på den förlitande partens princip. B2C_1A_signup_signin
{Policy:RelyingPartyTenantId} Klientorganisations-ID:t för den förlitande partens princip. your-tenant.onmicrosoft.com
{Policy:TenantObjectId} Klientobjekt-ID:t för den förlitande partens princip. 00000000-0000-0000-0000-000000000000
{Policy:TrustFrameworkTenantId} Klientorganisations-ID för förtroenderamverket. your-tenant.onmicrosoft.com

Kolla in livedemon för principanspråkslösare.

Sammanhang

I följande tabell visas de kontextuella anspråkslösare för auktoriseringsbegäran:

Anspråk beskrivning Exempel
{Context:BuildNumber} Identity Experience Framework-versionen (versionsnummer). 1.0.507.0
{Context:CorrelationId} Korrelations-ID:t. 00000000-0000-0000-0000-000000000000
{Context:DateTimeInUtc} Datumtiden i UTC. 2021-10-10 12:00:00
{Context:DeploymentMode} Principdistributionsläget. Produktion
{Context:HostName} Värdnamnet för den aktuella begäran. contoso.b2clogin.com
{Context:IPAddress} Användarens IP-adress. 11.111.111.11
{Kontext:KMSI} Anger om kryssrutan Behåll mig inloggad är markerad. true

Kolla in livedemon för kontextanspråkslösare.

Anspråk

I det här avsnittet beskrivs hur du hämtar ett anspråksvärde som en anspråkslösare.

Anspråk beskrivning Exempel
{Anspråk:anspråkstyp} En identifierare av en anspråkstyp som redan definierats i avsnittet ClaimsSchema i principfilen eller den överordnade principfilen. Till exempel: {Claim:displayName}, eller {Claim:objectId}. Ett anspråkstypvärde.

OpenID Connect

I följande tabell visas anspråkslösare med information om OpenID-Anslut auktoriseringsbegäran:

Anspråk beskrivning Exempel
{OIDC:AuthenticationContextReferences} Frågesträngsparametern acr_values . Ej tillämpligt
{OIDC:ClientId} Frågesträngsparametern client_id . 00000000-0000-0000-0000-000000000000
{OIDC:DomainHint} Frågesträngsparametern domain_hint . facebook.com
{OIDC:LoginHint} Frågesträngsparametern login_hint . someone@contoso.com
{OIDC:MaxAge} max_age. Ej tillämpligt
{OIDC:Nonce} Frågesträngsparametern Nonce . defaultNonce
{OIDC:Password} Lösenordsautentiseringsuppgifterna för resursägaren flödar användarens lösenord. password1
{OIDC:Prompt} Frågesträngsparametern prompt . inloggning
{OIDC:RedirectUri} Frågesträngsparametern redirect_uri . https://jwt.ms
{OIDC:Resource} Frågesträngsparametern resource . Ej tillämpligt
{OIDC:Scope} Frågesträngsparametern scope . Openid
{OIDC:Username} Resursägarens lösenordsuppgifter flödar användarens användarnamn. emily@contoso.com
{OIDC:IdToken} Frågesträngsparametern id token . Ej tillämpligt

Kolla in livedemon för OpenID Anslut anspråkslösare.

OAuth2-nyckelvärdesparametrar

Alla parameternamn som ingår som en del av en OIDC- eller OAuth2-begäran kan mappas till ett anspråk under användarresan. Till exempel kan begäran från programmet innehålla en frågesträngsparameter med namnet app_session, loyalty_numbereller en anpassad frågesträng.

Anspråk beskrivning Exempel
{OAUTH-KV:campaignId} En frågesträngsparameter. Hawaii
{OAUTH-KV:app_session} En frågesträngsparameter. A3C5R
{OAUTH-KV:loyalty_number} En frågesträngsparameter. 1234
{OAUTH-KV:any custom query string} En frågesträngsparameter. Ej tillämpligt

SAML-nyckelvärdesparametrar

I en SAML-autentiseringsbegäran kan alla parameternamn som ingår i begäran, men som inte är specifika för protokollet (till exempel SAMLRequest) mappas till ett anspråk under användarresan. Begäran kan till exempel innehålla en anpassad parameter, usernametill exempel . Detta gäller både SP-initierade och IDP-initierade SAML-begäranden.

Anspråk beskrivning Exempel
{SAML-KV:username} En frågesträng eller POST-brödtextparameter. username@domain.com
{SAML-KV:loyalty_number} En frågesträng eller POST-brödtextparameter. 1234
{SAML-KV:any custom query string} En frågesträng eller POST-brödtextparameter. Ej tillämpligt

SAML

I följande tabell visas anspråkslösare med information om SAML-auktoriseringsbegäran:

Anspråk beskrivning Exempel
{SAML:AuthnContextClassReferences} Elementvärdet AuthnContextClassRef från SAML-begäran. urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
{SAML:NameIdPolicyFormat} Attributet Format från elementet NameIDPolicy i SAML-begäran. urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
{SAML:Issuer} SAML-elementvärdet Issuer för SAML-begäran. https://contoso.com
{SAML:AllowCreate} Attributvärdet AllowCreate från elementet NameIDPolicy i SAML-begäran. Sant
{SAML:ForceAuthn} Attributvärdet ForceAuthN från elementet AuthnRequest i SAML-begäran. Sant
{SAML:ProviderName} Attributvärdet ProviderName från elementet AuthnRequest i SAML-begäran. Contoso.com
{SAML:RelayState} Frågesträngsparametern RelayState .
{SAML:Subject} Subject Från NameId-elementet i SAML AuthN-begäran.
{SAML:Binding} Attributvärdet ProtocolBinding från elementet AuthnRequest i SAML-begäran. urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST

Kolla in livedemon för SAML-anspråkslösare.

OAuth2-identitetsprovider

I följande tabell visas anspråkslösare för OAuth2-identitetsprovidern :

Anspråk beskrivning Exempel
{oauth2:access_token} Åtkomsttoken för OAuth2-identitetsprovidern. Attributet access_token . eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1Ni...
{oauth2:token_type} Typ av åtkomsttoken. Attributet token_type . Bärare
{oauth2:expires_in} Hur lång tid åtkomsttoken är giltig i sekunder. Attributet expires_in . Utdataanspråket DataType måste vara int eller long. 960000
{oauth2:refresh_token} Uppdateringstoken för OAuth2-identitetsprovidern. Attributet refresh_token . eyJraWQiOiJacW9pQlp2TW5pYVc2MUY...

Om du vill använda OAuth2-identitetsproviderns anspråkslösare anger du utdataanspråkets attribut till anspråkslösaren PartnerClaimType . I följande exempel visas hur du hämtar anspråk för den externa identitetsprovidern:

<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>

Använda anspråkslösare

Du kan använda anspråkslösare med följande element:

Artikel Element Inställningar
Teknisk profil för Application Insights InputClaim
Teknisk profil för Microsoft Entra InputClaim, OutputClaim 1, 2
Teknisk OAuth2-profil InputClaim, OutputClaim 1, 2
Teknisk profil för OpenID Anslut InputClaim, OutputClaim 1, 2
Teknisk profil för anspråkstransformering InputClaim, OutputClaim 1, 2
Teknisk profil för RESTful-provider InputClaim 1, 2
Teknisk profil för SAML-identitetsprovider OutputClaim 1, 2
Egensäkrad teknisk profil InputClaim, OutputClaim 1, 2
ContentDefinition LoadUri
ContentDefinitionParameters Parameter
Teknisk profil för RelyingParty OutputClaim 2

Inställningar:

  1. Metadata IncludeClaimResolvingInClaimsHandling måste anges till true.
  2. Attributet AlwaysUseDefaultValue för indata- eller utdataanspråk måste vara inställt på true.

Exempel på anspråkslösare

RESTful teknisk profil

I en RESTful-teknisk profil kanske du vill skicka användarspråket, principnamnet, omfånget och klient-ID:t. Baserat på anspråken kan REST-API:et köra anpassad affärslogik och vid behov generera ett lokaliserat felmeddelande.

I följande exempel visas en RESTful-teknisk profil med det här scenariot:

<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>

Direkt inloggning

Med hjälp av anspråksmatchare kan du fylla i inloggningsnamnet i förväg eller direkt logga in på en specifik social identitetsprovider, till exempel Facebook, LinkedIn eller ett Microsoft-konto. Mer information finns i Konfigurera direkt inloggning med Azure Active Directory B2C.

Dynamisk anpassning av användargränssnittet

Med Azure AD B2C kan du skicka frågesträngsparametrar till html-innehållsdefinitionens slutpunkter för att dynamiskt återge sidinnehållet. Med den här funktionen kan du till exempel ändra bakgrundsbilden på registrerings- eller inloggningssidan för Azure AD B2C baserat på en anpassad parameter som du skickar från ditt webb- eller mobilprogram. Mer information finns i Konfigurera användargränssnittet dynamiskt med hjälp av anpassade principer i Azure Active Directory B2C. Du kan också lokalisera HTML-sidan baserat på en språkparameter, eller så kan du ändra innehållet baserat på klient-ID:t.

I följande exempel skickas frågesträngsparametern med namnet campaignId med värdet Hawaii, en språkkod för en-USoch en app som representerar klient-ID:t:

<UserJourneyBehaviors>
  <ContentDefinitionParameters>
    <Parameter Name="campaignId">{OAUTH-KV:campaignId}</Parameter>
    <Parameter Name="language">{Culture:RFC5646}</Parameter>
    <Parameter Name="app">{OIDC:ClientId}</Parameter>
  </ContentDefinitionParameters>
</UserJourneyBehaviors>

Därför skickar Azure AD B2C ovanstående parametrar till HTML-innehållssidan:

/selfAsserted.aspx?campaignId=hawaii&language=en-US&app=0239a9cc-309c-4d41-87f1-31288feb2e82

Innehållsdefinition

I en ContentDefinitionLoadUri kan du skicka anspråksmatchare för att hämta innehåll från olika platser, baserat på de parametrar som används.

<ContentDefinition Id="api.signuporsignin">
  <LoadUri>https://contoso.blob.core.windows.net/{Culture:LanguageName}/myHTML/unified.html</LoadUri>
  ...
</ContentDefinition>

Teknisk profil för Application Insights

Med Azure Application Insights och anspråkslösare kan du få insikter om användarbeteende. I den tekniska Application Insights-profilen skickar du indataanspråk som sparas till Azure Application Insights. Mer information finns i Spåra användarbeteende i Azure AD B2C-resor med hjälp av Application Insights. I följande exempel skickas princip-ID, korrelations-ID, språk och klient-ID till 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>

Princip för förlitande part

I en teknisk profil för förlitande partprincip kanske du vill skicka klientorganisations-ID:t eller korrelations-ID:t till det förlitande partprogrammet i 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>

Nästa steg