Главная
Определение¶
Аутентификационный микросервис, высокопроизводительный, легкий и готовый к использованию.
Юнит стандартизирован до спецификации OpenAPI v3 и представляет собой типичный, классический REST API.
Swagger UI является неотъемлемой частью основного кода.
Сервис обеспечивает только аутентификацию, авторизация запросов остаётся задачей основного сервиса и реализовать её предлагается на основе групп, как это принято, например, в операционных системах.
Поддерживается только JWT аутентификация по ассиметричным алгоритмам.
Предоставляется пара токенов, access & refresh.
Алгоритм работы¶
Предлагается следующая схема: Клиент запрашивает аутентификационный токен, получив его отправляет запросы к основному сервису, последний верифицирует полученный токен (в данном случае на публичном ключе auth сервиса, не обращась к последнему).
Если токен валиден, то основной сервис находит или не находит нужную группу в списке групп пользователя и принимает соответственное решение об авторизации запроса. Нагрузка токена содержит список групп пользователя.
Таким образом основному сервису не требуется взаимодействовать с auth юнитом, не требуется и хранить реестр пользователей у себя.
Вообще ни auth, ни основной сервис не хранят состояние пользователя - реализуется основной принцип REST API.
Любой и каждый запрос самодостаточен.
Администратор основного сервиса должен иметь учётную запись суперпользователя.
В принципе всё, как обычно, за исключением того, что запрос на аутентификацию отправляется не к своей БД, а к стороннему, доверенному сервису.
Выбор БД¶
# определяет тип СуБД
>>DBS_ENGINE = sqlite|postgres
Развертывание¶
# Клонируем репо
git clone
cd auth-v2
cp template.env .env
# Заполняем файл с переменными окружения
если PostgreSQL:¶
# создаём папку для файлов БД имя папки указанной ниже
# формируется как $DBS/${POSTGRES_DB_FOLDER}${SUFFIX}
mkdir dbs/pg-v2
# Запускаем сервер БД
docker compose up db
# собираем сервис
docker compose build api
# создаём БД и выполняем миграции
docker compose run api bash -c 'python3 staff.py alembic upgrade head'
# генерируем ключевую пару
docker compose run api sh generate-keys.sh
# запускаем АПИ
docker compose up api
# проверяем статус сервиса, например в браузере http://localhost:8000/docs
если SQLite:¶
# собираем сервис
docker compose build api
# генерируем ключевую пару
docker compose run api sh generate-keys.sh
# создаём БД и выполняем миграции
docker compose run api bash -c 'python3 staff.py alembic upgrade head'
# запускаем АПИ
docker compose up api
# проверяем статус сервиса, например в браузере http://localhost:8000/docs
Добавление первого суперпользователя¶
Первого пользователя можно добавить автоматически определив соответствующие переменные (см. template.env) или выполнив команды:
# входим в контейнер с апи
docker exec -it auth-api-v2 bash
# добавляем пользователя
python3 createsuperuser.py