Azure AD B2C kullanarak web API'sini çağıran örnek bir web uygulamasında kimlik doğrulamasını yapılandırma

Bu makalede, web uygulamalarınıza Azure Active Directory B2C (Azure AD B2C) kimlik doğrulaması eklemeyi göstermek için bir web API'sini çağıran örnek bir ASP.NET web uygulaması kullanılmaktadır.

Önemli

Bu makalede başvuruda bulunan örnek ASP.NET web uygulaması taşıyıcı belirteci olan bir web API'sini çağırmak için kullanılır. Web API'sini çağırmayan bir web uygulaması için bkz . Azure AD B2C kullanarak örnek bir web uygulamasında kimlik doğrulamasını yapılandırma.

Genel Bakış

OpenID Bağlan (OIDC), OAuth 2.0 üzerinde oluşturulmuş bir kimlik doğrulama protokolüdür. Bir uygulamada güvenli bir şekilde oturum açmak için OIDC kullanabilirsiniz. Bu web uygulaması örneği Microsoft Identity Web kullanır. Microsoft Identity Web, güvenli bir web API'sini çağırabilen web uygulamalarına kimlik doğrulaması ve yetkilendirme desteği eklemeyi basitleştiren bir ASP.NET Core kitaplıkları kümesidir.

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

  1. Kullanıcılar web uygulamasına gider ve Oturum aç'ı seçer.

  2. Uygulama bir kimlik doğrulama isteği başlatır ve kullanıcıları Azure AD B2C'ye yönlendirir.

  3. Kullanıcılar kaydolun veya oturum açın ve parolayı sıfırlayın. Alternatif olarak, bir sosyal hesapla oturum açabilirler.

  4. Kullanıcılar oturum açıldıktan sonra Azure AD B2C uygulamaya bir yetkilendirme kodu döndürür.

  5. Uygulama daha sonra aşağıdakileri yapar:

    a. Yetkilendirme kodunu bir kimlik belirteci, erişim belirteci ve yenileme belirteciyle değiştirir.
    b. Kimlik belirteci taleplerini okur ve bir uygulama yetkilendirme tanımlama bilgisini kalıcı hale döndürür.
    c. Yenileme belirtecini 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 kaydedersiniz.

  • Web uygulaması kaydı, uygulamanızın Azure AD B2C ile oturum açmasını sağlar. Kayıt sırasında yeniden yönlendirme URI'sini belirtirsiniz. Yeniden yönlendirme URI'si, Azure AD B2C ile kimlik doğrulaması tamamlandıktan sonra kullanıcıların Azure AD B2C tarafından yönlendirildiği uç noktadır. Uygulama kayıt işlemi, uygulamanızı benzersiz olarak tanımlayan istemci kimliği olarak da bilinen bir uygulama kimliği oluşturur. Ayrıca, uygulamanızın belirteçleri güvenli bir şekilde almak için kullandığı bir istemci gizli dizisi de oluşturursunuz.

  • Web API kaydı, uygulamanızın güvenli bir web API'sini çağırmasını sağlar. Kayıt, web API kapsamlarını içerir. Kapsamlar, web API'niz gibi korumalı kaynaklara yönelik izinleri yönetmek için bir yol sağlar. Web uygulamasına web API kapsamları için izinler verirsiniz. Erişim belirteci istendiğinde, uygulamanız isteğin kapsam parametresinde istenen izinleri belirtir.

Uygulama mimarisi ve kayıtları aşağıdaki diyagramda gösterilmiştir:

Diagram of a web app with web API call 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

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

Aşağıdakilerden birini ç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: Web uygulamalarını kaydetme

Bu adımda, web uygulamasını ve web API'sinin uygulama kaydını oluşturur ve web API'nizin kapsamlarını belirtirsiniz.

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: Web uygulamasını kaydetme

Web uygulaması kaydını oluşturmak için aşağıdakileri yapın:

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

  2. Ad'ın altında uygulama için bir ad girin (örneğin, webapp1).

  3. 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.

  4. Yeniden Yönlendirme URI'si'nin altında Web'i seçin ve URL kutusuna yazınhttps://localhost:5000/signin-oidc.

  5. İzinler'in altında Openid ve çevrimdışı erişim izinleri için yönetici onayı ver onay kutusunu seçin.

  6. Kaydet'i seçin.

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

  8. Web uygulamasını yapılandırırken daha sonra kullanmak üzere Uygulama (istemci) kimliğini kaydedin.

    Screenshot of the web app Overview page for recording your web application ID.

2.4. Adım: Web uygulaması istemci gizli dizisi oluşturma

Kayıtlı web uygulaması için bir istemci gizli dizisi oluşturun. Web uygulaması, belirteç istediğinde kimliğini kanıtlamak için istemci gizli dizisini kullanır.

  1. Yönet'in altında Sertifikalar ve gizli diziler'i seçin.
  2. Yeni gizli anahtar'ı seçin.
  3. Açıklama kutusuna istemci gizli dizisi için bir açıklama girin (örneğin, clientsecret1).
  4. Süre Sonu'nun altında gizli dizinin geçerli olduğu süreyi seçin ve ardından Ekle'yi seçin.
  5. Gizli dizinin Değerini kaydedin. Bu değeri sonraki bir adımda yapılandırma için kullanacaksınız.

2.5. Adım: Web API'sine web 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: Web uygulaması örneğini alma

GitHub'dan örnek web uygulamasını kopyalamak için zip dosyasını indirin veya aşağıdaki Bash komutunu çalıştırın.

git clone https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2

Örnek dosyayı, yolun toplam uzunluğunun 260 veya daha az karakter olduğu bir klasöre ayıklayın.

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

Örnek klasörde, 4-WebApp-your-API/4-2-B2C/TodoListService klasöründe, Visual Studio veya Visual Studio Code ile TodoListService.csproj projesini açın.

Proje kök klasörünün altında appsettings.json dosyasını açın. Bu dosya, Azure AD B2C kimlik sağlayıcınız hakkında bilgi içerir. Web API uygulaması, web uygulamasının taşıyıcı belirteç olarak geçirdiği erişim belirtecini doğrulamak için bu bilgileri kullanır. Uygulama ayarlarının aşağıdaki özelliklerini güncelleştirin:

Bölüm Anahtar Değer
AzureAdB2C Örnek Azure AD B2C kiracı adınızın ilk bölümü. Örneğin, https://contoso.b2clogin.com.
AzureAdB2C Domain Azure AD B2C kiracınızın tam kiracı adı. Örneğin, contoso.onmicrosoft.com.
AzureAdB2C ClientId 2.1. adımdaki web API'si uygulama kimliği.
AzureAdB2C SignUpSignInPolicyId Kullanıcı akışları veya 1. adımda oluşturduğunuz özel ilke.

Son yapılandırma dosyanız aşağıdaki JSON dosyası gibi görünmelidir:

{
  "AzureAdB2C": {
    "Instance": "https://contoso.b2clogin.com",
    "Domain": "contoso.onmicrosoft.com",
    "ClientId": "<web-api-app-application-id>",
    "SignedOutCallbackPath": "/signout/<your-sign-up-in-policy>",
    "SignUpSignInPolicyId": "<your-sign-up-in-policy>"
  },
  // More settings here
}

4.1. Adım: İzin ilkesini ayarlama

Web API'si, kullanıcının taşıyıcı belirteci ile kimlik doğrulamasından geçirildiğini ve taşıyıcı belirtecin yapılandırılmış kabul edilen kapsamlara sahip olduğunu doğrular. Taşıyıcı belirteci bu kabul edilen kapsamlardan herhangi birine sahip değilse, web API'si HTTP durum kodu 403 (Yasak) döndürür ve yanıt gövdesine belirteçte hangi kapsamların beklendiğini belirten bir ileti yazar.

Kabul edilen kapsamları yapılandırmak için sınıfını Controller/TodoListController.cs açın ve kapsam adını tam URI olmadan ayarlayın.

[RequiredScope("tasks.read")]

4.2. Adım: Örnek web API'sini çalıştırma

Web uygulamasının web API örneğini çağırmasına izin vermek için aşağıdakileri yaparak web API'sini çalıştırın:

  1. Bunu yapmanız istenirse bağımlılıkları geri yükleyin.
  2. Projeyi derleyin ve çalıştırın.
  3. Proje oluşturulduktan sonra, Visual Studio veya Visual Studio Code web API'sini tarayıcılarda aşağıdaki adresle başlatır: https://localhost:44332.

5. Adım: Örnek web uygulamasını yapılandırma

Örnek klasörde, klasörün altında4-WebApp-your-API/4-2-B2C/Client, Visual Studio veya Visual Studio Code ile TodoListClient.csproj projesini açın.

Proje kök klasörünün altında dosyayı açın appsettings.json . Bu dosya, Azure AD B2C kimlik sağlayıcınız hakkında bilgi içerir. Web 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. Uygulama ayarlarının aşağıdaki özelliklerini güncelleştirin:

Bölüm Anahtar Değer
AzureAdB2C Örnek Azure AD B2C kiracı adınızın ilk bölümü (örneğin, https://contoso.b2clogin.com).
AzureAdB2C Domain Azure AD B2C kiracınızın tam kiracı adı (örneğin, contoso.onmicrosoft.com).
AzureAdB2C ClientId 2.3. adımdaki web uygulaması kimliği.
AzureAdB2C ClientSecret 2.4. adımdaki web uygulaması gizli dizisi.
AzureAdB2C SignUpSignInPolicyId Kullanıcı akışları veya 1. adımda oluşturduğunuz özel ilke.
TodoList TodoListScope 2.5. adımda oluşturduğunuz web API kapsamları.
TodoList TodoListBaseAddress Web API'nizin temel URI'si (örneğin https://localhost:44332).

Son yapılandırma dosyanız aşağıdaki JSON gibi görünmelidir:

{
  "AzureAdB2C": {
    "Instance": "https://contoso.b2clogin.com",
    "Domain": "contoso.onmicrosoft.com",
    "ClientId": "<web-app-application-id>",
    "ClientSecret": "<web-app-application-secret>",  
    "SignedOutCallbackPath": "/signout/<your-sign-up-in-policy>",
    "SignUpSignInPolicyId": "<your-sign-up-in-policy>"
  },
  "TodoList": {
    "TodoListScope": "https://contoso.onmicrosoft.com/api/demo.read",
    "TodoListBaseAddress": "https://localhost:44332"
  }
}

6. Adım: Örnek web uygulamasını çalıştırma

  1. Projeyi derleyin ve çalıştırın.
  2. https://localhost:5000 adresine göz atın.
  3. Kaydolma veya oturum açma işlemini tamamlayın.

Kimlik doğrulaması başarılı olduktan sonra görünen adınızı gezinti çubuğunda görürsünüz. Azure AD B2C belirtecinin uygulamanıza döndürdüğü talepleri görüntülemek için TodoList'i seçin.

Screenshot of the web app token claims.

Uygulamanızı dağıtma

Üretim uygulamasında, uygulama kaydı yeniden yönlendirme URI'si genellikle uygulamanızın çalıştığı genel olarak erişilebilir bir uç noktadır, örneğin https://contoso.com/signin-oidc.

Kayıtlı uygulamalarınıza istediğiniz zaman yeniden yönlendirme URI'leri ekleyebilir ve değiştirebilirsiniz. Yeniden yönlendirme URI'leri için aşağıdaki kısıtlamalar geçerlidir:

  • Yanıt URL'si düzeniyle httpsbaşlamalıdır.
  • Yanıt URL'si büyük/küçük harfe duyarlıdır. Büyük/küçük harf, çalışan uygulamanızın URL yolunun durumuyla eşleşmelidir.

Web uygulaması için belirteç önbelleği

Web uygulaması örneği bellek içi belirteç önbelleği serileştirmesini kullanır. Bu uygulama örneklerde harikadır. Ayrıca, web uygulaması yeniden başlatıldığında belirteç önbelleğinin kaybolmasına aldırmıyorsanız üretim uygulamalarında da iyidir.

Üretim ortamı için dağıtılmış bir bellek önbelleği kullanmanızı öneririz. Örneğin, Redis önbelleği, NCache veya SQL Server önbelleği. Dağıtılmış bellek önbelleği uygulamaları hakkında ayrıntılı bilgi için bkz . Belirteç önbelleği serileştirme.

Sonraki adımlar