Azure Active Directory B2C özel ilkelerindeki talep çözümleyicileri hakkında

Azure Active Directory B2C (Azure AD B2C) özel ilkelerindeki talep çözümleyicileri bir yetkilendirme isteği hakkında ilke adı, istek bağıntı kimliği, kullanıcı arabirimi dili ve daha fazlası gibi bağlam bilgileri sağlar.

Giriş veya çıkış taleplerinde talep çözümleyicisi kullanmak için ClaimsSchema öğesinin altında bir ClaimType dizesi tanımlarsınız ve ardından DefaultValue değerini giriş veya çıkış talep öğesindeki talep çözümleyicisi olarak ayarlarsınız. Azure AD B2C, talep çözümleyicisinin değerini okur ve teknik profildeki değeri kullanır.

Aşağıdaki örnekte adlı correlationId bir talep türü DataType değeriyle stringtanımlanır.

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

Teknik profilde talep çözümleyicisini talep türüyle eşleyin. Azure AD B2C, talep çözümleyicisinin {Context:CorrelationId} değerini taleple correlationId doldurur ve talebi teknik profile gönderir.

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

Kültür

Aşağıdaki tabloda, yetkilendirme isteğinde kullanılan dil hakkında bilgi içeren talep çözümleyicileri listelenir:

Talep Açıklama Örnek
{Culture:LanguageName} Dil için iki harfli ISO kodu. en
{Culture:LCID} Dil kodunun LCID'sini. 1033
{Culture:RegionName} Bölge için iki harfli ISO kodu. ABD
{Culture:RFC5646} RFC5646 dil kodu. en-US

Kültür talebi çözümleyicilerinin Canlı tanıtımına göz atın.

Poliçe

Aşağıdaki tabloda, yetkilendirme isteğinde kullanılan ilke hakkında bilgi içeren talep çözümleyicileri listelenir:

Talep Açıklama Örnek
{Policy:PolicyId} Bağlı olan taraf ilkesi adı. B2C_1A_signup_signin
{Policy:RelyingPartyTenantId} Bağlı olan taraf ilkesinin kiracı kimliği. your-tenant.onmicrosoft.com
{Policy:TenantObjectId} Bağlı olan taraf ilkesinin kiracı nesne kimliği. 00000000-0000-0000-0000-000000000000
{Policy:TrustFrameworkTenantId} Güven çerçevesinin kiracı kimliği. your-tenant.onmicrosoft.com

İlke talebi çözümleyicilerinin Canlı tanıtımını gözden geçirin.

Bağlam

Aşağıdaki tabloda yetkilendirme isteğinin bağlamsal talep çözümleyicileri listelenir:

Talep Açıklama Örnek
{Context:BuildNumber} Kimlik Deneyimi Çerçevesi sürümü (derleme numarası). 1.0.507.0
{Context:CorrelationId} Bağıntı kimliği. 00000000-0000-0000-0000-000000000000
{Context:DateTimeInUtc} UTC olarak tarih saati. 10.10.2021 12:00:00
{Context:DeploymentMode} İlke dağıtım modu. Üretim
{Context:HostName} Geçerli isteğin ana bilgisayar adı. contoso.b2clogin.com
{Context:IPAddress} Kullanıcı IP adresi. 11.111.111.11
{Context:KMSI} Oturumumu açık tut onay kutusunun seçili olup olmadığını gösterir. true

Bağlam talebi çözümleyicilerinin Canlı tanıtımını gözden geçirin.

Talepler

Bu bölümde, talep çözümleyicisi olarak bir talep değerinin nasıl alındığı açıklanmaktadır.

Talep Açıklama Örnek
{Talep:talep türü} İlke dosyasının veya üst ilke dosyasının ClaimsSchema bölümünde zaten tanımlanmış bir talep türünün tanımlayıcısı. Örneğin: {Claim:displayName}, veya {Claim:objectId}. Talep türü değeri.

OpenID Connect

Aşağıdaki tabloda, OpenID Bağlan yetkilendirme isteği hakkında bilgi içeren talep çözümleyicileri listelenir:

