我正在尝试通过网络客户端电话升级到SpringSecurity 5.5.1。我发现oauth2 clientid和secret现在是url编码的 AbstractWebClientReactiveOAuth2AccessTokenResponseClient
,但我的令牌提供程序不支持此操作(例如,如果机密包含 +
字符仅当它作为 +
不如 %2B
). 我知道这被看作是spring安全方面的一个bug修复),但我不能让令牌提供者轻易地改变其行为。
所以我试着找到一种方法来解决这个问题。
[文件](https://docs.spring.io/spring-security/site/docs/current/reference/html5/#customizing-当您使用webclient配置(这是我的情况)时,关于如何自定义访问令牌请求的访问令牌请求似乎不适用。
为了删除clientid/secret编码,我必须从中扩展和复制大部分现有代码 AbstractWebClientReactiveOAuth2AccessTokenResponseClient
自定义 WebClientReactiveClientCredentialsTokenResponseClient
因为它的大部分都具有私有/默认可见性。我在spring安全项目中的一个增强问题中对此进行了跟踪。
是否有更简单的方法自定义令牌请求的授权头,以跳过url编码?
1条答案
按热度按时间wdebmtf21#
关于定制的一些API肯定有改进的余地,而且可以肯定的是,来自社区的这些类型的问题/请求/问题将继续有助于突出这些领域。
关于
AbstractWebClientReactiveOAuth2AccessTokenResponseClient
特别是,目前无法重写内部方法来填充数据库中的基本身份验证凭据Authorization
标题。但是,您可以自定义WebClient
用于进行api调用的。如果它在您的用例中是可接受的(暂时,在处理行为更改和/或添加自定义选项时),您应该能够在WebClient
.下面是一个将创建
WebClient
能够使用OAuth2AuthorizedClient
:此测试演示了为内部访问令牌响应解码凭据
WebClient
: