Informace o překladači deklarací identity ve vlastních zásadách Azure Active Directory B2C

Překladače deklarací identity ve vlastních zásadách Azure Active Directory B2C (Azure AD B2C) poskytují kontextové informace o žádosti o autorizaci, jako je název zásady, ID korelace požadavku, jazyk uživatelského rozhraní a další.

Chcete-li použít překladač deklarací identity ve vstupní nebo výstupní deklaraci identity, definujete řetězec ClaimType, v elementu ClaimsSchema a pak nastavíte DefaultValue na překladač deklarací identity ve vstupním nebo výstupním elementu deklarace identity. Azure AD B2C přečte hodnotu překladače deklarací identity a použije hodnotu v technickém profilu.

V následujícím příkladu je typ correlationId deklarace identity definován s datovým typemstring.

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

V technickém profilu namapujte překladač deklarací identity na typ deklarace identity. Azure AD B2C naplní hodnotu překladače {Context:CorrelationId} deklarací identity correlationId a odešle deklaraci identity do technického profilu.

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

Kultura

Následující tabulka uvádí překladače deklarací identity s informacemi o jazyce použitém v žádosti o autorizaci:

Deklarace identity Popis Příklad
{Culture:LanguageName} Dvoumísmenný kód ISO pro jazyk. en
{Culture:LCID} LCID kódu jazyka. 1033
{Culture:RegionName} Dvoumísmenný kód ISO pro oblast. (USA)
{Culture:RFC5646} Kód jazyka RFC5646. cs

Podívejte se na živou ukázku překladačů deklarací identity jazykové verze.

Zásada

Následující tabulka uvádí překladače deklarací identity s informacemi o zásadách použitých v žádosti o autorizaci:

Deklarace identity Popis Příklad
{Policy:PolicyId} Název zásady předávající strany. B2C_1A_signup_signin
{Policy:RelyingPartyTenantId} ID tenanta zásad předávající strany. your-tenant.onmicrosoft.com
{Policy:TenantObjectId} ID objektu tenanta zásad předávající strany. 00000000-0000-0000-0000-000000000000
{Policy:TrustFrameworkTenantId} ID tenanta architektury důvěryhodnosti. your-tenant.onmicrosoft.com

Podívejte se na živou ukázku překladačů deklarací zásad.

Kontext

Následující tabulka uvádí překladače kontextových deklarací identity žádosti o autorizaci:

Deklarace identity Popis Příklad
{Context:BuildNumber} Verze rozhraní Identity Experience Framework (číslo buildu). 1.0.507.0
{Context:CorrelationId} ID korelace. 00000000-0000-0000-0000-000000000000
{Context:DateTimeInUtc} Datum a čas ve standardu UTC. 10.10.2021 12:00:00
{Context:DeploymentMode} Režim nasazení zásad. Výroba
{Context:HostName} Název hostitele aktuálního požadavku. contoso.b2clogin.com
{Context:IPAddress} IP adresa uživatele. 11.111.111.11
{Context:Služba správy klíčů I} Určuje, jestli je zaškrtnuté políčko Zůstat přihlášeni . true

Podívejte se na živou ukázku překladačů kontextových deklarací identity.

Žádosti

Tato část popisuje, jak získat hodnotu deklarace identity jako překladač deklarací identity.

Deklarace identity Popis Příklad
{Claim:claim type} Identifikátor typu deklarace identity, který je již definován v oddílu ClaimsSchema v souboru zásad nebo nadřazeném souboru zásad. Příklad: {Claim:displayName}nebo {Claim:objectId}. Hodnota typu deklarace identity.

OpenID Connect

Následující tabulka uvádí překladače deklarací identity s informacemi o žádosti o autorizaci OpenID Připojení:

Deklarace identity Popis Příklad
{OIDC:AuthenticationContextReferences} Parametr acr_values řetězce dotazu.
{OIDC:ClientId} Parametr client_id řetězce dotazu. 00000000-0000-0000-0000-000000000000
{OIDC:DomainHint} Parametr domain_hint řetězce dotazu. facebook.com
{OIDC:LoginHint} Parametr login_hint řetězce dotazu. someone@contoso.com
{OIDC:MaxAge} max_age.
{OIDC:Nonce} Parametr Nonce řetězce dotazu. defaultNonce
{OIDC:Password} Heslo uživatele toku přihlašovacích údajů vlastníka prostředku. heslo 1
{OIDC:Prompt} Parametr prompt řetězce dotazu. Přihlásit
{OIDC:RedirectUri} Parametr redirect_uri řetězce dotazu. https://jwt.ms
{OIDC:Resource} Parametr resource řetězce dotazu.
{OIDC:Scope} Parametr scope řetězce dotazu. Openid
{OIDC:Username} Uživatelské jméno uživatele toku přihlašovacích údajů pro heslo vlastníka prostředku. emily@contoso.com
{OIDC:IdToken} Parametr id token řetězce dotazu.

Podívejte se na živou ukázku překladačů deklarací identity OpenID Připojení.

Parametry klíč-hodnota OAuth2

Jakýkoli název parametru, který je součástí požadavku OIDC nebo OAuth2, lze namapovat na deklaraci identity na cestě uživatele. Například požadavek z aplikace může obsahovat parametr řetězce dotazu s názvem app_session, loyalty_numbernebo libovolným vlastním řetězcem dotazu.

Deklarace identity Popis Příklad
{OAUTH-KV:campaignId} Parametr řetězce dotazu. Havaj
{OAUTH-KV:app_session} Parametr řetězce dotazu. A3C5R
{OAUTH-KV:loyalty_number} Parametr řetězce dotazu. 1 234
{OAUTH-KV:any custom query string} Parametr řetězce dotazu.

Parametry klíč-hodnota SAML

V žádosti o ověření SAML je možné namapovat jakýkoli název parametru, který je součástí požadavku, ale není specifický pro protokol (například SAMLRequest) na deklaraci identity na cestě uživatele. Požadavek může například obsahovat vlastní parametr, například username. To platí jak pro požadavky SAML iniciované aktualizací SP, tak i požadavky SAML iniciované protokolem IDP.

Deklarace identity Popis Příklad
{SAML-KV:username} Řetězec dotazu nebo parametr textu POST. username@domain.com
{SAML-KV:loyalty_number} Řetězec dotazu nebo parametr textu POST. 1 234
{SAML-KV:any custom query string} Řetězec dotazu nebo parametr textu POST.

SAML

Následující tabulka uvádí překladače deklarací identity s informacemi o žádosti o autorizaci SAML:

Deklarace identity Popis Příklad
{SAML:AuthnContextClassReferences} Hodnota AuthnContextClassRef elementu z požadavku SAML. urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
{SAML:NameIdPolicyFormat} Atribut Format , z NameIDPolicy elementu požadavku SAML. urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
{SAML:Issuer} Hodnota elementu SAML Issuer požadavku SAML. https://contoso.com
{SAML:AllowCreate} Hodnota AllowCreate atributu NameIDPolicy z elementu požadavku SAML. True
{SAML:ForceAuthn} Hodnota ForceAuthN atributu AuthnRequest z elementu požadavku SAML. True
{SAML:ProviderName} Hodnota ProviderName atributu AuthnRequest z elementu požadavku SAML. Contoso.com
{SAML:RelayState} Parametr RelayState řetězce dotazu.
{SAML:Subject} Element Subject NameId požadavku SAML AuthN.
{SAML:Binding} Hodnota ProtocolBinding atributu AuthnRequest z elementu požadavku SAML. urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST

Podívejte se na živou ukázku překladačů deklarací identity SAML.

Zprostředkovatel identity OAuth2

Následující tabulka uvádí překladače deklarací identity OAuth2:

Deklarace identity Popis Příklad
{oauth2:access_token} Přístupový token zprostředkovatele identity OAuth2. Atribut access_token . eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1Ni...
{oauth2:token_type} Typ přístupového tokenu. Atribut token_type . Nosič
{oauth2:expires_in} Doba platnosti přístupového tokenu v sekundách. Atribut expires_in . Datový typ výstupní deklarace identity musí být int nebo long. 960000
{oauth2:refresh_token} Obnovovací token zprostředkovatele identity OAuth2. Atribut refresh_token . eyJraWQiOiJacW9pQlp2TW5pYVc2MUY...

Pokud chcete použít překladače deklarací identity OAuth2, nastavte atribut výstupní deklarace identity PartnerClaimType na překladač deklarací identity. Následující příklad ukazuje, jak získat deklarace identity externího zprostředkovatele identity:

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

Použití překladačů deklarací identity

Překladače deklarací identity můžete použít s následujícími prvky:

Položka Element (Prvek) Nastavení
Technický profil Přehledy aplikace InputClaim
Technický profil Microsoft Entra InputClaim, OutputClaim 1, 2
Technický profil OAuth2 InputClaim, OutputClaim 1, 2
Technický profil OpenID Připojení InputClaim, OutputClaim 1, 2
Technický profil transformace deklarací identity InputClaim, OutputClaim 1, 2
Technický profil poskytovatele RESTful InputClaim 1, 2
Technický profil zprostředkovatele identity SAML OutputClaim 1, 2
Technický profil s vlastním kontrolním výrazem InputClaim, OutputClaim 1, 2
ContentDefinition LoadUri
ContentDefinitionParameters Parameter
Technický profil RelyingParty OutputClaim 2

Nastavení:

  1. Metadata IncludeClaimResolvingInClaimsHandling musí být nastavena na truehodnotu .
  2. Vstupní nebo výstupní atribut AlwaysUseDefaultValue deklarací identity musí být nastaven na truehodnotu .

Ukázky překladačů deklarací identity

Technický profil RESTful

V technickém profilu RESTful můžete chtít odeslat uživatelský jazyk, název zásady, obor a ID klienta. Na základě deklarací identity může rozhraní REST API spouštět vlastní obchodní logiku a v případě potřeby vyvolat lokalizovanou chybovou zprávu.

Následující příklad ukazuje technický profil RESTful s tímto scénářem:

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

Přímé přihlášení

Pomocí překladačů deklarací identity můžete předem zadat přihlašovací jméno nebo přímé přihlášení ke konkrétnímu poskytovateli sociální identity, jako je Facebook, LinkedIn nebo účet Microsoft. Další informace najdete v tématu Nastavení přímého přihlašování pomocí Azure Active Directory B2C.

Dynamické přizpůsobení uživatelského rozhraní

Azure AD B2C umožňuje předat parametry řetězce dotazu koncovým bodům definice obsahu HTML a dynamicky vykreslit obsah stránky. Tato funkce například umožňuje upravit obrázek pozadí na registrační nebo přihlašovací stránce Azure AD B2C na základě vlastního parametru, který předáváte z webové nebo mobilní aplikace. Další informace najdete v tématu Dynamické konfigurace uživatelského rozhraní pomocí vlastních zásad v Azure Active Directory B2C. Stránku HTML můžete také lokalizovat na základě parametru jazyka nebo můžete změnit obsah na základě ID klienta.

Následující příklad předá parametr řetězce dotazu s názvem campaignId s hodnotou Hawaii, kód en-USjazyka a aplikace představující ID klienta:

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

V důsledku toho Azure AD B2C odešle výše uvedené parametry na stránku obsahu HTML:

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

Definice obsahu

V Objektu ContentDefinitionLoadUri můžete odesílat překladače deklarací identity, které na základě použitých parametrů načítá obsah z různých míst.

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

Technický profil Přehledy aplikace

Pomocí překladačů Aplikace Azure Přehledy a deklarací identity můžete získat přehled o chování uživatelů. V technickém profilu aplikace Přehledy odešlete vstupní deklarace identity, které jsou trvalé do Aplikace Azure Přehledy. Další informace najdete v tématu Sledování chování uživatelů v cestách Azure AD B2C pomocí služby Application Přehledy. Následující příklad odešle ID zásady, ID korelace, jazyk a ID klienta do Aplikace Azure Přehledy.

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

Zásady předávající strany

V technickém profilu zásad předávající strany můžete chtít odeslat ID tenanta nebo ID korelace do aplikace předávající strany v rámci 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>

Další kroky

  • Další ukázky překladačů deklarací identity najdete v úložišti GitHub komunity Azure AD B2C.