Azure AD B2C kullanarak örnek WPF masaüstü uygulamasında kimlik doğrulaması yapılandırma

Bu makalede, masaüstü uygulamalarınıza Azure Active Directory B2C (Azure AD B2C) kimlik doğrulaması eklemeyi göstermek için örnek bir Windows Presentation Foundation (WPF) masaüstü uygulaması kullanılmaktadır.

Genel Bakış

OpenID Bağlan (OIDC), OAuth 2.0 üzerinde oluşturulmuş bir kimlik doğrulama protokolüdür. Kullanıcıların uygulamada güvenli bir şekilde oturum açmasını sağlamak için OIDC'yi kullanabilirsiniz. Bu masaüstü uygulaması örneği, Kod Değişimi (PKCE) akışı için OIDC yetkilendirme kodu Yazım Denetleme Anahtarı ile Microsoft Kimlik Doğrulama Kitaplığı 'nı (MSAL) kullanır. MSAL, masaüstü uygulamalarına kimlik doğrulaması ve yetkilendirme desteği eklemeyi kolaylaştıran Microsoft tarafından sağlanan bir kitaplıktır.

Oturum açma akışı aşağıdaki adımları içerir:

  1. Kullanıcılar uygulamayı açar ve oturum açmayı seçer.
  2. Uygulama, masaüstü cihazının sistem tarayıcısını açar ve Azure AD B2C'ye bir kimlik doğrulama isteği başlatır.
  3. Kullanıcılar kaydolun veya oturum açın, parolayı sıfırlayın veya bir sosyal hesapla oturum açın.
  4. Kullanıcılar başarıyla oturum açıldıktan sonra Azure AD B2C uygulamaya bir yetkilendirme kodu döndürür.
  5. Uygulama aşağıdaki eylemleri gerçekleştirir:
    1. Yetkilendirme kodunu bir kimlik belirteci, erişim belirteci ve yenileme belirteciyle değiştirir.
    2. Kimlik belirteci taleplerini okur.
    3. Belirteçleri daha sonra kullanmak üzere bellek içi önbellekte depolar.

Uygulama kaydına genel bakış

Uygulamanızın Azure AD B2C ile oturum açmasını ve bir web API'sini çağırmasını sağlamak için Azure AD B2C dizinine iki uygulama kaydedin.

  • Masaüstü uygulaması kaydı, uygulamanızın Azure AD B2C ile oturum açmasını sağlar. Uygulama kaydı sırasında Yeniden Yönlendirme URI'sini belirtin. Yeniden yönlendirme URI'si, kullanıcıların Azure AD B2C ile kimlik doğrulaması yaptıktan sonra Azure AD B2C tarafından yeniden yönlendirildiği uç noktadır. Uygulama kayıt işlemi, masaüstü uygulamanızı benzersiz olarak tanımlayan istemci kimliği olarak da bilinen bir uygulama kimliği oluşturur (örneğin, Uygulama Kimliği: 1).

  • Web API kaydı, uygulamanızın korumalı bir web API'sini çağırmasını sağlar. Kayıt, web API'sinin izinlerini (kapsamları) kullanıma sunar. Uygulama kayıt işlemi, web API'nizi benzersiz olarak tanımlayan bir uygulama kimliği oluşturur (örneğin, Uygulama Kimliği: 2). Masaüstü uygulamanıza (Uygulama Kimliği: 1) web API'si kapsamları için izinler verin (Uygulama Kimliği: 2).

Uygulama kaydı ve mimarisi aşağıdaki diyagramlarda gösterilmiştir:

Diagram of the desktop app with web API, registrations, and tokens.

Web API'sine çağrı

Kimlik doğrulaması tamamlandıktan sonra, kullanıcılar korumalı bir web API'sini çağıran uygulamayla etkileşim kurar. Web API'sinde taşıyıcı belirteç kimlik doğrulaması kullanılır. Taşıyıcı belirteci, uygulamanın Azure AD B2C'den aldığı erişim belirtecidir. Uygulama, belirteci HTTPS isteğinin yetkilendirme üst bilgisine geçirir.

