我正在尝试配置一个Spring Boot OAuth2RestTemplate来为OAuth2资源服务器颁发访问令牌。资源服务器只接受请求正文中的凭据。
大概是这样的:
grant_type: "client_credentials"
scope: ""
client_id: "client"
client_secret: "superdupersecret"
在Postman中,我可以通过在“获取新的访问令牌”对话框中选择“在正文中发送客户端凭据”来将其存档。
但是,我需要在我的Spring Boot应用程序中获得这个令牌。我调试了OAuth2RestTemplate(以及模板使用的类),但找不到将其配置为将凭据作为请求正文发送的方法。
我是不是完全走错了路,或者只是错过了什么?
目前,我将模板配置如下:
private fun resourceDetails(): BaseOAuth2ProtectedResourceDetails? {
val resourceDetails: BaseOAuth2ProtectedResourceDetails = ClientCredentialsResourceDetails()
resourceDetails.id = clientId
resourceDetails.clientId = clientId
resourceDetails.clientSecret = clientSecret
resourceDetails.accessTokenUri = accessTokenUri
//resourceDetails.clientAuthenticationScheme = AuthenticationScheme.header
return resourceDetails
}
我找到了客户端身份验证方案参数,但仅支持查询、表单和表头
2条答案
按热度按时间vwoqyblh1#
您必须在客户身份验证方案和身份验证方案中使用AuthenticationScheme.form,以将数据放入内容类型为APPLICATION/x-www-form-urlencode的正文中。这对我很管用。
请求将是这样的:
uqcuzwp82#
为便于将来参考,正确答案是在客户端注册配置中将客户端身份验证方法设置为
client_secret_post
。应该是这样的