spring - Spring Security 5.2.1 + spring-security-oauth2 + WebClient:如何使用密码授权类型
问题描述
这是我当前的设置:
我正在使用 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()
// ...
}
我的 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 将忽略所有身份验证逻辑,它不会尝试进行身份验证。
有谁知道如何实施authorization-grant-type: password
?
解决方案
推荐阅读
- maven - 我可以让 Maven 反应器使用不同的名称吗?
- python-3.x - 连接中止。',RemoteDisconnected('远程结束关闭连接没有响应'),而使用python
- svg - svg path - 通过设置控制点的三个相同的波浪
- mfc - 在 Visual C++ 中的 MFC 中打开/保存文件时可选择的文件格式
- python - 遍历列并创建多个数据框
- java - 如何在java awt图形中绘制超过100%的Windows 10缩放的相邻单个像素
- html - 如何阻止选择的选择扩展父容器
- android - 如何根据用户输入动态创建按钮?
- php - 如何在打印(xpath)之前检查文本是否包含特定字符?
- python - 将键和字典作为键值对添加到现有字典中