#jwt #microservices #openid #quarkus
#jwt #микросервисы #OpenID #quarkus
Вопрос:
У нас есть требование, в соответствии с которым нам требуется некоторое взаимодействие между сервисами между двумя микросервисами Quarkus. Инфраструктура следующая:
Аутентификация выполняется другим приложением IDP.
Служба 1:
- реализует логику основного домена
- в основном используется интерфейсом
- API вызывается с аутентифицированным пользователем (OpenID, JWT)
- конечные точки защищены с помощью
@RolesAllowed("XY")
Сервис 2:
- следует использовать защищенный API из службы 1
- API службы 1 не будет вызываться с аутентифицированным пользователем (выполнение планировщиком задач, а не интерфейсом)
Моя главная проблема: если служба 2 будет вызываться непосредственно из интерфейса, решением было бы легко передать токен JWT из службы 2 в службу 1. Но поскольку служба 2 не вызывается в контексте пользователя, у меня нет токена JWT, который я могу передать.
Как служба 2 должна проходить аутентификацию с помощью службы 1 в таком сценарии?
Ответ №1:
Либо вы используете поток учетных данных клиента между службой 1 и службой 2, чтобы они могли безопасно взаимодействовать без какого-либо участия пользователя. Это означает, что они могут обмениваться данными, даже когда пользователя нет.
Альтернативой является использование токенов делегирования, см. Эти ссылки