Я строю архитектуру микросервиса с помощью пружинного ботинка и пружинного облака. Моя настройка следует за лучшими практиками для безопасности: < /p>
Шлюд API действует как сервер ресурсов OAuth2, подтверждая пользователь JWT от центрального поставщика идентификации (IDP). < /P>
Нисходящие услуги также настроены в качестве ресурсов OAUTH2, прикрепляя к принципу Zero Propage Propage. шаблон для пользовательских вызовов API. < /p>
Моя архитектура использует грант клиентских учетных данных для общения с услугами к услуге (M2M). Иметь две услуги: пользовательский сервис и сервис комментариев. Ворота направляет этот запрос на службу комментариев. В этом случае шлюз передает jwt пользователя, а комментирование-сервис извлекает ID из USEID из суббота JWT. Это работает отлично. Сервис по электронной почте вызывает сервис комментариев. В соответствии с лучшими практиками для M2M Communication, услуга по электронной почте получает услугу JWT (через грант клиентских учетных данных) и использует ее для вызова комментариев. M2M JWT из услуги по электронной почте определяет сервис по электронной почте как вызывающий абонент, но он не содержит оригинального идентификатора пользователя. Сервис B не должен выдавать себя за пользователя. < /P>
Пропустить пользовательский идущий заголовок (x-user-id): это кажется правдоподобным, но это похоже на нарушение принципа нулевого доверия, поскольку любая внутренняя служба может потенциально подвести этот заголовок. < /P>
. Требуется пользовательский контекст, но может быть вызван обоими: < /p>
запрос на пользователь (через шлюз с пользователем jwt)? userId?
Подробнее здесь: https://stackoverflow.com/questions/797 ... ud-gateway