Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Auth Service

Микросервис аутентификации с JWT токенами, сессиями и вебхуками.

Возможности

  • Аутентификация по GUID пользователя
  • JWT access токены с алгоритмом SHA512
  • Refresh токены с защитой от повторного использования
  • Управление сессиями с отслеживанием User-Agent и IP
  • Вебхуки для уведомлений о подозрительной активности
  • Метрики Prometheus для мониторинга
  • Health checks с проверкой БД
  • Автоматические миграции PostgreSQL

API Endpoints

Аутентификация

  • POST /api/v1/tokens - получить пару токенов по GUID
  • POST /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"

Безопасность

Access Token (JWT)

  • Алгоритм: SHA512
  • Не хранится в БД
  • Короткое время жизни (15 минут)

Refresh Token

  • Формат: 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

Сборка образа:

docker-compose build

Запуск:

docker-compose up -d

Остановка:

docker-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

About

Микросервис аутентификации с JWT токенами, сессиями и вебхуками.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages