Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önemli
1 Mayıs 2025 tarihinden itibaren Azure AD B2C artık yeni müşteriler için satın alınamayacak. SSS bölümünden daha fazla bilgi edinebilirsiniz.
Aşağıdaki bölümde, bölge tabanlı düzenleme için kavram kanıtı uygulamalarının nasıl oluşturulacağı açıklanmaktadır. Tamamlanan Azure Active Directory B2C (Azure AD B2C) özel ilkelerine buradan ulaşabilirsiniz.
Bölge tabanlı yaklaşım
Her bölgesel Azure AD B2C kiracısı, aşağıdaki özellikleri içeren bir Azure AD B2C Özel ilkesi gerektirir:
Kaydolma yolculuğu:
- Kullanıcının kullanıcı adını, parolasını ve diğer özniteliklerini toplamak için bir ekran görüntüleme
- Kullanıcı bölgesi eşleme tablosunu sorgulayarak kullanıcı zaten varsa kaydolmayı önleyin
- Kullanıcı profilini yerel kiracıya yazma
- Kullanıcı kullanıcı adı-bölge eşlemesini bir eşleme tablosuna yazma
- Uygulamaya belirteç verme
Oturum açma yolculuğu:
- Kullanıcı adı ve parola ekranını görüntüleme
- Kullanıcı adı için arama yapma ve bölgesini döndürme
- Yerel kimlik bilgisi doğrulaması veya kiracılar arası kimlik bilgisi doğrulaması gerçekleştirme
- Yerel kiracıdan veya kiracılar arası bir çağrı aracılığıyla kullanıcı profilini okuyun
- Uygulamaya belirteç verme
Parola sıfırlama yolculuğu:
- Kullanıcıların OTP e-postası yoluyla e-postalarını doğrulamak için bir ekran görüntüleme
- Kullanıcı adı için arama yapma ve bölgesini döndürme
- Yeni parolayı girmek için bir ekran gösterme
- Yeni parolayı yerel kiracıya veya bir kiracılar arası çağrı aracılığıyla yazma
- Uygulamaya belirteç verme
Aşağıdaki blok diyagramı kavram kanıtını gösterir. Kılavuzda Azure AD B2C kiracılarının nasıl yapılandırılacağı gösterilir. Dış API katmanı ve Coğrafi olarak dağıtılmış arama tablosu bu kılavuzun bir parçası değildir.
Önkoşullar
İşletmenizin desteklemesi gereken bölge başına bir kiracı oluşturun. Bu kavram kanıtı için en az iki kiracı gerekir.
Depolama katmanınızı hazırlama
Kullanıcıların e-postasını, objectId'sini ve bölgesini depolayan bir depolama katmanınız olması gerekir. Bu, kullanıcının kaydolduğu yeri izlemenize ve sorgulamanıza olanak tanır. Bu verileri kalıcı hale getirmek için bir Azure Depolama tablosu kullanabilirsiniz.
API katmanınızı hazırlama
Bölge tabanlı yaklaşımı göstermek için kavram kanıtının bir parçası olarak kullanılan birden çok API vardır.
Kullanıcının zaten mevcut olup olmadığını doğrulama
Kullanıcının zaten herhangi bir bölgede var olup olmadığını belirlemek için kaydolma sırasında bir API kullanılır.
İstek aşağıdaki gibi olacaktır:
POST /doesUserExistInLookupTable HTTP/1.1
Host: yourapi.com
Content-Type: application/json
{
email: bob@contoso.com
}
Kullanıcı yoksa yanıt bir HTTP 200 olmalıdır.
Kullanıcı varsa yanıt HTTP 409 olmalıdır.
Kullanıcı bölgesi eşlemesini kaydetme
Kullanıcının hangi bölgede kaydolmuş olduğunu kaydetmek için kaydolma sırasında bir API kullanılır.
İstek aşağıdaki gibi olacaktır:
POST /userToRegionLookup HTTP/1.1
Host: yourapi.com
Authorization Bearer: <token>
Content-Type: application/json
{
"email": "bob@contoso.com"
}
Kullanıcı varsa yanıt bir HTTP 200 olmalıdır.
Kullanıcı varsa yanıt HTTP 409 olmalıdır.
Kullanıcının hangi bölgede var olduğunu döndürme
Kullanıcının hangi bölgede kaydolduğunu belirlemek için oturum açma sırasında bir API kullanılır. Bu, kiracılar arası kimlik doğrulamasının gerçekleştirilmesi gerekip gerekmediğini gösterir.
İstek aşağıdaki gibi olacaktır:
POST /userToRegionLookup HTTP/1.1
Host: yourapi.com
Authorization Bearer: <token>
Content-Type: application/json
{
"email": "bob@contoso.com"
}
Yanıt, kullanıcıların kayıtlı olduğu bölge ve objectId ile bir HTTP 200 olmalıdır.
{
"objectId": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"region": "APAC"
}
Kullanıcı yoksa veya bir hatayla karşılaşırsa API'nin http 409 ile yanıt vermesi gerekir.
Kiracılar arasında parola yazma
Parola sıfırlama akışı sırasında, kullanıcılara parolalarını sıfırladıkları farklı bir bölgeye yeni parola yazmak için bir API kullanılır.
İstek aşağıdaki gibi olacaktır:
POST /writePasswordCrossTenant HTTP/1.1
Host: yourapi.com
Authorization Bearer: <token>
Content-Type: application/json
{
"objectId": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"password": "some!strong123STRING"
}
İşlem başarılı olursa yanıt bir HTTP 200 veya hata varsa HTTP 409 olmalıdır.
Bölge tabanlı Azure AD B2C yapılandırması
Aşağıdaki bölümlerde Azure AD B2C kiracısı, kullanıcının kaydoldığı bölgeyi izlemeye ve gerekirse kiracılar arası kimlik doğrulamaları veya parola sıfırlama işlemleri gerçekleştirmeye hazırlanır.
Özel ilke yapılandırması için kaydolma
Kaydolma sırasında, kullanıcının başka bir kiracıda mevcut olmadığından emin olmamız ve kullanıcı bölgesi eşlemesini bir dış tabloya yazmamız gerekir.
LocalAccountSignUpWithLogonEmail Azure AD B2C başlangıç paketindeki teknik profili şu şekilde değiştirin:
<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
...
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="REST-getTokenforExternalApiCalls" />
<ValidationTechnicalProfile ReferenceId="REST-doesUserExistInLookupTable" />
<ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonEmail" />
<ValidationTechnicalProfile ReferenceId="REST-writeUserToRegionMapping" />
</ValidationTechnicalProfiles>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>
ValidationTechnicalProfiles aşağıdaki mantığı gerçekleştirir:
Korumalı API uç noktalarınıza
REST-getTokenforExternalApiCallsteknik profilini kullanarak erişmek için bir belirteç alın.- Microsoft Entra taşıyıcı belirtecini kullanarak API'nizi edinmek ve korumak için buradaki belgeleri izleyin.
Kullanıcının güvenli dış REST API uç noktanız aracılığıyla kullanıcı bölgesi eşlemesinde zaten var olup olmadığını doğrulayın:
Bu API çağrısı tüm kaydolma işlemlerinden önce yapılır; bu API'nin çalışma süresi gereksinimlerini karşılamak için uygun yük dengeleme, dayanıklılık ve yük devretme mekanizmalarına sahip olduğundan emin olmak kritik önem taşır.
Dış REST API aracılığıyla kullanıcı bölgesi eşlemesini sorgulamaya yönelik bir teknik profil örneği aşağıda verilmiştir:
<TechnicalProfile Id="REST-doesUserExistInLookupTable "> <DisplayName>User to Region lookup</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://myApi.com/doesUserExistInLookupTable</Item> <Item Key="AuthenticationType">Bearer</Item> <Item Key="UseClaimAsBearerToken">ext_Api_bearerToken</Item> <Item Key="SendClaimsIn">Body</Item> <Item Key="AllowInsecureAuthInProduction">false</Item> </Metadata> <InputClaims> <InputClaim ClaimTypeReferenceId="ext_Api_bearerToken" /> <InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="email" /> </InputClaims> <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" /> </TechnicalProfile>Bu API, kullanıcı varsa HTTP 409 ile yanıt vermelidir ve uygun hata iletisi ekranda görüntülenecektir. Aksi takdirde, kullanıcı yoksa http 200 ile yanıt verin.
Güvenli dış REST API uç noktanız aracılığıyla kullanıcı bölgesi eşlemesini yazma
Bu API çağrısı tüm kaydolma işlemlerinden önce yapılır; bu API'nin çalışma süresi gereksinimlerini karşılamak için uygun yük dengeleme, dayanıklılık ve yük devretme mekanizmalarına sahip olduğundan emin olmak kritik önem taşır.
Dış REST API aracılığıyla kullanıcı bölgesi eşlemesini yazmak için bir teknik profil örneği aşağıda verilmiştir:
<TechnicalProfile Id="REST-writeUserToRegionMapping"> <DisplayName>User to Region lookup</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://myApi.com/writeUserToRegionMapping</Item> <Item Key="AuthenticationType">Bearer</Item> <Item Key="UseClaimAsBearerToken">ext_Api_bearerToken</Item> <Item Key="SendClaimsIn">Body</Item> <Item Key="AllowInsecureAuthInProduction">false</Item> </Metadata> <InputClaims> <InputClaim ClaimTypeReferenceId="ext_Api_bearerToken" /> <InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="email" /> <InputClaim ClaimTypeReferenceId="region" DefaultValue="EMEA" /> <InputClaim ClaimTypeReferenceId="objectId" /> </InputClaims> <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" /> </TechnicalProfile> ```
Özel politika yapılandırması için oturum açma
Oturum açma sırasında kullanıcıların profil konumunu belirlemeli ve profillerinin bulunduğu Azure AD B2C kiracısında kimlik doğrulaması yapmamız gerekir.
SelfAsserted-LocalAccountSignin-Email kullanıcı bölgesi aramasını gerçekleştirmek için Azure AD B2C başlangıç paketindeki teknik profili değiştirin ve kullanıcı eriştikleri kiracıdan farklı bir bölgedeyse kiracılar arası kimlik doğrulaması yapın. şu şekilde güncelleştirin ValidationTechnicalProfiles :
<TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email">
...
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="REST-getTokenforExternalApiCalls" />
<ValidationTechnicalProfile ReferenceId="REST-regionLookup" />
<ValidationTechnicalProfile ReferenceId="login-NonInteractive">
<Preconditions>
<Precondition Type="ClaimEquals" ExecuteActionsIf="false">
<Value>user_region</Value>
<Value>EMEA</Value>
<Action>SkipThisValidationTechnicalProfile</Action>
</Precondition>
</Preconditions>
<ValidationTechnicalProfile ReferenceId="REST-login-NonInteractive-APAC">
<Preconditions>
<Precondition Type="ClaimEquals" ExecuteActionsIf="false">
<Value>user_region</Value>
<Value>APAC</Value>
<Action>SkipThisValidationTechnicalProfile</Action>
</Precondition>
</Preconditions>
</ValidationTechnicalProfile>
<ValidationTechnicalProfile ReferenceId="REST-fetchUserProfile-APAC">
<Preconditions>
<Precondition Type="ClaimEquals" ExecuteActionsIf="false">
<Value>user_region</Value>
<Value>APAC</Value>
<Action>SkipThisValidationTechnicalProfile</Action>
</Precondition>
</Preconditions>
</ValidationTechnicalProfile>
</ValidationTechnicalProfiles>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>
ValidationTechnicalProfiles, kullanıcı kimlik bilgilerini gönderdiğinde aşağıdaki mantığı gerçekleştirir:
Korumalı API uç noktalarınıza
REST-getTokenforExternalApiCallsteknik profilini kullanarak erişmek için bir belirteç alın.- Microsoft Entra taşıyıcı belirtecini kullanarak API'nizi edinmek ve korumak için buradaki belgeleri izleyin.
Güvenli dış REST API uç noktanız aracılığıyla kullanıcı bölgesi eşlemesini sorgulayın
Bu API çağrısı tüm kaydolma işlemlerinden önce yapılır; bu API'nin çalışma süresi gereksinimlerini karşılamak için uygun yük dengeleme, dayanıklılık ve yük devretme mekanizmalarına sahip olduğundan emin olmak kritik önem taşır.
Dış REST API aracılığıyla kullanıcı bölgesi eşlemesini sorgulamaya yönelik bir teknik profil örneği aşağıda verilmiştir:
<TechnicalProfile Id="REST-regionLookup"> <DisplayName>User to Region lookup</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://myApi.com/userToRegionLookup</Item> <Item Key="AuthenticationType">Bearer</Item> <Item Key="UseClaimAsBearerToken">ext_Api_bearerToken</Item> <Item Key="SendClaimsIn">Body</Item> <Item Key="AllowInsecureAuthInProduction">false</Item> </Metadata> <InputClaims> <InputClaim ClaimTypeReferenceId="ext_Api_bearerToken" /> <InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="email" /> </InputClaims> <OutputClaims> <OutputClaim ClaimTypeReferenceId="user_region" PartnerClaimType="region" /> <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="objectId" /> </OutputClaims> <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" /> </TechnicalProfile>
Bu kiracıda kayıtlı kullanıcılar için
login-NonInteractiveteknik profil aracılığıyla yerel hesap kimlik doğrulamasını gerçekleştirin. Bu, Azure AD B2C başlangıç paketinde bulunan varsayılan teknik profildir.Şartlı olarak, her ilgili bölge için
REST-login-NonInteractive-[region]teknik profilleri aracılığıyla kiracılar arası kimlik doğrulaması yapın.Bu, kullanıcıların ana kiracısından bir MS Graph API jetonu da alır. Her bölgesel kiracıda MS Graph API için temsilci izniyle Yerel Uygulama uygulama kaydını oluşturun.
Dış REST API aracılığıyla kullanıcı bölgesi eşlemesi gerçekleştirmeye yönelik bir teknik profil örneği aşağıdaki gibidir:
<TechnicalProfile Id="REST-login-NonInteractive-APAC"> <DisplayName>non interactive authentication to APAC</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://login.microsoftonline.com/yourAPACb2ctenant.onmicrosoft.com/oauth2/v2.0/token</Item> <Item Key="AuthenticationType">None</Item> <Item Key="SendClaimsIn">Form</Item> <Item Key="AllowInsecureAuthInProduction">true</Item> </Metadata> <InputClaims> <InputClaim ClaimTypeReferenceId="apac_client_id" PartnerClaimType="client_id" DefaultValue="00001111-aaaa-2222-bbbb-3333cccc4444" /> <InputClaim ClaimTypeReferenceId="ropc_grant_type" PartnerClaimType="grant_type" DefaultValue="password" /> <InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="username" /> <InputClaim ClaimTypeReferenceId="password" /> <InputClaim ClaimTypeReferenceId="scope" DefaultValue="https://graph.microsoft.com/.default" AlwaysUseDefaultValue="true" /> <InputClaim ClaimTypeReferenceId="nca" PartnerClaimType="nca" DefaultValue="1" /> </InputClaims> <OutputClaims> <OutputClaim ClaimTypeReferenceId="ext_Api_bearerToken" PartnerClaimType="access_token" /> </OutputClaims> <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" /> </TechnicalProfile><yourb2ctenant>'yiServiceUrliçindeki kimlik doğrulaması için hedeflemeniz gereken kiracıyla değiştirin.Uygulama kaydını
ApplicationIdkullanarakDefaultValuegirdi talebi içinapac_client_idöğesini doldurun.
Koşullu olarak, ilgili her bölgenin teknik profilleri aracılığıyla
REST-fetchUserProfile-[region]kiracılar arası REST API çağrısı kullanarak kullanıcı profilini getirin.MS Graph API aracılığıyla kullanıcı profilini okumak için örnek bir teknik profil aşağıdaki gibidir:
<TechnicalProfile Id="REST-fetchUserProfile-APAC"> <DisplayName>fetch user profile cross tenant</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://graph.microsoft.com/beta/me</Item> <Item Key="AuthenticationType">Bearer</Item> <Item Key="UseClaimAsBearerToken">graph_bearerToken</Item> <Item Key="SendClaimsIn">Body</Item> </Metadata> <InputClaims> <InputClaim ClaimTypeReferenceId="graph_bearerToken" /> </InputClaims> <OutputClaims> <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="id" /> <OutputClaim ClaimTypeReferenceId="givenName" /> <OutputClaim ClaimTypeReferenceId="surName" /> <OutputClaim ClaimTypeReferenceId="displayName" /> <OutputClaim ClaimTypeReferenceId="userPrincipalName" PartnerClaimType="upn" /> <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" /> </OutputClaims> <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" /> </TechnicalProfile>
Parola sıfırlama özel ilke yapılandırması
Parola sıfırlama sırasında, kullanıcı profili konumunu belirlemeli ve parolayı kullanıcı profilinin bulunduğu Azure AD B2C kiracısıyla güncelleştirmemiz gerekir.
LocalAccountSignUpWithLogonEmail Kullanıcı kullanıcı bölgesi aramasını gerçekleştirmek için Azure AD B2C başlangıç paketindeki teknik profili değiştirin ve ilgili kiracıda parolayı güncelleştirin. şu şekilde güncelleştirin ValidationTechnicalProfiles :
<TechnicalProfile Id="LocalAccountDiscoveryUsingEmailAddress">
<OutputClaims>
...
<OutputClaim ClaimTypeReferenceId="ext_Api_bearerToken" DefaultValue="EMEA"/>
</OutputClaims>
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="REST-getTokenforExternalApiCalls">
<Preconditions>
<Precondition Type="ClaimEquals" ExecuteActionsIf="true">
<Value>user_region</Value>
<Value>EMEA</Value>
<Action>SkipThisValidationTechnicalProfile</Action>
</Precondition>
</Preconditions>
</ValidationTechnicalProfile>
<ValidationTechnicalProfile ReferenceId="REST-regionLookup" />
<ValidationTechnicalProfile ReferenceId="AAD-UserReadUsingEmailAddress" />
</ValidationTechnicalProfiles>
</TechnicalProfile>
ValidationTechnicalProfiles, kullanıcı parolasını güncelleştirmek için doğrulanmış bir e-posta gönderdiğinde aşağıdaki mantığı gerçekleştirir:
Korumalı API uç noktalarınızı çağırmak için belirteç alma
Güvenli dış REST API uç noktanız aracılığıyla kullanıcı bölgesi eşlemesini sorgulayın
- Bu API çağrısı tüm parola sıfırlama girişimlerinden önce yapılır; bu API'nin çalışma süresi gereksinimlerini karşılamak için uygun yük dengeleme, dayanıklılık ve yük devretme mekanizmalarına sahip olduğundan emin olmak kritik önem taşır.
Yeni parolayı LocalAccountWritePasswordUsingObjectId yerel kiracıya veya bölgeler arası kiracıya koşullu olarak yazmak için teknik profili değiştirin.
<TechnicalProfile Id="LocalAccountWritePasswordUsingObjectId">
...
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="AAD-UserWritePasswordUsingObjectId">
<Preconditions>
<Precondition Type="ClaimEquals" ExecuteActionsIf="false">
<Value>user_region</Value>
<Value>EMEA</Value>
<Action>SkipThisValidationTechnicalProfile</Action>
</Precondition>
</Preconditions>
</ValidationTechnicalProfile>
<ValidationTechnicalProfile ReferenceId="REST-UserWritePasswordUsingObjectId-APAC">
<Preconditions>
<Precondition Type="ClaimEquals" ExecuteActionsIf="false">
<Value>user_region</Value>
<Value>APAC</Value>
<Action>SkipThisValidationTechnicalProfile</Action>
</Precondition>
</Preconditions>
</ValidationTechnicalProfile>
</ValidationTechnicalProfiles>
</TechnicalProfile>
ValidationTechnicalProfiles, kullanıcı yeni bir parola gönderdiğinde aşağıdaki mantığı gerçekleştirir:
Kullanıcı EMEA hesabında mevcutsa (bu hesap), kullanıcının yeni parolasını dizine yazın.
Koşullu olarak, rest API çağrısı kullanarak kullanıcı profilinin bulunduğu bölgedeki kullanıcı profiline yeni parolayı yazın.
<TechnicalProfile Id="REST-UserWritePasswordUsingObjectId-APAC"> <DisplayName>Write password to APAC tenant</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://myApi.com/writePasswordCrossTenant</Item> <Item Key="AuthenticationType">Bearer</Item> <Item Key="UseClaimAsBearerToken">ext_Api_bearerToken</Item> <Item Key="SendClaimsIn">Body</Item> <Item Key="DebugMode">true</Item> </Metadata> <InputClaims> <InputClaim ClaimTypeReferenceId="ext_Api_bearerToken" /> <InputClaim ClaimTypeReferenceId="objectId" /> <InputClaim ClaimTypeReferenceId="newPassword" /> </InputClaims> <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" /> </TechnicalProfile>