/
softailor
/
gridient
Обзор
Документация
Войти
/
softailor
/
gridient
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/Gridient.Host.PostgreSQL/Configuring/LocalAuthenticationConfiguration.cs
78 строк
5 KB
Jenkins
Auto add
18 фев 2026, 10:19
18 фев 2026, 10:19
1e6c4f8
Код
Авторство
О чём код?
using Gridient.Infrastructure.Authentication.Local.Options; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.JwtBearer; namespace Gridient.Configuring { /// <summary> /// Конфигурация аутентификации только для Local режима (JWT). /// Используется для мобильных приложений и API-клиентов. /// </summary> public static class LocalAuthenticationConfiguration { /// <summary> /// Настраивает аутентификацию только через JWT токены (Local режим). /// Пользователи входят через логин/пароль, получают JWT токен, /// и отправляют его в заголовке Authorization: Bearer <token> /// </summary> public static void AddGridientLocalAuthentication( this IServiceCollection services, IConfiguration configuration) { // Настройки для JWT var jwtOptions = configuration.GetSection("Jwt").Get<JwtOptions>(); // ============================================================================ // LOCAL АУТЕНТИФИКАЦИЯ (ТОЛЬКО JWT) // ============================================================================ // Режим работы: // - Пользователь вводит логин/пароль через /api/Auth/login // - Бэкенд выдаёт JWT токен (access_token и refresh_token) // - Клиент отправляет токен в заголовке Authorization: Bearer <token> // - Бэкенд валидирует токен через JWT схему // // Подходит для: // - Мобильных приложений // - API-клиентов // - SPA приложений, которые хотят управлять токенами вручную // ============================================================================ services .AddAuthentication(options => { // Используем JWT схему как схему по умолчанию options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) // ============================================================================ // JWT СХЕМА АУТЕНТИФИКАЦИИ // ============================================================================ // Используется для валидации JWT токенов, выданных при Local-аутентификации // (логин/пароль через /api/Auth/login). // // Как работает: // 1. Клиент отправляет запрос с заголовком Authorization: Bearer <token> // 2. JWT схема извлекает токен из заголовка // 3. Валидирует токен (подпись, срок действия, issuer, audience) // 4. Извлекает claims из токена // 5. Устанавливает HttpContext.User с ClaimsPrincipal // // ВАЖНО: В этом режиме Cookie схема НЕ используется. // Все запросы должны содержать JWT токен в заголовке Authorization. // ============================================================================ .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options => { options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters { ValidIssuer = jwtOptions?.Issuer, ValidAudience = jwtOptions?.Audience, ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, IssuerSigningKey = new Microsoft.IdentityModel.Tokens.SymmetricSecurityKey( System.Text.Encoding.UTF8.GetBytes(jwtOptions?.Secret ?? string.Empty)) }; }); } } }