Микросервис аутентификации с JWT токенами, сессиями и вебхуками.
- Аутентификация по GUID пользователя
- JWT access токены с алгоритмом SHA512
- Refresh токены с защитой от повторного использования
- Управление сессиями с отслеживанием User-Agent и IP
- Вебхуки для уведомлений о подозрительной активности
- Метрики Prometheus для мониторинга
- Health checks с проверкой БД
- Автоматические миграции PostgreSQL
POST /api/v1/tokens- получить пару токенов по GUIDPOST /api/v1/refresh- обновить пару токеновPOST /api/v1/logout- выход (деавторизация)
GET /api/v1/me- получить GUID текущего пользователя (защищённый)
GET /health- проверка здоровья сервисаGET /metrics- метрики Prometheus
docker-compose -f docker-compose.yml up -dСервис будет доступен по адресу: http://localhost:8080
- Prometheus метрики:
http://localhost:8080/metrics - Health checks:
http://localhost:8080/health
Используется PostgreSQL с автоматическими миграциями:
- Таблица
users- пользователи - Таблица
user_sessions- сессии с refresh токенами
Настройки через environment variables или .env файл:
POSTGRES_USER=user
POSTGRES_PASSWORD=password
POSTGRES_DB=auth_service
POSTGRES_PORT=5432
WEBHOOK_URL=https://example.com/webhook
JWT_SECRET="jwt-example"- Алгоритм: SHA512
- Не хранится в БД
- Короткое время жизни (15 минут)
- Формат: base64
- Хранится как bcrypt хеш
- Защита от повторного использования
- Проверка User-Agent и IP
- Уведомления о попытках входа с нового IP
- POST запросы на указанный URL
auth-service/
├── cmd/api/main.go # Точка входа
├── internal/ # Внутренние пакеты
│ ├── handler/ # HTTP обработчики
│ ├── service/ # Бизнес-логика
│ ├── repository/ # Работа с БД
│ └── pkg/ # Вспомогательные пакеты
├── migrations/ # Миграции PostgreSQL
├── deployments/ # Docker
├── scripts/ # Вспомогательные скрипты
└── config/ # Конфигурация
docker-compose builddocker-compose up -ddocker-compose downПосле запуска проверьте работу API:
# Health check
curl http://localhost:8080/health
# Swagger документация
open http://localhost:8080/swagger/index.htmlМиграции выполняются автоматически при старте приложения через скрипт scripts/migrate.sh.
Сервис отправляет POST запросы на указанный webhook URL при:
- Попытке входа с нового IP адреса
- Подозрительной активности
Формат webhook payload:
{
"event": "suspicious_login",
"user_guid": "uuid",
"ip_address": "192.168.1.1",
"user_agent": "Mozilla/5.0...",
"timestamp": "2024-01-01T00:00:00Z"
}- Готовность к продакшену с health checks и метриками
- Безопасное хранение токенов и сессий
- Расширяемая архитектура с чистой структурой
- Простое развертывание одной командой Docker