Простая аутентификация с помощью носителя JWT в ASP.NET Core 3.1

В этой статье блога мы рассмотрим различные методы реализации аутентификации носителя JWT в ASP.NET Core 3.1. Аутентификация носителя JWT (JSON Web Token) — популярный метод защиты веб-API. Мы обсудим шаги, необходимые для настройки аутентификации носителя JWT, и предоставим примеры кода для иллюстрации каждого метода.

Метод 1: ручная настройка.
Один из методов реализации аутентификации носителя JWT — это ручная настройка промежуточного программного обеспечения аутентификации в конвейере ASP.NET Core. Это включает в себя добавление необходимых служб и промежуточного программного обеспечения для проверки и обработки токенов JWT. Вот пример ручной настройки аутентификации носителя JWT:

public void ConfigureServices(IServiceCollection services)
{
    // Add JWT Bearer authentication
    services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(options =>
        {
            options.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuer = true,
                ValidateAudience = true,
                ValidateLifetime = true,
                ValidateIssuerSigningKey = true,
                // Add your issuer, audience, and signing key configuration
                // ...
            };
        });
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseAuthentication();
    // Other middleware configurations
    // ...
}

Метод 2: Авторизация на основе атрибутов.
Другой метод — использовать авторизацию на основе атрибутов для защиты определенных конечных точек или контроллеров с помощью аутентификации носителя JWT. Это позволяет вам украсить ваш контроллер или методы действий атрибутом [Authorize]и указать схему аутентификации как JWT Bearer. Вот пример:

[ApiController]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public class MyProtectedController : ControllerBase
{
    // Controller actions
    // ...
}

Метод 3: Авторизация на основе политик.
Вы также можете использовать авторизацию на основе политик с аутентификацией носителя JWT. Этот подход позволяет вам определять собственные политики и применять их к вашим контроллерам или методам действий. Вот пример:

public void ConfigureServices(IServiceCollection services)
{
    // Add JWT Bearer authentication
    services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(options =>
        {
            // Token validation parameters
            // ...
        });
    services.AddAuthorization(options =>
    {
        options.AddPolicy("MyCustomPolicy", policy =>
        {
            policy.AuthenticationSchemes.Add(JwtBearerDefaults.AuthenticationScheme);
            // Add authorization requirements
            // ...
        });
    });
}
[ApiController]
[Authorize(Policy = "MyCustomPolicy")]
public class MyProtectedController : ControllerBase
{
    // Controller actions
    // ...
}

В этой статье мы рассмотрели различные методы реализации аутентификации по каналу JWT в ASP.NET Core 3.1. Мы рассмотрели настройку вручную, авторизацию на основе атрибутов и авторизацию на основе политик. Эти методы обеспечивают гибкость и контроль над тем, как вы защищаете свои веб-API с помощью аутентификации носителя JWT. Следуя приведенным примерам кода и рекомендациям, вы сможете легко настроить безопасную аутентификацию для своих приложений ASP.NET Core.