Вот мои текущие настройки:
Я выставляю bean-компонент WebClient с фильтром oauth2:
@Configuration
class OAuthConfiguration {
@Bean("authProvider")
fun webClient(
clientRegistrationRepository: ClientRegistrationRepository,
authorizedClientRepository: OAuth2AuthorizedClientRepository,
clientHttpConnector: ClientHttpConnector
): WebClient {
val oauth = ServletOAuth2AuthorizedClientExchangeFilterFunction(clientRegistrationRepository, authorizedClientRepository)
oauth.setDefaultClientRegistrationId("authProvider")
oauth.setDefaultOAuth2AuthorizedClient(true)
return WebClient.builder()
.baseUrl("baseUrl")
.clientConnector(clientHttpConnector)
.filter(oauth)
.build()
}
}
И я использую его здесь:
fun callExternalService() {
val retrieve = webClient.get()
.uri("/uri")
.retrieve()
.bodyToMono(String::class.java)
.block()
// ...
}
Мой application.yml имеет следующую структуру
security:
oauth2:
client:
provider:
authProvider:
token-uri: https://authentication-uri.com
registration:
authProvider:
client-id: client-id
client-secret: client-secret
authorization-grant-type: authorization_code
scope: any
Этот код не выполняется, потому что моя внутренняя служба аутентификации принимает только тип предоставления пароля , и я вижу ответ для моего URL-адреса аутентификации. возвращая код 400 Как только я изменяю authorization-grant-type: authorization_code
на authorization-grant-type: password
, Spring игнорирует все логи c аутентификации, он не пытается аутентифицироваться.
Кто-нибудь знает, как реализовать authorization-grant-type: password
?