Authorization: Bearer <access token>

Erişim belirtecinin kapsamı web API'sinin kapsamlarıyla eşleşmiyorsa, kimlik doğrulama kitaplığı doğru kapsamlara sahip yeni bir erişim belirteci alır.

Oturumu kapatma akışı

Oturum kapatma akışı aşağıdaki adımları içerir:

  1. Uygulamadan kullanıcılar oturumu kapatmış.
  2. Uygulama oturum nesnelerini temizler ve kimlik doğrulama kitaplığı da belirteç önbelleğini temizler.
  3. Uygulama, Azure AD B2C oturumunu sonlandırmak için kullanıcıları Azure AD B2C oturumu kapatma uç noktasına götürür.
  4. Kullanıcılar uygulamaya geri yönlendirilir.

Önkoşullar

.NET masaüstü geliştirme ile Visual Studio 2019 çalıştıran bir bilgisayar.

1. Adım: Kullanıcı akışınızı yapılandırma

Kullanıcılar uygulamanızda oturum açmaya çalıştığında, uygulama bir kullanıcı akışı aracılığıyla yetkilendirme uç noktasına bir kimlik doğrulama isteği başlatır. Kullanıcı akışı, kullanıcı deneyimini tanımlar ve denetler. Kullanıcılar kullanıcı akışını tamamladıktan sonra Azure AD B2C bir belirteç oluşturur ve ardından kullanıcıları uygulamanıza geri yönlendirir.

Henüz yapmadıysanız, bir kullanıcı akışı veya özel ilke oluşturun. Üç ayrı kullanıcı akışı oluşturmak için aşağıdaki adımları yineleyin:

  • Birleştirilmiş Oturum açma ve kullanıcı akışına kaydolma (gibi).susi Bu kullanıcı akışı, Parolanızı unuttunuz deneyimini de destekler.
  • Kullanıcı akışını düzenleyen profil, örneğinedit_profile.
  • Gibi reset_passwordbir Parola sıfırlama kullanıcı akışı.

Azure AD B2C B2C_1_ , kullanıcı akışı adına ekler. Örneğin susi, B2C_1_susi olur.

2. Adım: Uygulamalarınızı kaydetme

Masaüstü uygulamasını ve web API'sinin uygulama kaydını oluşturun ve web API'nizin kapsamlarını belirtin.

2.1. Adım: Web API'sini kaydetme

Web API'si uygulama kaydını (Uygulama Kimliği: 2) oluşturmak için şu adımları izleyin:

  1. Azure Portal oturum açın.

  2. Azure AD B2C kiracınızı içeren dizini kullandığınızdan emin olun. Portal araç çubuğunda Dizinler + abonelikler simgesini seçin.

  3. Portal ayarlarında | Dizinler + abonelikler sayfası, Dizin adı listesinde Azure AD B2C dizininizi bulun ve ardından Değiştir'i seçin.

  4. Azure portalında Azure AD B2C'yi arayın ve seçin.

  5. Uygulama kayıtları'ı ve ardından Yeni kayıt'ı seçin.

  6. Ad alanına uygulama için bir ad girin (örneğin, my-api1). Yeniden Yönlendirme URI'sinin ve Desteklenen hesap türlerinin varsayılan değerlerini değiştirmeyin.

  7. Kaydet'i seçin.

  8. Uygulama kaydı tamamlandıktan sonra Genel Bakış'ı seçin.

  9. Web uygulamasını yapılandırırken daha sonra kullanmak üzere Uygulama (istemci) Kimliği değerini kaydedin.

    Screenshot that demonstrates how to get a web A P I application I D.

