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.
Bu makalede, Angular tek sayfalı uygulamanız (SPA) için Azure Active Directory B2C (Azure AD B2C) kimlik doğrulama deneyimini nasıl özelleştirebileceğiniz ve geliştirebileceğiniz açıklanır.
Önkoşullar
Angular SPA'da kimlik doğrulamasını yapılandırma veya Kendi Angular SPA'nızda kimlik doğrulamasını etkinleştirme makalesini inceleyin.
Oturum açma ve oturum kapatma davranışı
Tek sayfalı uygulamanızı MSAL.js kullanıcılarla oturum açmak için iki şekilde yapılandırabilirsiniz:
-
Açılır pencere: Kimlik doğrulaması bir açılır pencerede gerçekleşir ve uygulamanın durumu korunur. Kimlik doğrulaması sırasında kullanıcıların uygulama sayfanızdan uzaklaşmasını istemiyorsanız bu yaklaşımı kullanın. Ancak, Internet Explorer'da açılır pencerelerle ilgili bilinen sorunlar vardır.
- Açılır pencerelerde oturum açmak için
src/app/app.component.tssınıfındakiloginPopupyöntemini kullanın. -
src/app/app.module.tssınıfında özniteliğiniinteractionTypeolarakInteractionType.Popupayarlayın. - Açılır pencerelerle oturum kapatmak için
src/app/app.component.tssınıfındalogoutPopupyöntemini kullanın. Oturumu kapatma işlemi tamamlandıktan sonra, isteğin bir parçası olaraklogoutPopupgeçirerek ana pencereyi anasayfa veya oturum açma sayfası gibi farklı bir sayfaya yönlendirecek şekildemainWindowRedirectUriyapılandırabilirsiniz.
- Açılır pencerelerde oturum açmak için
-
Yeniden yönlendirme: Kullanıcı, kimlik doğrulama akışını tamamlamak için Azure AD B2C'ye yönlendirilir. Kullanıcıların açılır pencerelerin devre dışı bırakıldığı tarayıcı kısıtlamaları veya ilkeleri varsa bu yaklaşımı kullanın.
- Oturum açmak için
src/app/app.component.tssınıfında, yeniden yönlendirme ileloginRedirectyöntemini kullanın. -
src/app/app.module.tssınıfında özniteliğiniinteractionTypeolarakInteractionType.Redirectayarlayın. - Yeniden yönlendirme yapmak için
src/app/app.component.tssınıfındakilogoutRedirectyöntemini kullanarak oturumu kapatın. Oturum kapatıldıktan sonra yeniden yönlendirilmesi gereken URI'yi yapılandırmak içinpostLogoutRedirectUriayarını kullanın. Bu URI'yi uygulama kaydınıza yeniden yönlendirme URI'si olarak eklemelisiniz.
- Oturum açmak için
Aşağıdaki örnekte oturum açma ve oturumu kapatma işlemleri gösterilmektedir:
//src/app/app.component.ts
login() {
if (this.msalGuardConfig.authRequest){
this.authService.loginPopup({...this.msalGuardConfig.authRequest} as PopupRequest);
} else {
this.authService.loginPopup();
}
}
logout() {
this.authService.logoutPopup({
mainWindowRedirectUri: '/',
});
}
MSAL Angular kitaplığının üç oturum açma akışı vardır: etkileşimli oturum açma (kullanıcının oturum açma düğmesini seçtiği yer), MSAL Guard ve MSAL Kesme Noktası. Kullanıcı geçerli bir erişim belirteci olmadan korumalı bir kaynağa erişmeye çalıştığında MSAL Guard ve MSAL Kesme Noktası yapılandırmaları etkinleşir. Bu gibi durumlarda, MSAL kitaplığı kullanıcıyı oturum açmaya zorlar.
Aşağıdaki örneklerde, açılır pencere veya yeniden yönlendirme ile oturum açmak için MSAL Guard ve MSAL Yakalayıcı'nın nasıl yapılandırılması gösterilmektedir.
// src/app/app.module.ts
MsalModule.forRoot(new PublicClientApplication(msalConfig),
{
interactionType: InteractionType.Popup,
authRequest: {
scopes: protectedResources.todoListApi.scopes,
}
},
{
interactionType: InteractionType.Popup,
protectedResourceMap: new Map([
[protectedResources.todoListApi.endpoint, protectedResources.todoListApi.scopes]
])
})
Oturum açma adını önceden doldurma
Oturum açma kullanıcı yolculuğu sırasında uygulamanız belirli bir kullanıcıyı hedef alabilir. Bir uygulama bir kullanıcıyı hedeflediğinde, yetkilendirme isteğinde login_hint kullanıcının oturum açma adıyla sorgu parametresini belirtebilir. Azure AD B2C, oturum açma adını otomatik olarak doldurur ve kullanıcının yalnızca parolayı sağlaması gerekir.
Oturum açma adını önceden doldurmak için aşağıdakileri yapın:
- Özel bir ilke kullanıyorsanız, doğrudan oturum açmayı ayarlama bölümünde açıklandığı gibi gerekli giriş beyanını ekleyin.
- Mevcut
PopupRequestveya MSAL yapılandırma nesnesini oluşturun veyaRedirectRequestkullanın. - özniteliğini
loginHintilgili oturum açma ipucuyla ayarlayın.
Aşağıdaki kod parçacıkları, oturum açma ipucu parametresinin nasıl aktarılacağını gösterir. Öznitelik değeri olarak kullanırlar bob@contoso.com .
// src/app/app.component.ts
let authRequestConfig: PopupRequest;
if (this.msalGuardConfig.authRequest) {
authRequestConfig = { ...this.msalGuardConfig.authRequest } as PopupRequest
}
authRequestConfig.loginHint = "bob@contoso.com"
this.authService.loginPopup(authRequestConfig);
// src/app/app.module.ts
MsalModule.forRoot(new PublicClientApplication(msalConfig),
{
interactionType: InteractionType.Popup,
authRequest: {
scopes: protectedResources.todoListApi.scopes,
loginHint: "bob@contoso.com"
}
},
Kimlik sağlayıcısını önceden seçme
Uygulamanızın oturum açma yolculuğunu Facebook, LinkedIn veya Google gibi sosyal hesapları içerecek şekilde yapılandırdıysanız parametresini domain_hint belirtebilirsiniz. Bu sorgu parametresi, Azure AD B2C'ye oturum açmak için kullanılması gereken sosyal kimlik sağlayıcısı hakkında bir ipucu sağlar. Örneğin, uygulama belirtirse domain_hint=facebook.comoturum açma akışı doğrudan Facebook oturum açma sayfasına gider.
Kullanıcıları bir dış kimlik sağlayıcısına yönlendirmek için aşağıdakileri yapın:
- Dış kimlik sağlayıcınızın alan adını denetleyin. Daha fazla bilgi için bkz. Oturum açmayı sosyal bir sağlayıcıyayönlendirme.
- Mevcut
PopupRequestveya MSAL yapılandırma nesnesini oluşturun veyaRedirectRequestkullanın. -
domainHintözniteliğini ilgili etki alanı ipucuyla ayarlayın.
Aşağıdaki kod parçacıkları, domain ipucu parametresini iletmeyi gösterir. Öznitelik değeri olarak kullanırlar facebook.com .
// src/app/app.component.ts
let authRequestConfig: PopupRequest;
if (this.msalGuardConfig.authRequest) {
authRequestConfig = { ...this.msalGuardConfig.authRequest } as PopupRequest
}
authRequestConfig.domainHint = "facebook.com";
this.authService.loginPopup(authRequestConfig);
// src/app/app.module.ts
MsalModule.forRoot(new PublicClientApplication(msalConfig),
{
interactionType: InteractionType.Popup,
authRequest: {
scopes: protectedResources.todoListApi.scopes,
domainHint: "facebook.com"
}
},
Kullanıcı arabirimi dilini belirtme
Azure AD B2C'de dil özelleştirmesi, kullanıcı akışınızın müşterilerinizin ihtiyaçlarına uygun çeşitli dilleri barındırmasını sağlar. Daha fazla bilgi için bkz . Dil özelleştirme.
Tercih edilen dili ayarlamak için aşağıdakileri yapın:
- Dil özelleştirmesini yapılandırın.
- Mevcut bir
PopupRequestveyaRedirectRequestMSAL yapılandırma nesnesiniextraQueryParametersöznitelikleriyle oluşturun veya kullanın. -
ui_localesparametresini, karşılık gelen dil koduyla birlikte,extraQueryParametersözniteliklerine ekleyin.
Aşağıdaki kod parçacıkları, domain ipucu parametresini iletmeyi gösterir. Öznitelik değeri olarak kullanırlar es-es .
// src/app/app.component.ts
let authRequestConfig: PopupRequest;
if (this.msalGuardConfig.authRequest) {
authRequestConfig = { ...this.msalGuardConfig.authRequest } as PopupRequest
}
authRequestConfig.extraQueryParameters = {"ui_locales" : "es-es"};
this.authService.loginPopup(authRequestConfig);
// src/app/app.module.ts
MsalModule.forRoot(new PublicClientApplication(msalConfig),
{
interactionType: InteractionType.Popup,
authRequest: {
scopes: protectedResources.todoListApi.scopes,
extraQueryParameters: {"ui_locales" : "es-es"}
}
},
Özel sorgu dizesi parametresi geçirme
Özel ilkelerle, özel bir sorgu dizesi parametresi geçirebilirsiniz. İyi bir kullanım örneği, sayfa içeriğini dinamik olarak değiştirmek istediğiniz durumlardır.
Özel sorgu dizesi parametresi geçirmek için aşağıdakileri yapın:
- ContentDefinitionParameters öğesini yapılandırın.
- Mevcut bir
PopupRequestveyaRedirectRequestMSAL yapılandırma nesnesiniextraQueryParametersöznitelikleriyle oluşturun veya kullanın. - gibi
campaignIdözel sorgu dizesi parametresini ekleyin. Parametre değerini ayarlayın.
Aşağıdaki kod parçacıkları, özel bir sorgu dizesi parametresinin nasıl geçirileceğini gösterir. Öznitelik değeri olarak kullanırlar germany-promotion .
// src/app/app.component.ts
let authRequestConfig: PopupRequest;
if (this.msalGuardConfig.authRequest) {
authRequestConfig = { ...this.msalGuardConfig.authRequest } as PopupRequest
}
authRequestConfig.extraQueryParameters = {"campaignId": 'germany-promotion'}
this.authService.loginPopup(authRequestConfig);
// src/app/app.module.ts
MsalModule.forRoot(new PublicClientApplication(msalConfig),
{
interactionType: InteractionType.Popup,
authRequest: {
scopes: protectedResources.todoListApi.scopes,
extraQueryParameters: {"ui_locales" : "es-es"}
}
},
Kimlik belirteci ipucu sağla
Bağlı olan taraf uygulaması, OAuth2 yetkilendirme isteğinin bir parçası olarak bir gelen JSON Web Belirteci (JWT) gönderebilir. Gelen belirteç, kullanıcı veya yetkilendirme isteği hakkında bir ipucudur. Azure AD B2C belirteci doğrular ve ardından talebi ayıklar.
Kimlik doğrulama isteğine kimlik belirteci ipucu eklemek için aşağıdakileri yapın:
- Özel ilkenizde, kimlik belirteci ipucunun teknik profilini tanımlayın.
- Mevcut bir
PopupRequestveyaRedirectRequestMSAL yapılandırma nesnesiniextraQueryParametersöznitelikleriyle oluşturun veya kullanın. -
id_token_hintparametresini, kimlik belirtecini depolayan karşılık gelen değişkenle ekleyin.
Aşağıdaki kod parçacıklarında kimlik belirteci ipucunun nasıl tanımlanacağı gösterilmektedir:
// src/app/app.component.ts
let authRequestConfig: PopupRequest;
if (this.msalGuardConfig.authRequest) {
authRequestConfig = { ...this.msalGuardConfig.authRequest } as PopupRequest
}
authRequestConfig.extraQueryParameters = {"id_token_hint": idToken};
this.authService.loginPopup(authRequestConfig);
// src/app/app.module.ts
MsalModule.forRoot(new PublicClientApplication(msalConfig),
{
interactionType: InteractionType.Popup,
authRequest: {
scopes: protectedResources.todoListApi.scopes,
extraQueryParameters: {"id_token_hint" : idToken}
}
},
Özel bir etki alanı kullanın
Özel bir etki alanı kullanarak kimlik doğrulama URL'sini tamamen markalayabilirsiniz. Kullanıcı perspektifinden bakıldığında, kullanıcılar kimlik doğrulama işlemi sırasında Azure AD B2C b2clogin.com alan adına yönlendirilmeden kendi alan adınızda kalır.
URL'deki tüm "b2c" başvurularını kaldırmak için, kimlik doğrulama isteği URL'sindeki B2C kiracı adınızı contoso.onmicrosoft.com kiracı kimliği GUID'nizle de değiştirebilirsiniz. Örneğin, olarak https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/değiştirebilirsinizhttps://account.contosobank.co.uk/<tenant ID GUID>/.
Kimlik doğrulama URL'sinde kiracı kimliğiniz için özel etki alanınızı kullanmak için Özel etki alanlarını etkinleştirme başlığındaki yönergeleri izleyin.
src/app/auth-config.ts MSAL yapılandırma nesnesini açın ve authorities ile knownAuthorities'yi özel etki alanı adınızı ve kiracı kimliğinizi kullanacak şekilde değiştirin.
Aşağıdaki JavaScript, değişiklik öncesinde MSAL yapılandırma nesnesini gösterir:
const msalConfig = {
auth: {
...
authority: "https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/B2C_1_susi",
knownAuthorities: ["fabrikamb2c.b2clogin.com"],
...
},
...
}
Aşağıdaki JavaScript, değişiklik sonrasında MSAL yapılandırma nesnesini gösterir:
const msalConfig = {
auth: {
...
authority: "https://custom.domain.com/00000000-0000-0000-0000-000000000000/B2C_1_susi",
knownAuthorities: ["custom.domain.com"],
...
},
...
}
Log kaydını yapılandırma
MSAL kitaplığı, sorunları tanılamaya yardımcı olabilecek günlük iletileri oluşturur. Uygulama günlüğü yapılandırabilir. Uygulama ayrıca ayrıntı düzeyi ve kişisel ve kuruluş verilerinin günlüğe kaydedilip kaydedilmediği üzerinde özel denetim sağlayabilir.
Bir MSAL günlüğe kaydetme geri çağırması oluşturmanızı ve kullanıcıların kimlik doğrulaması sorunları olduğunda günlük göndermeleri için bir yol sağlamanızı öneririz. MSAL şu günlük ayrıntıları düzeylerini sağlar:
- Hata: Bir sorun oluştu ve bir hata oluşturuldu. Bu düzey, hataları ayıklamak ve sorunları tanımlamak için kullanılır.
- Uyarı: Hata veya hata olması şart değildir, ancak bilgiler tanılama ve sorunları belirleme amacıyla tasarlanmıştır.
- Bilgi: MSAL, bilgi amaçlı olan ve hata ayıklama için olması gerekmeyen olayları günlüğe kaydeder.
- Ayrıntılı: Bu varsayılan düzeydir. MSAL, kitaplık davranışının tüm ayrıntılarını günlüğe kaydeder.
Varsayılan olarak, MSAL günlükçü herhangi bir kişisel veya kurumsal veri yakalamaz. Kitaplık, karar verirseniz kişisel ve kurumsal verilerin günlüğe kaydedilmesini etkinleştirme seçeneği sunar.
Angular log yapılandırmak için src/app/auth-config.ts içinde aşağıdaki anahtarları yapılandırın.
-
loggerCallbackkayıt geri çağırma fonksiyonudur. -
logLevelgünlük seviyesini belirlemenizi sağlar. Olası değerler:Error,Warning,InfoveVerbose. -
piiLoggingEnabledkişisel verilerin girişini etkinleştirir. Olası değerler:trueveyafalse.
Aşağıdaki kod parçacığında MSAL günlüğünün nasıl yapılandırılır gösterilmektedir:
export const msalConfig: Configuration = {
...
system: {
loggerOptions: {
loggerCallback: (logLevel, message, containsPii) => {
console.log(message);
},
logLevel: LogLevel.Verbose,
piiLoggingEnabled: false
}
}
...
}
Sonraki Adımlar
- Daha fazla bilgi edinin: MSAL.js yapılandırma seçenekleri.