Сервис аутентификации и авторизации.
Отвечает за регистрацию пользователей, вход, обновление access токенов, управление refresh токенами, выход из аккаунта и удаление аккаунта пользователя.
Реализован как ASP.NET Core + GraphQL сервис с JWT access токенами, refresh токенами с ротацией и outbox-публикацией событий в Kafka.
- Регистрация пользователей
- Вход по email / паролю
- JWT access tokens
- Refresh tokens с ротацией
- Logout с отзывом refresh токена
- Удаление аккаунта текущего пользователя
- Публикация события создания пользователя в Kafka
- Публикация события удаления пользователя в Kafka
- Outbox pattern для надежной доставки событий
- JWT авторизация (
[Authorize]) - Валидация входных данных (FluentValidation)
- GraphQL API (HotChocolate)
me: UUIDВозвращает ID текущего пользователя (требует авторизации)
-
register(request: RegisterRequestInput): AuthResponseРегистрирует пользователя и выдает пару access / refresh токенов -
login(login: LoginRequestInput): AuthResponseВыполняет вход по email и паролю -
refresh(request: RefreshRequestInput): AuthResponseОбновляет access токен по refresh токену и выполняет ротацию refresh токена -
logout(request: LogoutRequestInput): LogoutResponseОтзывает refresh токен пользователя -
deleteAccount: DeleteAccountResponseУдаляет аккаунт текущего пользователя (требует авторизации)
Перед запуском сервиса необходимо поднять инфраструктуру через Docker Compose.
docker compose up -dПосле запуска инфраструктуры можно запустить сервис:
dotnet run --project src/Planara.Auth.csprojGraphQL endpoint:
/graphql
Для запуска тестов требуется Docker, так как интеграционные тесты используют Testcontainers.
Запуск тестов:
dotnet test Planara.Auth.slnЗапуск тестов с покрытием:
dotnet test Planara.Auth.sln \
--collect:"XPlat Code Coverage" \
--settings coverlet.runsettings