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 string
tanı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.
İlke
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 Connect 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. |
openid |
{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 Connect 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_session
loyalty_number
bir 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 long olmalı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 |
---|---|---|
Application Insights teknik profili | InputClaim |
|
Microsoft Entra teknik profili | InputClaim , OutputClaim |
1, 2 |
OAuth2 teknik profili | InputClaim , OutputClaim |
1, 2 |
OpenID Connect 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:
- Meta
IncludeClaimResolvingInClaimsHandling
veriler olaraktrue
ayarlanmalıdır. - Giriş veya çıkış talepleri özniteliği
AlwaysUseDefaultValue
olaraktrue
ayarlanmalı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-US
ve istemci kimliğini temsil eden bir uygulama ile Hawaii
geç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 LoadUri
içinde, 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>
Application Insights teknik profili
Azure Uygulaması lication Insights ve talep çözümleyicileri ile kullanıcı davranışı hakkında içgörüler elde edebilirsiniz. Application Insights teknik profilinde, Azure Uygulaması lication Insights'a kalıcı giriş talepleri gönderirsiniz. Daha fazla bilgi için bkz . Application Insights 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ı lication Insights'a 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
- Azure AD B2C topluluğu GitHub deposunda daha fazla talep çözümleyici örneği bulun