Я думаю, что есть проблема концепции, использующей open id connect.
Open id connect не является протоколом аутентификации / авторизации, как oauth2, это слой поверх oauth2 для предоставления пользовательской информации клиенту.
Таким образом, предполагаемая аудитория для информации, содержащейся в idtoken - это приложение, которое пытается использовать ресурс (веб-интерфейс), а не сервер ресурсов (микросервис). Как вы можете видеть здесь
https://openid.net/specs/openid-connect-core-1_0.html
Токен, который необходимо отправить на микросервис, является токеном доступа, который выдается вместе с idtoken, потому что это токен, который должен использоваться для авторизации действия.
Другая проблема заключается в том, что вам может потребоваться информация о пользователе для выполнения какого-либо действия в службе, но это не является частью того же потока.
поток аутентификации / авторизации только гарантирует, что один пользователь является действительным и имеет привилегии для выполнения определенных действий на определенном сервере ресурсов (микросервис)
Если после этого, когда процесс аутентификации завершился, вам необходимо получить информацию о пользователе, я предлагаю у вас есть три возможных решения:
вы можете использовать токен jwt (токен доступа с самошифрованием) в качестве токена доступа вместо непрозрачного, чтобы вы могли получить идентификатор пользователя в подпретензии; при этом запросите службу пользователя, чтобы получить другую информацию.
Как и в первом пункте, вы можете использовать токен jwt acces и, кроме того, добавить пользовательские заявки для хранения дополнительной пользовательской информации
если вы выполняете проверку токена доступа в шлюзе zuul, вы можете получить информацию о пользователе в шлюзе и передать пользовательский jwt на микросервисы с помощью информация вам нужна Этот токен не обязательно должен быть токеном доступа, поскольку шлюз выполняет аутентификацию / авторизацию.
Таким образом, вы можете без проблем обновить sh свои токены доступа