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:
Kullanıcılar web uygulamasına gider ve Oturum aç'ı seçer.
Uygulama bir kimlik doğrulama isteği başlatır ve kullanıcıları Azure AD B2C'ye yönlendirir.
Kullanıcılar kaydolun veya oturum açın ve parolayı sıfırlayın. Alternatif olarak, bir sosyal hesapla oturum açabilirler.
Kullanıcılar oturum açıldıktan sonra Azure AD B2C uygulamaya bir yetkilendirme kodu döndürür.
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:
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:
- Uygulamadan kullanıcılar oturumu kapatmış.
- Uygulama oturum nesnelerini temizler ve kimlik doğrulama kitaplığı da belirteç önbelleğini temizler.
- Uygulama, Azure AD B2C oturumunu sonlandırmak için kullanıcıları Azure AD B2C oturumu kapatma uç noktasına götürür.
- 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ğin
edit_profile
. - Gibi
reset_password
bir 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:
Azure Portal oturum açın.
Azure AD B2C kiracınızı içeren dizini kullandığınızdan emin olun. Portal araç çubuğunda Dizinler + abonelikler simgesini seçin.
Portal ayarlarında | Dizinler + abonelikler sayfası, Dizin adı listesinde Azure AD B2C dizininizi bulun ve ardından Değiştir'i seçin.
Azure portalında Azure AD B2C'yi arayın ve seçin.
Uygulama kayıtları'ı ve ardından Yeni kayıt'ı seçin.
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.
Kaydet'i seçin.
Uygulama kaydı tamamlandıktan sonra Genel Bakış'ı seçin.
Web uygulamasını yapılandırırken daha sonra kullanmak üzere Uygulama (istemci) Kimliği değerini kaydedin.
2.2. Adım: Web API'si uygulama kapsamlarını yapılandırma
Oluşturduğunuz my-api1 uygulamasını (Uygulama Kimliği: 2) seçerek Genel Bakış sayfasını açın.
Yönet'in altında API'yi kullanıma sunma'yı seçin.
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.
Bu API tarafından tanımlanan kapsamlar'ın altında Kapsam ekle'yi seçin.
API'ye okuma erişimini tanımlayan bir kapsam oluşturmak için:
- Kapsam adı olarak tasks.read girin.
- Yönetici onay görünen adı için Görevlere okuma erişimi API'sini girin.
- Yönetici onay açıklaması için Görevler API'sine okuma erişimine izin verir girin.
Kapsam ekle'yi seçin.
Kapsam ekle'yi seçin ve ardından API'ye yazma erişimini tanımlayan bir kapsam ekleyin:
- Kapsam adı olarak tasks.write yazın.
- Yönetici onay görünen adı için Görevlere yazma erişimi API'sini girin.
- Yönetici onay açıklaması için Görevler API'sine yazma erişimine izin verir girin.
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:
Uygulama kayıtları'ı ve ardından Yeni kayıt'ı seçin.
Ad'ın altında uygulama için bir ad girin (örneğin, webapp1).
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.
Yeniden Yönlendirme URI'si'nin altında Web'i seçin ve URL kutusuna yazın
https://localhost:5000/signin-oidc
.İzinler'in altında Openid ve çevrimdışı erişim izinleri için yönetici onayı ver onay kutusunu seçin.
Kaydet'i seçin.
Uygulama kaydı tamamlandıktan sonra Genel Bakış'ı seçin.
Web uygulamasını yapılandırırken daha sonra kullanmak üzere Uygulama (istemci) kimliğini kaydedin.
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.
- Yönet'in altında Sertifikalar ve gizli diziler'i seçin.
- Yeni gizli anahtar'ı seçin.
- Açıklama kutusuna istemci gizli dizisi için bir açıklama girin (örneğin, clientsecret1).
- Süre Sonu'nun altında gizli dizinin geçerli olduğu süreyi seçin ve ardından Ekle'yi seçin.
- 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:
Uygulama kayıtları'ı seçin ve ardından oluşturduğunuz uygulamayı seçin (Uygulama Kimliği: 1).
Yönet'in altında API izinleri'ne tıklayın.
Yapılandırılan izinler'in altında İzin ekle'yi seçin.
API'lerim sekmesini seçin.
Web uygulamasına erişim verilmesi gereken API'yi (Uygulama Kimliği: 2) seçin. Örneğin, my-api1 girin.
İ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).
İzinler ekle'yi seçin.
Kiracı adınız> için< Yönetici onayı ver'i seçin.
Evet'i seçin.
Yenile'yi seçin ve her iki kapsam için durum altında ... için verildi ifadesinin göründüğünü doğrulayın.
Yapılandırılan izinler listesinden kapsamınızı seçin ve kapsamın tam adını kopyalayın.
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:
- Bunu yapmanız istenirse bağımlılıkları geri yükleyin.
- Projeyi derleyin ve çalıştırın.
- 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
- Projeyi derleyin ve çalıştırın.
https://localhost:5000
adresine göz atın.- 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.
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
https
baş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
- Kod örneği hakkında daha fazla bilgi edinin.
- Azure AD B2C kullanarak kendi web uygulamanızda kimlik doğrulamasını etkinleştirmeyi öğrenin.
- Kendi web API'nizde kimlik doğrulamasını etkinleştirmeyi öğrenin.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin