Микросервис аутентификации предназначен для управления пользовательскими сессиями, проверки учетных данных и выдачи токенов доступа.
- Регистрация новых пользователей.
- Аутентификация по логину и паролю.
- Выдача 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 |
| Переменная | Значимость | Описание | Тип данных | Стандартное значение |
|---|---|---|---|---|
| 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, если эта функция включена при помощи специальной переменной среды.
| Переменная | Значимость | Описание | Тип данных | Стандартное значение |
|---|---|---|---|---|
| AUTH_GRAYLOG_ENABLE | Опционально | Флаг отправки логов в Graylog. | BOOL | False |
| AUTH_GRAYLOG_HOST | Опционально | Адрес развернутого Graylog. Может быть заглушкой. | STRING | localhost |
| AUTH_GRAYLOG_PORT | Опционально | Порт развернутого Graylog. Может быть заглушкой. | STRING | 12201 |
Для удобства локальной разработки микросервиса в локальной среде следуйте этим рекомендациям.
Перед началом работы убедитесь, что все зависимости установлены. Или установите, если предыдущее условие ложно.
При разработке сервиса используется менеджер зависимостей Poetry.
pip install poetrypoetry install --no-rootДалее выберете виртуальную среду Poetry как основную для проекта.
Создайте файл .env и сконфигурируйте переменные огружения, согласно главе конфигурация.
В контексте локальной разработки необходимо задать только обязательные переменные среды. Опциональную переменную AUTH_DEBUG_MODE рекомендуется перевести в значение True.
Вероятнее всего подготовленный экземпляр PGSQL содержит в себе пустую базу данных (схему), необходимую для работы сервиса. В таком случае необходимо применить миграции Alembic:
alembic upgrade headAlembic самостоятельно создаст все нужные таблицы, применяя к ним последние изменения по ходу разработки.
Теперь все готово к запуску!
python start.py
Для развертывания микросервиса в production-среде следуйте инструкциям, описанным в этом репозитории.
Сервис аутентификации в инфраструктуре ILPS будет развернут автоматически посредством docker-compose.
Процессы установки зависимостей и применения миграций автоматизированны при сборке Docker контейнера.
Этот проект распространяется под лицензией GNU General Public License v3.0 (GPL-3.0).