Spring Security 5.2.3 Поток учетных данных клиента oAuth2
Итак, я построил "маленький" сервер авторизации oauth2/openid с нуля на Java, следуя RFC. Все работает хорошо. Теперь я пытался использовать поток учетных данных клиента, используя преимущества нового стека Spring Security для клиентов oauth2, но меня немного озадачил пример, который я вижу в документации для этого потока.
В моей настройке у меня есть:
- Сервер авторизации
- Один ресурсный сервер
- Другой сервер ресурсов, которому необходимо вызвать защищенную конечную точку на первом сервере ресурсов.
Если я правильно понимаю вышеупомянутый поток, он использовался именно в последнем случае.
В примере из Spring меня озадачивает то, что при создании OAuth2AuthorizeRequest требуется действующий принципал, что для меня не имеет смысла. Я хочу, чтобы мой сервер ресурсов получал access_token от сервера авторизации для себя, зачем мне предоставлять уже аутентифицированного Принципала?
На самом деле я попробовал этот пример и заставил его работать, предоставив действительного участника (используя access_token, полученный извне с потоком кода авторизации), но в конце вызов метода authorizedClient.getAccessToken() просто возвращает мне тот же токен участника I предоставляется конструктору запросов. Более того, при выполнении примера я вижу на своем сервере авторизации, что выдается фактический токен доступа для этого сервера ресурсов, и ответ правильный, но в основном он игнорируется в примере кода.
Я мог бы легко реализовать собственный фрагмент кода, который выполняет поток, но сначала я хотел попробовать код Spring. Я не уверен, что я делаю не так или чего мне не хватает.