OAuth2 | ClientCredentialsResourceDetails |不推荐使用

问题描述 投票:0回答:1

我是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;
 } 
spring-boot spring-security spring-security-oauth2 spring-oauth2
1个回答
0
投票

替代方法是在已弃用的WebClient上使用新的非阻塞RestTemplate或带有拦截器的OAuthRestTemplatespring-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为同时利用该服务的基于Servlet和基于WebFlux的应用程序提供ExchangeFilterFunction

[这里有一个迁移示例,

https://github.com/jgrandja/spring-security-oauth-5-2-migrate

© www.soinside.com 2019 - 2024. All rights reserved.