У меня 2 микросервиса.1 - это настройка проекта Spring boot 2 в качестве сервера oauth2, работающего на порту 8000, а другая - клиент oauth2 проекта Spring boot 2, работающий на порте 8001.
У меня есть настройка oauth-сервера, и я могу подтвердить, что он работаетпотому что я получаю токен, когда я вхожу, используя идентификатор клиента и секрет.Я использую Почтальон, чтобы сделать сообщение в / oauth / token, и я могу видеть содержимое.Я вижу токен доступа и обновляю токен.
Затем я использую Postman для вызова другого микросервиса, который является загрузочным проектом Spring, в качестве клиента oauth2.Я установил токен доступа, используя Postman в качестве авторизации oauth2, и вижу, что Authorization: Bearer TOKEN
добавлено в заголовок.Затем я делаю вызов клиенту oauth2, где я вызываю следующую конечную точку:
@GetMapping("/api/user/test")
@PreAuthorize("isAuthenticated()")
public MyObject doTest() {
return new String("Test");
}
Когда я вызываю этот URL, я могу определить, что spring отправляет запрос на сервер oauth для получения текущего пользователя.В моем application.yml у меня есть следующее, чтобы Spring знал, где находится oauth-сервер:
security:
oauth2:
resource:
user-info-uri: http://localhost:8000/oauth/user
Пока все хорошо.Теперь вот вещь.Я отлаживаю http://localhost:8000/oauth/user url
и согласно весне принципал равен нулю.Я нашел, где это идет не так.Либо моя конфигурация неверна, либо в Spring есть огромная ошибка, потому что когда я добавляю фильтр на сервер oauth2 и печатаю все заголовки, это то, что я вижу:
Header: application/json
Header: Java/1.8.0_181
Header: localhost:8000
Header: http
Header: 8000
Header: 172.20.0.1
Header: gzip
Header: 0
Header: 192.168.178.153:9001
Header: Keep-Alive
КакВы можете видеть, что нет заголовка авторизации.Очевидно, что весенний клиент oauth2 не отправляет заголовок авторизации при вызове user-info-uri.Кто-нибудь может помочь?
Мне нужно знать, как настроить мой клиент oauth2 с весенней загрузкой, чтобы каждый URL, который нуждается в аутентификации, вызывал определенный URL для получения текущего пользователя.
Заранее спасибо,Мартейн