В контексте следующих сервисов:
- API Gateway / OID C клиент: подключиться к внешнему провайдеру OpenId Connect (для получения доступа, обновить sh и токены id) и выступать в качестве прокси для пересылки запросов другим службам с токеном доступа (поток кода авторизации)
- Несколько серверов ресурсов, входящие запросы обрабатываются шлюзом API и включают токен доступа (для проверки с использованием ключей, предоставляемых провайдер OID C)
Я использую библиотеки клиент-серверных ресурсов Spring Security 5.2 Oauth2.
Какой рекомендуемый безопасный способ обеспечить работу всех серверов ресурсов осведомлен о пользовательской информации (включена в токен API).
Я оцениваю несколько вариантов:
- Включите id_token в запрос, отправленный сервисам. Затем каждая служба может проверять токен (в фильтре).
- Заставить API-шлюз выступать в роли эмитента токена для создания нового расширенного токена. Серверы ресурсов должны будут проверить полученный токен с новым ключом, предоставленным поставщиком шлюза / токена API. С этим решением должен быть реализован пользовательский AuthenticationManager.
Я думаю, что вариант 2 является более безопасным и перспективным, есть ли недостатки, которые я должен рассмотреть? Также возможны другие варианты.