OAuth2 | ClientCredentialsResourceDetails |已弃用
Posted
技术标签:
【中文标题】OAuth2 | ClientCredentialsResourceDetails |已弃用【英文标题】:OAuth2 | ClientCredentialsResourceDetails | deprecated 【发布时间】:2020-09-17 03:15:24 【问题描述】:我是 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;
【问题讨论】:
你能把你的迁移结果作为答案吗? 【参考方案1】:替代方法是使用新的非阻塞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
interceptors 或WebClient
交换过滤器函数很有用。 Spring Security 为使用此服务的基于 Servlet 和 WebFlux 的应用程序提供了ExchangeFilterFunction
。
这里有一个迁移示例,
https://github.com/jgrandja/spring-security-oauth-5-2-migrate
【讨论】:
感谢@Darren,我已经通过 RestTemplet 实现了。 @piyushvijayvargiya 您介意分享通过 RestTemplate 实现的示例吗?谢谢。以上是关于OAuth2 | ClientCredentialsResourceDetails |已弃用的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot 基于 OAuth2 统一身份认证流程详解