RedGradient / microservices-project

Repository from Github https://github.comRedGradient/microservices-projectRepository from Github https://github.comRedGradient/microservices-project

microservices-project

Python FastAPI JWT KrakenD

Этот репозиторий содержит аутентификационный микросервис и связанный с ним API-сервис. Для централизованного доступа к API задействован шлюз KrakenD.

Содержание

1. AuthMicroservice (ссылка)

Аутентификационный микросервис. Создает и подписывает Access/Refresh токены приватным ключом.

Функционал

  • JWT-аутентификация
  • Двухфакторная JWT-аутентификация (2FA) с помощью TOTP пароля (например, через Google Authenticator)

Детали реализации

  • Подпись токенов с использованием асимметричного алгоритма RSA
  • Ротация ключей. В проекте есть специальная функция, которая создает новую пару ключей (private и public) и вводит их в работу.

2. APIMicroservice (ссылка)

Макет API сервиса, содержащего бизнес-логику. Есть защищенные эндпоинты, требующие JWT авторизации (1 шт).

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

Запуск

Проект докеризирован, поэтому для запуска достаточно выполнить docker-compose up --build в папке проекта. API будет доступен по адресу http://localhost:8080/.

API

  • /users/{user-id}:
    Возвращает пользователя по его id
    Метод: GET
  • /orders/{user-id}:
    Возвращает все заказы пользователя по его id
    Метод: GET
  • /user-data/{user-id}:
    Этот эндпоинт существует только в KrakenD, он агрегирует результаты с /users/{user-id} и /orders/{user-id}
    Метод: GET

About