Hızlı Başlangıç: ASP.NET Core web API'sini Microsoft kimlik platformu ile koruma
Hoş geldiniz! Bu büyük olasılıkla beklediğiniz sayfa değildir. Bir düzeltme üzerinde çalışırken bu bağlantı sizi doğru makaleye götürmelidir:
Bu sorun için özür dileriz ve bu sorunu çözmek için çalışırken sabrınızı takdir ediyoruz.
Aşağıdaki hızlı başlangıçta, yetkili hesaplara kaynak erişimini kısıtlamayı göstermek için bir ASP.NET Core web API'si kod örneği kullanılmaktadır. Örnek, herhangi bir Azure Active Directory (Azure AD) kuruluşunda kişisel Microsoft hesaplarının ve hesaplarının yetkisini destekler.
Önkoşullar
- Etkin aboneliği olan Azure hesabı. Ücretsiz bir hesap oluşturun.
- Azure Active Directory kiracısı
- .NET Core SDK 6.0+
- Visual Studio 2022 veya Visual Studio Code
1. Adım: Uygulamayı kaydetme
İlk olarak, web API'sini Azure AD kiracınıza kaydedin ve aşağıdaki adımları izleyerek bir kapsam ekleyin:
- Azure Portal’ında oturum açın.
- Birden çok kiracıya erişim varsa, uygulamanın kaydedildiği kiracıya geçmek için üst menüdeki Dizinler + abonelikler filtresini
kullanın.
- Azure Active Directory'yi bulun ve seçin.
- Yönet'in altında Uygulama kayıtları>Yeni kayıt'ı seçin.
- Ad alanına uygulama için bir ad girin. Örneğin , AspNetCoreWebApi-Quickstart girin. Uygulamanın kullanıcıları bu adı görür ve daha sonra değiştirilebilir.
- Kaydet’i seçin.
- Yönet'in altında API'yi> kullanıma sunmaKapsam ekle'yi seçin. Uygulama Kimliği URI'si için Kaydet ve devam et'i seçerek varsayılan değeri kabul edin ve aşağıdaki ayrıntıları girin:
- Kapsam adı:
access_as_user
- Kimler onay verebilir?: Yöneticiler ve kullanıcılar
- onay görünen adını Yönetici:
Access AspNetCoreWebApi-Quickstart
- onay açıklaması Yönetici:
Allows the app to access AspNetCoreWebApi-Quickstart as the signed-in user.
- Kullanıcı onayı görünen adı:
Access AspNetCoreWebApi-Quickstart
- Kullanıcı onayı açıklaması:
Allow the application to access AspNetCoreWebApi-Quickstart on your behalf.
- Durum: Etkin
- Kapsam ekleme işlemini tamamlamak için Kapsam ekle'yi seçin.
2. Adım: ASP.NET Core projesini indirme
GitHub'dan ASP.NET Core çözümünü indirin.
Not
Kod örneği şu anda 3.1 ASP.NET Core hedeflemektedir. Örnek, .NET Core 6.0 kullanacak şekilde güncelleştirilebilir ve aşağıdaki adımlarda ele alınmıştır: Örnek kodu ASP.NET Core 6.0'a güncelleştirin. Bu hızlı başlangıç yakın gelecekte kullanımdan kaldırılacak ve .NET 6.0 kullanacak şekilde güncelleştirilecektir.
3. Adım: ASP.NET Core projesini yapılandırma
Bu adımda, örnek kod daha önce oluşturulan uygulama kaydıyla çalışacak şekilde yapılandırılır.
Windows'da yol uzunluğu sınırlamalarından kaynaklanan hataları önlemek için .zip dosyasını diskin köküne yakın bir yerel klasöre ayıklayın. Örneğin, C:\Azure-Samples dizinine ayıklayın.
Çözümü kod düzenleyicinizdeki webapi klasöründe açın.
appsettings.json dosyasında, ve
TenantId
değerleriniClientId
değiştirin."ClientId": "Enter_the_Application_Id_here", "TenantId": "Enter_the_Tenant_Info_Here"
Enter_the_Application_Id_Here
kayıtlı uygulamanın uygulama (istemci) kimliğidir.- değerini aşağıdakilerden biriyle değiştirin
Enter_the_Tenant_Info_Here
:- Uygulama yalnızca bu kuruluş dizinindeki Hesapları destekliyorsa, bu değeri dizin (kiracı) kimliği (GUID) veya kiracı adıyla (örneğin,
contoso.onmicrosoft.com
) değiştirin. Dizin (kiracı) kimliği uygulamanın Genel Bakış sayfasında bulunabilir. - Uygulama herhangi bir kuruluş dizininde Hesapları destekliyorsa, bu değeri ile
organizations
değiştirin. - Uygulama Tüm Microsoft hesabı kullanıcılarını destekliyorsa, bu değeri olarak
common
bırakın.
- Uygulama yalnızca bu kuruluş dizinindeki Hesapları destekliyorsa, bu değeri dizin (kiracı) kimliği (GUID) veya kiracı adıyla (örneğin,
Bu hızlı başlangıç için appsettings.json dosyasındaki diğer değerleri değiştirmeyin.
4. Adım: Örnek kodu ASP.NET Core 6.0 olarak güncelleştirme
Bu kod örneğini ASP.NET Core 6.0'ı hedefleye güncelleştirmek için şu adımları izleyin:
- webapi.csproj dosyasını açın
- Aşağıdaki satırı kaldırın:
<TargetFramework>netcoreapp3.1</TargetFramework>
- Yerine aşağıdaki satırı ekleyin:
<TargetFramework>netcoreapp6.0</TargetFramework>
Bu adım, örneğin .NET Core 6.0 çerçevesini hedeflediğinden emin olur.
5. Adım: Örneği çalıştırma
Bir terminal açın ve dizini proje klasörüne değiştirin.
cd webapi
Çözümü oluşturmak için aşağıdaki komutu çalıştırın:
dotnet run
Derleme başarılı olursa aşağıdaki çıkış görüntülenir:
Building...
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:{port}
info: Microsoft.Hosting.Lifetime[0]
Now listening on: http://localhost:{port}
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
...
Örnek nasıl çalışır?
Web API'si bir istemci uygulamasından belirteç alır ve web API'sindeki kod belirteci doğrular. Bu senaryo Senaryo : Korumalı web API'sinde daha ayrıntılı olarak açıklanmıştır.
Başlangıç sınıfı
Microsoft.AspNetCore.Authentication ara yazılımı, barındırma işlemi başladığında yürütülen bir Startup
sınıf kullanır. ConfigureServices
yönteminde, AddMicrosoftIdentityWebApi
Microsoft.Identity.Web tarafından sağlanan uzantı yöntemi çağrılır.
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApi(Configuration, "AzureAd");
}
AddAuthentication()
yöntemi hizmeti JwtBearer tabanlı kimlik doğrulaması ekleyecek şekilde yapılandırır.
öğesini içeren .AddMicrosoftIdentityWebApi
satır, web API'sine Microsoft kimlik platformu yetkilendirmesini ekler. Ardından Microsoft kimlik platformu tarafından verilen erişim belirteçlerini appsettings.json yapılandırma dosyasının bölümündeki bilgilere AzureAD
göre doğrulayacak şekilde yapılandırılır:
appsettings.json anahtarı | Description |
---|---|
------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
ClientId |
Azure portal kaydedilen uygulamanın uygulama (istemci) kimliği. |
Instance |
Kullanıcının kimlik doğrulaması için güvenlik belirteci hizmeti (STS) uç noktası. Bu değer genellikle https://login.microsoftonline.com/ Azure genel bulutunu gösteren değeridir. |
TenantId |
Kiracınızın veya kiracı kimliğinizin (GUID) adı ya da iş veya common okul hesapları ya da Microsoft kişisel hesapları olan kullanıcılarda oturum açmak için. |
Configure()
yöntemi, app.UseAuthentication()
adlandırılmış işlevlerini etkinleştiren ve app.UseAuthorization()
adlı iki önemli yöntemi içerir:
// The runtime calls this method. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
// more code
app.UseAuthentication();
app.UseAuthorization();
// more code
}
Denetleyiciyi, denetleyicinin yöntemini veya Razor sayfasını koruma
Denetleyici veya denetleyici yöntemleri özniteliği kullanılarak [Authorize]
korunabilir. Bu öznitelik, yalnızca kimliği doğrulanmış kullanıcılara izin vererek denetleyiciye veya yöntemlere erişimi kısıtlar. Kullanıcının kimliği doğrulanmamışsa denetleyiciye erişmek için bir kimlik doğrulama sınaması başlatılabilir.
namespace webapi.Controllers
{
[Authorize]
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
Denetleyicide kapsam doğrulaması
API'deki kod, kullanarak HttpContext.VerifyUserHasAnyAcceptedScope> (scopeRequiredByApi);
gerekli kapsamların belirteçte olduğunu doğrular:
namespace webapi.Controllers
{
[Authorize]
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
// The web API will only accept tokens 1) for users, and 2) having the "access_as_user" scope for this API
static readonly string[] scopeRequiredByApi = new string[] { "access_as_user" };
[HttpGet]
public IEnumerable<WeatherForecast> Get()
{
HttpContext.VerifyUserHasAnyAcceptedScope(scopeRequiredByApi);
// some code here
}
}
}
Yardım ve destek
Yardıma ihtiyacınız varsa, bir sorunu bildirmek veya destek seçenekleriniz hakkında bilgi edinmek istiyorsanız bkz. Geliştiriciler için yardım ve destek.
Sonraki adımlar
Aşağıdaki GitHub deposu, ASP.NET Core web API'sinin kod örneği yönergelerini ve aşağıdakilerin nasıl başarıldığını gösteren daha fazla örneği içerir:
- Yeni bir ASP.NET Core web API'sine kimlik doğrulaması ekleyin.
- Masaüstü uygulamasından web API'sini çağırın.
- Microsoft Graph ve diğer Microsoft API'leri gibi aşağı akış API'lerini çağırabilirsiniz.