Authentication Service — это сервис для управления аутентификацией пользователей. Он предоставляет API для генерации и обновления токенов доступа.
- Генерация токенов доступа для пользователей.
- Обновление токенов доступа.
- Поддержка двух режимов хранения данных:
- in-memory (для демонстрации или тестирования).
- PostgreSQL (для продакшн-окружения).
1️⃣ Генерация токенов
GET /api/auth/{user_id}
Тело ответа:
{
"access_token": "your_access_token",
"refresh_token": "your_refresh_token"
}2️⃣ Обновление токенов
POST /api/auth/refresh
Тело запроса:
{
"access_token": "your_access_token",
"refresh_token": "your_refresh_token"
}Тело ответа:
{
"access_token": "new_access_token",
"refresh_token": "new_refresh_token"
}- Переменные окружения для auth_service:
environment:
SERVICE_SOCKET: ":8080" # сокет соединения, на котором работает сервис
MODE: "postgres" # режим работы сервиса
PSQL_URL: "postgres://root:password@postgres:5432/mydb?sslmode=disable" # адрес Postgres
SECRET: "secret" # секрет для подписи jwt токена
SENDER_EMAIL: "" # email, с которого будут отправлятся предупреждения пользователям
PASSWORD_EMAIL: "" # пароль от почты
SMTP_HOST: "" # адрес хоста, на котором развернут SMTP-сервер
MAX_TOKENS_PER_USER: 5 # максимальное количество активных refresh-токенов для одного пользователя
RATE_LIMIT: 20 # значение RPS на пользователя
BUFFER_LIMIT: 40 # вместимость буфера запросов
CLEANUP_INTERVAL: 1 # интервал для чистки словаря с лимитерами неактивных пользователей (в минутах)
INACTIVITY_LIMIT: 5 # период неактивности пользователя (в минутах)- Переменные окружения для postgres:
environment:
POSTGRES_USER: "root"
POSTGRES_PASSWORD: "password"
POSTGRES_DB: "mydb"- Убедитесь, что у вас установлен Docker и Docker Compose.
- Скопируйте репозиторий:
git clone https://github.com/goroutiner/auth_service.git
cd auth_service- Запуск сервиса выполняется с помощью команды:
make runПеред запуском тестов должен быть запущен Docker!
- Для запуска тестирования
handlersвыполните команду:
make test-handlers- Для запуска тестирования
servicesвыполните команду:
make test-services- Для запуска тестирования
databaseвыполните команду:
make test-database- Для запуска тестирования
memoryвыполните команду:
make test-memory- Язык программирования: Go (Golang)
- База данных: PostgreSQL (опционально)
- Библиотеки:
- jmoiron/sqlx для взаимодействия с базами данных.
- github.com/jackc/pgx/v5/stdlib и modernc.org/sqlite драйвера для PosgreSQL и SQLite
- golang-jwt/jwt для работы с JWT-токенами
- go-gomail/gomail для отправки предупреждающих сообщений пользователям
- stretchr/testify для написания тестов
- vektra/mockery для генерации mocks
- testcontainers/testcontainers-go для запуска тестовых контейнеров
- mailhog/MailHog для тестирования отправки писем по электронной почте