Talep Açıklama Örnek
{OIDC:AuthenticationContextReferences} Sorgu acr_values dizesi parametresi. Yok
{OIDC:ClientId} Sorgu client_id dizesi parametresi. 00000000-0000-0000-0000-000000000000
{OIDC:DomainHint} Sorgu domain_hint dizesi parametresi. facebook.com
{OIDC:LoginHint} Sorgu login_hint dizesi parametresi. someone@contoso.com
{OIDC:MaxAge} max_age. Yok
{OIDC:Nonce} Sorgu Nonce dizesi parametresi. defaultNonce
{OIDC:Password} Kaynak sahibi parola kimlik bilgileri kullanıcının parolasını akıtıyor . parola1
{OIDC:Prompt} Sorgu prompt dizesi parametresi. oturum aç
{OIDC:RedirectUri} Sorgu redirect_uri dizesi parametresi. https://jwt.ms
{OIDC:Resource} Sorgu resource dizesi parametresi. Yok
{OIDC:Scope} Sorgu scope dizesi parametresi. Openıd
{OIDC:Username} Kaynak sahibi parola kimlik bilgileri, kullanıcının kullanıcı adı akışını sağlar. emily@contoso.com
{OIDC:IdToken} Sorgu id token dizesi parametresi. Yok

OpenID Bağlan talep çözümleyicilerinin Canlı tanıtımını gözden geçirin.

OAuth2 anahtar-değer parametreleri

OIDC veya OAuth2 isteğinin parçası olarak dahil edilen tüm parametre adları, kullanıcı yolculuğundaki bir taleple eşlenebilir. Örneğin, uygulamadan gelen istek, adlı app_sessionloyalty_numberbir sorgu dizesi parametresi veya herhangi bir özel sorgu dizesi içerebilir.

Talep Açıklama Örnek
{OAUTH-KV:campaignId} Sorgu dizesi parametresi. Hawaii
{OAUTH-KV:app_session} Sorgu dizesi parametresi. A3C5R
{OAUTH-KV:loyalty_number} Sorgu dizesi parametresi. 1234
{OAUTH-KV:herhangi bir özel sorgu dizesi} Sorgu dizesi parametresi. Yok

SAML anahtar-değer parametreleri

SAML kimlik doğrulama isteğinde, isteğe dahil edilen ancak protokole özgü olmayan tüm parametre adları (SAMLRequest gibi) kullanıcı yolculuğundaki bir taleple eşlenebilir. Örneğin, istek gibi usernameözel bir parametre içerebilir. Bu, hem SP Tarafından Başlatılan hem de IDP Tarafından Başlatılan SAML istekleri için geçerlidir.

Talep Açıklama Örnek
{SAML-KV:username} Sorgu dizesi veya POST gövde parametresi. username@domain.com
{SAML-KV:loyalty_number} Sorgu dizesi veya POST gövde parametresi. 1234
{SAML-KV:herhangi bir özel sorgu dizesi} Sorgu dizesi veya POST gövde parametresi. Yok

SAML

Aşağıdaki tabloda, SAML yetkilendirme isteği hakkında bilgi içeren talep çözümleyicileri listelenir:

Talep Açıklama Örnek
{SAML:AuthnContextClassReferences} AuthnContextClassRef SAML isteğindeki öğe değeri. urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
{SAML:NameIdPolicyFormat} Format SAML isteğinin NameIDPolicy öğesinden özniteliği. urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
{SAML:Issuer} SAML Issuer isteğinin SAML öğesi değeri. https://contoso.com
{SAML:AllowCreate} AllowCreate SAML isteğinin NameIDPolicy öğesinden öznitelik değeri. True
{SAML:ForceAuthn} ForceAuthN SAML isteğinin AuthnRequest öğesinden öznitelik değeri. True
{SAML:ProviderName} ProviderName SAML isteğinin AuthnRequest öğesinden öznitelik değeri. Contoso.com
{SAML:RelayState} Sorgu RelayState dizesi parametresi.
{SAML:Subject} Subject SAML AuthN isteğinin NameId öğesinden.
{SAML:Binding} ProtocolBinding SAML isteğinin AuthnRequest öğesinden öznitelik değeri. urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST

SAML talep çözümleyicilerinin Canlı tanıtımını gözden geçirin.

OAuth2 kimlik sağlayıcısı

Aşağıdaki tabloda OAuth2 kimlik sağlayıcısı talep çözümleyicileri listelenir:

Talep Açıklama Örnek
{oauth2:access_token} OAuth2 kimlik sağlayıcısı erişim belirteci. access_token özniteliği. eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1Ni...
{oauth2:token_type} Erişim belirtecinin türü. token_type özniteliği. Taşıyıcı
{oauth2:expires_in} Erişim belirtecinin saniye cinsinden geçerli olduğu süre. expires_in özniteliği. Çıktı talebi DataType veya longolmalıdırint. 960000
{oauth2:refresh_token} OAuth2 kimlik sağlayıcısı yenileme belirteci. refresh_token özniteliği. eyJraWQiOiJacW9pQlp2TW5pYVc2MUY...

