Megosztás a következőn keresztül:


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

Engedélyezés megvalósítása

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

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

A weblap indításakor megjelenő 401-et ábrázoló képernyőkép.

Következő lépések