Oktatóanyag: Védett végpont implementálása az API-ba
Ebben az oktatóanyagban megtanulhatja, hogyan védheti meg az API-végpontokat hitelesítési elemek hozzáadásával a forráskódban. Az API-végpontok védelme biztosítja, hogy csak a jogosult felhasználók férhessenek hozzá. Az API hitelesítés nélküli kéréssel is tesztelhető, hogy az API korlátozza a jogosulatlan felhasználók hozzáférését. A Microsoft Identitásplatform lehetővé teszi az API-végpontok védelmét a Microsoft.Identity.Web NuGet-csomag használatával. Ebben a cikkben Ön;
- Hitelesítési elemek implementálása a forráskódba
- Időjárási adatok hozzáadása az API-hoz megjelenítendő
- Az API tesztelése hitelesítés nélküli GET-kéréssel
Előfeltételek
- Az oktatóanyag előfeltételeinek és lépéseinek elvégzése: ASP.NET Core-projekt létrehozása és konfigurálása hitelesítéshez.
Engedélyezés megvalósítása
Nyissa meg a Program.cs fájlt, és cserélje le a tartalmat a következő kódrészletre:
using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Authorization; using Microsoft.Identity.Web; var builder = WebApplication.CreateBuilder(args); builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApi(options => { builder.Configuration.Bind("AzureAd", options); options.TokenValidationParameters.NameClaimType = "name"; }, options => { builder.Configuration.Bind("AzureAd", options); }); builder.Services.AddAuthorization(config => { config.AddPolicy("AuthZPolicy", policyBuilder => policyBuilder.Requirements.Add(new ScopeAuthorizationRequirement() { RequiredScopesConfigurationKey = $"AzureAd:Scopes" })); }); // Add services to the container. builder.Services.AddRazorPages(); var app = builder.Build(); app.UseAuthentication(); app.UseAuthorization(); var weatherSummaries = new[] { "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" }; app.MapGet("/weatherforecast", [Authorize(Policy = "AuthZPolicy")] () => { var forecast = Enumerable.Range(1, 5).Select(index => new WeatherForecast ( DateTime.Now.AddDays(index), Random.Shared.Next(-20, 55), weatherSummaries[Random.Shared.Next(weatherSummaries.Length)] )) .ToArray(); return forecast; }) .WithName("GetWeatherForecast"); // Configure the HTTP request pipeline. if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.MapRazorPages(); app.Run(); record WeatherForecast(DateTime Date, int TemperatureC, string? Summary) { public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); }
Az alkalmazás tesztelése
- A Visual Studióban válassza az Indítás hibakeresés nélkül lehetőséget.
A weblap http://localhost:{host}
az alábbi képhez hasonló kimenetet jelenít meg. Ennek az az oka, hogy az API hitelesítés nélkül van meghívva. Egy engedélyezett hívás indításához tekintse meg a következő lépéseket a védett webes API-k elérésére vonatkozó útmutatókhoz.