2.2. Adım: Web API'si uygulama kapsamlarını yapılandırma

  1. Oluşturduğunuz my-api1 uygulamasını (Uygulama Kimliği: 2) seçerek Genel Bakış sayfasını açın.

  2. Yönet'in altında API'yi kullanıma sunma'yı seçin.

  3. Uygulama Kimliği URI'si'nin yanındaki Ayarla bağlantısını seçin. Varsayılan değeri (GUID) benzersiz bir adla (örneğin, tasks-api) değiştirin ve kaydet'i seçin.

    Web uygulamanız web API'si için bir erişim belirteci istediğinde, API için tanımladığınız her kapsamın ön eki olarak bu URI'yi eklemelidir.

  4. Bu API tarafından tanımlanan kapsamlar'ın altında Kapsam ekle'yi seçin.

  5. API'ye okuma erişimini tanımlayan bir kapsam oluşturmak için:

    1. Kapsam adı olarak tasks.read girin.
    2. Yönetici onay görünen adı için Görevlere okuma erişimi API'sini girin.
    3. Yönetici onay açıklaması için Görevler API'sine okuma erişimine izin verir girin.
  6. Kapsam ekle'yi seçin.

  7. Kapsam ekle'yi seçin ve ardından API'ye yazma erişimini tanımlayan bir kapsam ekleyin:

    1. Kapsam adı olarak tasks.write yazın.
    2. Yönetici onay görünen adı için Görevlere yazma erişimi API'sini girin.
    3. Yönetici onay açıklaması için Görevler API'sine yazma erişimine izin verir girin.
  8. Kapsam ekle'yi seçin.

2.3. Adım: Masaüstü uygulamasını kaydetme

Masaüstü uygulaması kaydını oluşturmak için aşağıdakileri yapın:

  1. Azure Portal oturum açın.
  2. Uygulama kayıtları'ı ve ardından Yeni kayıt'ı seçin.
  3. Ad'ın altında uygulama için bir ad girin (örneğin, desktop-app1).
  4. Desteklenen hesap türleri altında, herhangi bir kimlik sağlayıcısı veya kuruluş dizinindeki hesaplar (Kullanıcı akışı olan kullanıcıların kimliklerini doğrulamak için) seçeneğini belirleyin.
  5. Yeniden Yönlendirme URI'si'nin altında Genel istemci/yerel (masaüstü ve masaüstü) öğesini seçin ve URL kutusuna yazınhttps://your-tenant-name.b2clogin.com/oauth2/nativeclient. değerini kiracı adınız ile değiştirinyour-tenant-name. Diğer seçenekler için bkz . Yeniden yönlendirme URI'sini yapılandırma.
  6. Kaydet'i seçin.
  7. Uygulama kaydı tamamlandıktan sonra Genel Bakış'ı seçin.
  8. Masaüstü uygulamasını yapılandırırken daha sonra kullanmak üzere Uygulama (istemci) kimliğini kaydedin. Screenshot highlighting the desktop application ID.

2.4. Adım: Web API'sine masaüstü uygulaması izinleri verme

Uygulamanıza (Uygulama Kimliği: 1) izinleri vermek için şu adımları izleyin:

  1. Uygulama kayıtları'ı seçin ve ardından oluşturduğunuz uygulamayı seçin (Uygulama Kimliği: 1).

  2. Yönet'in altında API izinleri'ne tıklayın.

  3. Yapılandırılan izinler'in altında İzin ekle'yi seçin.

  4. API'lerim sekmesini seçin.

  5. Web uygulamasına erişim verilmesi gereken API'yi (Uygulama Kimliği: 2) seçin. Örneğin, my-api1 girin.

  6. İzin'in altında görevleri genişletin ve daha önce tanımladığınız kapsamları seçin (örneğin, tasks.read ve tasks.write).

  7. İzinler ekle'yi seçin.

  8. Kiracı adınız> için< Yönetici onayı ver'i seçin.

  9. Evet'i seçin.

  10. Yenile'yi seçin ve her iki kapsam için durum altında ... için verildi ifadesinin göründüğünü doğrulayın.

  11. Yapılandırılan izinler listesinden kapsamınızı seçin ve kapsamın tam adını kopyalayın.

    Screenshot of the configured permissions pane, showing that read access permissions are granted.

3. Adım: Örnek web API'sini yapılandırma

