Skip to content

FEFU-ILPS/service-auth

Repository files navigation

SERVICE-AUTH


Оглавление

  1. Назначение
  2. Функциональность
  3. Технологии
  4. Конфигурация
  5. Локальная разработка
  6. Развертывание
  7. Лицензия

Назначение

Микросервис аутентификации предназначен для управления пользовательскими сессиями, проверки учетных данных и выдачи токенов доступа.

Функциональность

  • Регистрация новых пользователей.
  • Аутентификация по логину и паролю.
  • Выдача JWT-токенов доступа.
  • Валидация и верификация токенов доступа.

Технологии

  • Язык программирования: Python
  • Фреймворк: FastAPI
  • База данных: PostgreSQL + SQLAlchemy (asyncpg)
  • Протоколы: HTTP

Конфигурация

Микросервис настраивается с помощью переменных окружения в конфигурационном файле .env. По умолчанию .env не содержится в репозитории, данный файл необходимо создать самому:

touch .env

Если вы используете VSCode, не забудьте перезагрузить окно проекта, чтобы применить изменения в .env к вашему окружению.
Или используйте следующую команду:

export $(cat .env)

Ниже приведена таблица, содержащая описание основных параметров, которые необходимо настроить для работы сервиса.

Настройки общего характера

Переменная Значимость Описание Тип данных Стандартное значение
AUTH_DEBUG_MODE Опционально Флаг запуска микросервиса в режиме отладки. BOOL True
AUTH_SERVICE_NAME Опционально Имя микросервиса. Рекомендуется вообще не трогать. STRING ilps-service-auth

Настройки базы данных

Перед тем как конфигурировать данные, по которым микросервис будет подключаться к экземпляру PGSQL, убедитесь, что PGSQL содержит в себе ранее созданного пользователя и базу данных (схему), согласно стандарным значениями переменных таблицы. Стандартные значения являются рекомендательными.

Переменная Значимость Описание Тип данных Стандартное значение
AUTH_DB_POSTGRES_PASSWORD Обязательно Пароль пользователя PGSQL. STRING
AUTH_DB_POSTGRES_HOST Обязательно Адрес хоста с развернутым PGSQL. STRING
AUTH_DB_POSTGRES_USER Опционально Имя пользователя PGSQL. STRING service_auth
AUTH_DB_POSTGRES_NAME Опционально Имя базы данных (схемы) PGSQL. STRING auth
AUTH_DB_POSTGRES_PORT Опционально Порт хоста с развернутым PGSQL. INTEGER 5432

Настройки JWT

Переменная Значимость Описание Тип данных Стандартное значение
AUTH_JWT_SECRET Обязательно Секретный ключ шифрования. STRING
AUTH_JWT_ALGORITHM Опционально Алгоритм шифрования. STRING HS512
AUTH_JWT_ACCESS_TOKEN_LIFETIME Опционально Время жизни токена доступа в минутах. INTEGER 60

Стандартные значения

Стандартные переменные подразумевают какие-то обьекты, на основе которых будут исполняться предразверточные скрипты. На данный момент они служат для создания аккаута администратора поумолчанию.

Переменная Значимость Описание Тип данных Стандартное значение
AUTH_DEFAULT_ADMIN_NAME Опционально Имя администратора поумолчанию. STRING admin
AUTH_DEFAULT_ADMIN_EMAIL Опционально Электронная почта администратора поумолчанию. STRING admin@ilpsadmin.com
AUTH_DEFAULT_ADMIN_PASSWORD Опционально Пароль администратора поумолчанию. STRING password123

При развертывании сервиса по этим данным будет создат аккаут администратора. В него можно войти, используя переденные значения.

Настройки Graylog

Сервис поддерживает отправку логов в Graylog, если эта функция включена при помощи специальной переменной среды.

Переменная Значимость Описание Тип данных Стандартное значение
AUTH_GRAYLOG_ENABLE Опционально Флаг отправки логов в Graylog. BOOL False
AUTH_GRAYLOG_HOST Опционально Адрес развернутого Graylog. Может быть заглушкой. STRING localhost
AUTH_GRAYLOG_PORT Опционально Порт развернутого Graylog. Может быть заглушкой. STRING 12201

Локальная разработка

Для удобства локальной разработки микросервиса в локальной среде следуйте этим рекомендациям.

Установка зависимостей

Перед началом работы убедитесь, что все зависимости установлены. Или установите, если предыдущее условие ложно.
При разработке сервиса используется менеджер зависимостей Poetry.

pip install poetry
poetry install --no-root

Далее выберете виртуальную среду Poetry как основную для проекта.

Переменные окружения

Создайте файл .env и сконфигурируйте переменные огружения, согласно главе конфигурация.
В контексте локальной разработки необходимо задать только обязательные переменные среды. Опциональную переменную AUTH_DEBUG_MODE рекомендуется перевести в значение True.

Подготовка базы данных

Вероятнее всего подготовленный экземпляр PGSQL содержит в себе пустую базу данных (схему), необходимую для работы сервиса. В таком случае необходимо применить миграции Alembic:

alembic upgrade head

Alembic самостоятельно создаст все нужные таблицы, применяя к ним последние изменения по ходу разработки.

Запуск

Теперь все готово к запуску!

python start.py

Развертывание

Для развертывания микросервиса в production-среде следуйте инструкциям, описанным в этом репозитории.
Сервис аутентификации в инфраструктуре ILPS будет развернут автоматически посредством docker-compose.

Процессы установки зависимостей и применения миграций автоматизированны при сборке Docker контейнера.

Лицензия

Этот проект распространяется под лицензией GNU General Public License v3.0 (GPL-3.0).

About

🔒Сервис аутентификации в инфраструктуре ILPS

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors