以下是我当前的设置:
我公开了一个带有oauth2过滤器的WebClient bean:
@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()
// ...
}
我的应用程序.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忽略了身份验证的所有逻辑,它不会尝试进行身份验证。
有人知道如何实施吗
授权类型:密码
?