Java Spring Cloud. Аутентификация с использование API Gateway и отдельного сервиса авторизации

Работая над пет проектом я столкнулся с аутентификацией и авторизацией пользователя в Spring Cloud Eureka с использованием Jwt токенов у меня появился вопрос. Вот есть у меня API шлюз, который содержит фильтр по проверке jwt токена, полученный из сервиса авторизации(AuthService), есть AuthService, регистрирующий юзера и выдающий токен(/auth/signup и /auth/logi). В AuthService делает запросы к бд сохраняет и достает данные из таблицы user. Также в этом сервисе я решил сделать UserController по которому можно будет получить данные пользователя (userDto: id, username , createdAt и тд) использую поинт (/api/users/{id}). Пока все мне тут понятно. Далее я захотел сделать микросервис, неважно как называется, пусть буде service. Я его создал что он брал данные из /api/users/{id} и производил некоторые операции. Я создал бин restTemplate в новом микросервисе, сделал get запрос , передавая в заголовоке jwt, полученный из предыдущего запроса. Все работает.

И тут я подумал, а что если обычный пользователь получит свой токен, вставит в заголовок и сделает запрос по /api/users/{id}. По сути api gateway его пропустит, так как токен валиден и получается зная id любого юзера он получит о нем информацию. Так вот как сделать так чтобы микросервисы на такие эндпоинты могли ходить, а обычные пользователи нет? По сути они оба являются клиентами. Я думал на счет ролей, но как это реализовать, имея ввиду, как присвоить микросервису роль?


Ответы (0 шт):