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:

  1. Özel bir ilke kullanıyorsanız, Doğrudan oturum açmayı ayarlama bölümünde açıklandığı gibi gerekli giriş beyanını ekleyin.
  2. 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.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:

  1. 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.
  2. Ek sorgu parametrelerini depolamak için mevcut Dictionary bir nesne oluşturun veya kullanın.
  3. domain_hint Sözlüğe karşılık gelen etki alanı adıyla parametresini ekleyin (örneğin, facebook.com).
  4. 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:

  1. Dil özelleştirmesini yapılandırma.
  2. Ek sorgu parametrelerini depolamak için mevcut Dictionary bir nesne oluşturun veya kullanın.
  3. ui_locales Sözlüğe karşılık gelen dil kodunu içeren parametresini ekleyin (örneğin, en-us).
  4. 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:

  1. ContentDefinitionParameters öğesini yapılandırın.
  2. Ek sorgu parametrelerini depolamak için mevcut Dictionary bir nesne oluşturun veya kullanın.
  3. gibi campaignIdözel sorgu dizesi parametresini ekleyin. Parametre değerini ayarlayın (örneğin, germany-promotion).
  4. 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:

  1. Özel ilkenizde bir kimlik belirteci ipucu teknik profili tanımlayın.
  2. Kodunuzda bir kimlik belirteci oluşturun veya alın ve belirteci bir değişken olarak ayarlayın (örneğin, idToken).
  3. Ek sorgu parametrelerini depolamak için mevcut Dictionary bir nesne oluşturun veya kullanın.
  4. parametresini id_token_hint , kimlik belirtecini depolayan karşılık gelen değişkenle ekleyin.
  5. 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://localhostayarlayabilirsiniz 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 ise http://localhost, istekteki yeniden yönlendirme URI'si olabilir http://localhost:<randomport>. Kayıtlı yeniden yönlendirme URI'si ise http://localhost:8080, istekteki yeniden yönlendirme URI'sinin olması http://localhost:8080gerekir.
  • Benzersiz: Yeniden yönlendirme URI'sinin şeması her uygulama için benzersiz olmalıdır. örneğinde com.onmicrosoft.contosob2c.exampleapp://oauth/redirectcom.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