Thanks to visit codestin.com
Credit goes to Github.com

Skip to content

A service that implements authentication using refresh and access tokens.

License

Notifications You must be signed in to change notification settings

alexey0b/auth_service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Authentication service codecov

Authentication Service 🔐

Authentication Service — это сервис для управления аутентификацией пользователей. Он предоставляет API для генерации и обновления токенов доступа.


📋 Возможности

  • Генерация токенов доступа для пользователей.
  • Обновление токенов доступа.
  • Поддержка двух режимов хранения данных:
    • in-memory (для демонстрации или тестирования).
    • PostgreSQL (для продакшн-окружения).

🔥 API Эндпоинты

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"
}

🔧 Предварительная настройка переменных окружений в файле compose.yaml:

  • Переменные окружения для 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 Compose

  1. Убедитесь, что у вас установлен Docker и Docker Compose.
  2. Скопируйте репозиторий:
git clone https://github.com/goroutiner/auth_service.git
cd auth_service
  1. Запуск сервиса выполняется с помощью команды:
make run

✅⭕ Инструкция по запуску тестов

Перед запуском тестов должен быть запущен Docker!

  • Для запуска тестирования handlers выполните команду:
make test-handlers
  • Для запуска тестирования services выполните команду:
make test-services
  • Для запуска тестирования database выполните команду:
make test-database
  • Для запуска тестирования memory выполните команду:
make test-memory

🛠️ Технические ресурсы

About

A service that implements authentication using refresh and access tokens.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published