spring-boot - OAuth2 | ClientCredentialsResourceDetails | 已弃用
问题描述
我是 Spring Security 的新手,我遇到了使用 client_credentials 作为 Grant 类型来实现 OAuth2。我正在使用下面的代码,但我收到建议,ClientCredentialsResourceDetails、OAuth2RestTemplate 和 OAuth2AccessToken已被弃用。
有人可以帮忙解决这个问题吗?
private String getAuthTocken(){
final ClientCredentialsResourceDetails resourceDetails = new ClientCredentialsResourceDetails();
resourceDetails.setClientId("ceapiClientId");
resourceDetails.setClientSecret("ceapiClientSecret");
resourceDetails.setGrantType("client_credentials");
resourceDetails.setAccessTokenUri("https://auth.abcdcommerce.com/oauth-server/oauth/token");
final OAuth2RestTemplate oAuth2RestTemplate = new OAuth2RestTemplate(resourceDetails);
final OAuth2AccessToken accessToken = oAuth2RestTemplate.getAccessToken();
final String accessTokenAsString = accessToken.getValue();
return accessTokenAsString;
}
解决方案
另一种方法是使用新的非阻塞WebClient
或RestTemplate
带有拦截器的不推荐使用的OAuthRestTemplate
. 工件中的所有spring-security-oauth
内容都有一个生命终结路线图。
https://spring.io/blog/2019/11/14/spring-security-oauth-2-0-roadmap-update
https://github.com/spring-projects/spring-security/wiki/OAuth-2.0-Features-Matrix
迁移指南可以在这里找到,
https://github.com/spring-projects/spring-security/wiki/OAuth-2.0-Migration-Guide
从迁移指南,
Spring Security 选择支持组合,而是公开一个
OAuth2AuthorizedClientService
,这对于创建RestTemplate
拦截器或WebClient
交换过滤器功能很有用。Spring Security 为ExchangeFilterFunction
都利用此服务的基于 Servlet 和 WebFlux 的应用程序提供了 s。
这里有一个迁移示例,
https://github.com/jgrandja/spring-security-oauth-5-2-migrate
推荐阅读
- javascript - Apex 图表(动态加载)图表实现
- python - 将 VCF 文件加载到内存中,然后使用 pyvcf 读取它
- python - 无需迭代即可检查数字格式“100.000,00”的最快方法
- c# - 在 VS2015 中发布后 DLL not found 错误 — tidy.x64.dll
- python - sklearn lda.predict 的输出与输入标签不同
- algorithm - 如何加速 geopandas 空间连接?
- sql - 意外结果的 Oracle 订单
- phpstorm - PhpStorm:动态更改文件类型的任何方式
- oracle - 为 ODBC 创建 oracle 只读用户
- inject - 找不到easyhook64.dll