OAuth2 kimlik sağlayıcısı talep çözümleyicilerini kullanmak için çıkış talebinin PartnerClaimType özniteliğini talep çözümleyicisi olarak ayarlayın. Aşağıdaki örnek, dış kimlik sağlayıcısı taleplerini alma işlemini gösterir:

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

Talep çözümleyicilerini kullanma

Talep çözümleyicilerini aşağıdaki öğelerle kullanabilirsiniz:

Kalem Öğe Ayarlar
Uygulama Analizler teknik profili InputClaim
Microsoft Entra teknik profili InputClaim, OutputClaim 1, 2
OAuth2 teknik profili InputClaim, OutputClaim 1, 2
OpenID Bağlan teknik profili InputClaim, OutputClaim 1, 2
Talep dönüştürme teknik profili InputClaim, OutputClaim 1, 2
RESTful sağlayıcı teknik profili InputClaim 1, 2
SAML kimlik sağlayıcısı teknik profili OutputClaim 1, 2
Kendinden Onaylanan teknik profil InputClaim, OutputClaim 1, 2
Contentdefinition LoadUri
ContentDefinitionParameters Parameter
Bağlı Bölüm teknik profili OutputClaim 2

Ayarlar:

  1. Meta IncludeClaimResolvingInClaimsHandling veriler olarak trueayarlanmalıdır.
  2. Giriş veya çıkış talepleri özniteliği AlwaysUseDefaultValue olarak trueayarlanmalıdır.

Talep çözümleyici örnekleri

RESTful teknik profili

RESTful teknik profilinde kullanıcı dili, ilke adı, kapsam ve istemci kimliğini göndermek isteyebilirsiniz. Taleplere bağlı olarak REST API özel iş mantığı çalıştırabilir ve gerekirse yerelleştirilmiş bir hata iletisi oluşturur.

Aşağıdaki örnekte, bu senaryoya sahip bir RESTful teknik profili gösterilmektedir:

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

Doğrudan oturum açma

Talep çözümleyicilerini kullanarak oturum açma adını önceden doldurulabilir veya Facebook, LinkedIn veya Microsoft hesabı gibi belirli bir sosyal kimlik sağlayıcısına doğrudan oturum açabilirsiniz. Daha fazla bilgi için bkz . Azure Active Directory B2C kullanarak doğrudan oturum açmayı ayarlama.

Dinamik kullanıcı arabirimi özelleştirmesi

Azure AD B2C, sayfa içeriğini dinamik olarak işlemek için HTML içerik tanımı uç noktalarınıza sorgu dizesi parametreleri geçirmenizi sağlar. Örneğin bu özellik, web veya mobil uygulamanızdan geçirdiğiniz özel bir parametreyi temel alarak Azure AD B2C kaydolma veya oturum açma sayfasındaki arka plan görüntüsünü değiştirme olanağı sağlar. Daha fazla bilgi için bkz . Azure Active Directory B2C'de özel ilkeler kullanarak kullanıcı arabirimini dinamik olarak yapılandırma. Ayrıca HTML sayfanızı bir dil parametresine göre yerelleştirebilir veya içeriği istemci kimliğine göre değiştirebilirsiniz.

Aşağıdaki örnek, campaignId adlı sorgu dizesi parametresini , dil kodu en-USve istemci kimliğini temsil eden bir uygulama ile Hawaiigeçirir:

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

Sonuç olarak, Azure AD B2C yukarıdaki parametreleri HTML içerik sayfasına gönderir:

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

İçerik tanımı

ContentDefinition'daLoadUri, kullanılan parametrelere göre farklı yerlerden içerik çekmek için talep çözümleyicileri gönderebilirsiniz.

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

Uygulama Analizler teknik profili

Azure Uygulaması Analizler ve talep çözümleyicileri ile kullanıcı davranışı hakkında içgörüler elde edebilirsiniz. Uygulama Analizler teknik profilinde, Azure Uygulaması Analizler kalıcı giriş talepleri gönderirsiniz. Daha fazla bilgi için bkz. Application Analizler kullanarak Azure AD B2C yolculuklarında kullanıcı davranışını izleme. Aşağıdaki örnek ilke kimliğini, bağıntı kimliğini, dili ve istemci kimliğini Azure Uygulaması Analizler gönderir.

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

Bağlı olan taraf ilkesi

Bağlı olan taraf ilkesi teknik profilinde, kiracı kimliğini veya bağıntı kimliğini JWT içindeki bağlı olan taraf uygulamasına göndermek isteyebilirsiniz.

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

Sonraki adımlar