Azure AD B2C kullanarak WPF masaüstü uygulamasında kimlik doğrulama seçeneklerini etkinleştirme
Bu makalede, Windows Presentation Foundation (WPF) masaüstü uygulamanız için Azure Active Directory B2C (Azure AD B2C) kimlik doğrulama deneyimini özelleştirme ve geliştirme yolları açıklanmaktadır.
Başlamadan önce, Azure AD B2C kullanarak örnek bir WPF masaüstü uygulamasında kimlik doğrulamasını yapılandırma makalesini öğrenin.
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 doldurması 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.
- Microsoft Authentication Library (MSAL) yapılandırma nesnenizi bulun ve oturum açma ipucuyla yöntemini ekleyin
withLoginHint()
.
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
.WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
.WithLoginHint("bob@contoso.com")
.ExecuteAsync();
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, oturum açmak için kullanılması gereken sosyal kimlik sağlayıcısı hakkında B2C Azure AD bir ipucu sağlar. Örneğin, uygulama belirtirse domain_hint=facebook.com
oturum 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 etki alanı adını denetleyin. Daha fazla bilgi için bkz. Oturum açmayı sosyal hizmet sağlayıcısına yeniden yönlendirme.
- Ek sorgu parametrelerini depolamak için mevcut
Dictionary
bir nesne oluşturun veya kullanın. -
domain_hint
Sözlüğe karşılık gelen etki alanı adıyla parametresini ekleyin (örneğin,facebook.com
). - Ek sorgu parametreleri nesnesini MSAL yapılandırma nesnesinin
WithExtraQueryParameters
yöntemine geçirin.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("domain_hint", "facebook.com");
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
.WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
.WithExtraQueryParameters(extraQueryParameters)
.ExecuteAsync();
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ırma.
- Ek sorgu parametrelerini depolamak için mevcut
Dictionary
bir nesne oluşturun veya kullanın. -
ui_locales
Sözlüğe karşılık gelen dil kodunu içeren parametresini ekleyin (örneğin,en-us
). - Ek sorgu parametreleri nesnesini MSAL yapılandırma nesnesinin
WithExtraQueryParameters
yöntemine geçirin.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("ui_locales", "en-us");
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
.WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
.WithExtraQueryParameters(extraQueryParameters)
.ExecuteAsync();
Ö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.
- Ek sorgu parametrelerini depolamak için mevcut
Dictionary
bir nesne oluşturun veya kullanın. - gibi
campaignId
özel sorgu dizesi parametresini ekleyin. Parametre değerini ayarlayın (örneğin,germany-promotion
). - Ek sorgu parametreleri nesnesini MSAL yapılandırma nesnesinin
WithExtraQueryParameters
yöntemine geçirin.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("campaignId", "germany-promotion");
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
.WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
.WithExtraQueryParameters(extraQueryParameters)
.ExecuteAsync();
Kimlik belirteci ipucu geçirme
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 bir kimlik belirteci ipucu teknik profili tanımlayın.
- Kodunuzda bir kimlik belirteci oluşturun veya alın ve belirteci bir değişken olarak ayarlayın (örneğin,
idToken
). - Ek sorgu parametrelerini depolamak için mevcut
Dictionary
bir nesne oluşturun veya kullanın. - parametresini
id_token_hint
, kimlik belirtecini depolayan karşılık gelen değişkenle ekleyin. - Ek sorgu parametreleri nesnesini MSAL yapılandırma nesnesinin
extraQueryParameters
özniteliğine geçirin.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("id_token_hint", idToken);
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
.WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
.WithExtraQueryParameters(extraQueryParameters)
.ExecuteAsync();
Günlüğü 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 verilerin ve kuruluş verilerinin günlüğe kaydedilip kaydedilmediği konusunda size özel denetim sağlayabilir.
Bir MSAL günlüğe kaydetme geri çağırması oluşturmanızı ve kullanıcıların kimlik doğrulama sorunları olduğunda günlükleri göndermesi 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ı belirlemek için kullanılır.
- Uyarı: Bir hata veya hata olması şart değildir, ancak bilgiler tanılama ve sorunları belirlemeye yöneliktir.
- Bilgi: MSAL, bilgilendirme 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, siz karar verirseniz kişisel ve kurumsal verilerin günlüğe kaydedilmesini etkinleştirme seçeneği sunar.
Aşağıdaki kod parçacığında MSAL günlüğünün nasıl yapılandırılır gösterilmektedir:
PublicClientApp = PublicClientApplicationBuilder.Create(ClientId)
.WithB2CAuthority(AuthoritySignUpSignIn)
.WithRedirectUri(RedirectUri)
.WithLogging(Log, LogLevel.Info, false) // don't log P(ersonally) I(dentifiable) I(nformation) details on a regular basis
.Build();
Yeniden yönlendirme URI'sini yapılandırma
Masaüstü uygulaması kayıt işlemi sırasında, yeniden yönlendirme URI'sini seçerken aşağıdaki önemli noktaları göz önünde bulundurun:
-
Geliştirme: Masaüstü uygulamalarında geliştirme kullanımı için yeniden yönlendirme URI'sini olarak
http://localhost
ayarlayabilirsiniz ve Azure AD B2C istekteki herhangi bir bağlantı noktasına uyar. Kayıtlı URI bir bağlantı noktası içeriyorsa, Azure AD B2C yalnızca bu bağlantı noktasını kullanır. Örneğin, kayıtlı yeniden yönlendirme URI'si isehttp://localhost
, istekteki yeniden yönlendirme URI'si olabilirhttp://localhost:<randomport>
. Kayıtlı yeniden yönlendirme URI'si isehttp://localhost:8080
, istekteki yeniden yönlendirme URI'sinin olmasıhttp://localhost:8080
gerekir. -
Benzersiz: Yeniden yönlendirme URI'sinin şeması her uygulama için benzersiz olmalıdır. örneğinde
com.onmicrosoft.contosob2c.exampleapp://oauth/redirect
com.onmicrosoft.contosob2c.exampleapp
şeması verilmiştir. Bu desen izlenmelidir. İki uygulama aynı şemayı paylaşıyorsa, kullanıcılara bir uygulama seçeneği verilir. Kullanıcılar yanlış seçim yaparsanız oturum açma başarısız olur. -
Tamamlandı: Yeniden yönlendirme URI'sinin hem düzeni hem de yolu olmalıdır. Yol, etki alanında en az bir eğik çizgi karakteri içermelidir. Örneğin,
//oauth/
çalışır ve//oauth
başarısız olur. URI'ye özel karakterler eklemeyin. Örneğin, alt çizgi karakterine (_) izin verilmez.
Sonraki adımlar
- Daha fazla bilgi edinmek için bkz . .NET, UWP, NetCore ve Xamarin yapılandırma seçenekleri için MSAL.