Пример реализации аутентификации и авторизации с использованием ASP.NET Core Identity + JWT (Access Token only).
В проекте используется аутентификация через JWT токен без Cookie и Refresh Token.
- Реализовано:
- Регистрация пользователя
- Логин пользователя
- Генерация Access Token
- Добавление ролей в Claims токена
- Авторизация по ролям через [Authorize(Roles = "")]
- Работа JWT в Swagger
Identity используется для:
- создания пользователей
- хеширования пароля
- управления ролями
JWT используется:
- Access Token - короткоживущий токен (2 минуты)
- ASP.NET Core 10.0
- ASP.NET Core Identity
- Microsoft.AspNetCore.Authentication.JwtBearer
- EF Core (Code First)
- MS SQL
"Jwt": {
"SecretKey": "superSecretKey__@123456789123456",
"Issuer": "https://localhost.5001",
"Audience": "https://localhost:5001",
"TokenValidityInMinutes": 2
}Для демонстрации срок жизни токена - 2 минуты.
Миграции применяются автоматически при запуске приложения
await db.Database.MigrateAsync();Дополнительно выполняется начальная инициализация таблицы ролей (создается роль User)
Пример тестовых данных:
{
"firstName": "UserFirstName",
"lastName": "UserLastName",
"userName": "user.name",
"email": "user@example.com",
"password": "Password123!"
}{
"email": "user@example.com",
"password": "Password123!"
}Ответ:
{
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}Метод GetOrders защищен атрибутом [Authorize]