Bu örnek, masaüstü uygulamasının bir web API'sinde kullanabileceği ilgili kapsamlara sahip bir erişim belirteci alır. Koddan bir web API'sini çağırmak için aşağıdakileri yapın:

  1. Mevcut bir web API'sini kullanın veya yeni bir tane oluşturun. Daha fazla bilgi için bkz . Azure AD B2C kullanarak kendi web API'nizde kimlik doğrulamasını etkinleştirme.
  2. Web API'sini yapılandırdıktan sonra web API uç noktasının URI'sini kopyalayın. Sonraki adımlarda web API uç noktasını kullanacaksınız.

Bahşiş

Web API'niz yoksa da bu örneği çalıştırabilirsiniz. Bu durumda uygulama erişim belirtecini döndürür ancak web API'sini çağıramaz.

4. Adım: WPF masaüstü uygulaması örneğini alma

  1. .zip dosyasını indirin veya GitHub deposundan örnek web uygulamasını kopyalayın.

    git clone https://github.com/Azure-Samples/active-directory-b2c-dotnet-desktop.git
    
  2. Active-directory-b2c-wpf çözümünü (active-directory-b2c-wpf.sln dosyası) Visual Studio'da açın.

5. Adım: Örnek masaüstü uygulamasını yapılandırma

active-directory-b2c-wpf projesinde App.xaml.cs dosyasını açın. Sınıf üyeleri, App.xaml.cs Azure AD B2C kimlik sağlayıcınız hakkında bilgi içerir. Masaüstü uygulaması, Azure AD B2C ile güven ilişkisi kurmak, kullanıcıların oturumunu açıp kapatmak, belirteçleri almak ve bunları doğrulamak için bu bilgileri kullanır.

Aşağıdaki sınıf üyelerini güncelleştirin:

Anahtar Değer
TenantName Azure AD B2C kiracı adınızın ilk bölümü (örneğin, contoso.b2clogin.com).
ClientId 2.3. adımdaki masaüstü uygulaması kimliği.
PolicySignUpSignIn 1. adımda oluşturduğunuz kaydolma veya oturum açma kullanıcı akışı veya özel ilke.
PolicyEditProfile 1. adımda oluşturduğunuz profil kullanıcı akışını veya özel ilkeyi düzenleyin.
ApiEndpoint (İsteğe bağlı) 3. adımda oluşturduğunuz web API'sinin uç noktası (örneğin, https://contoso.azurewebsites.net/hello).
ApiScopes 2.4. adımda oluşturduğunuz web API kapsamları.

Son App.xaml.cs dosyanız aşağıdaki C# kodu gibi görünmelidir:

public partial class App : Application
{

private static readonly string TenantName = "contoso";
private static readonly string Tenant = $"{TenantName}.onmicrosoft.com";
private static readonly string AzureAdB2CHostname = $"{TenantName}.b2clogin.com";
private static readonly string ClientId = "<web-api-app-application-id>";
private static readonly string RedirectUri = $"https://{TenantName}.b2clogin.com/oauth2/nativeclient";

public static string PolicySignUpSignIn = "b2c_1_susi";
public static string PolicyEditProfile = "b2c_1_edit_profile";
public static string PolicyResetPassword = "b2c_1_reset";

public static string[] ApiScopes = { $"https://{Tenant}//api/tasks.read" };
public static string ApiEndpoint = "https://contoso.azurewebsites.net/hello";

6. Adım: Masaüstü uygulamasını çalıştırma ve test edin

  1. NuGet paketlerini geri yükleyin.

  2. Örneği derlemek ve çalıştırmak için F5'i seçin.

  3. Oturum Aç'ı seçin ve ardından Azure AD B2C yerel veya sosyal hesabınızla kaydolun veya oturum açın.

    Screenshot highlighting how to start the sign-in flow.

  4. Başarılı bir kaydolma veya oturum açma işleminin ardından belirteç ayrıntıları WPF uygulamasının alt bölmesinde görüntülenir.

    Screenshot highlighting the Azure AD B2C access token and user ID.

  5. Web API'nizi çağırmak için API'yi ara'yı seçin.

Sonraki adımlar

Azure AD B2C kullanarak WPF masaüstü uygulamasında kimlik doğrulama seçeneklerini yapılandırmayı öğrenin.