Spring Security 5.2.1 + spring-security-oauth2 + WebClient: как использовать тип предоставления пароля - PullRequest
0 голосов
/ 07 января 2020

Вот мои текущие настройки:

Я выставляю 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...