【发布时间】:2020-11-18 09:08:20
【问题描述】:
我有一个 OAuth2RestTemplate 定义如下
@Configuration
@EnableOAuth2Client
public class TestOauth{
@Bean
public OAuth2RestTemplate restTemplate(){
OAuth2RestTemplate restTemplate= new OAuth2RestTemplate(buildResourceDetails());
restTemplate.setRequestFactory(new BufferingClientHttpRequestFactory(new
HttpComponentsClientHttpRequestFactory()));
return restTemplate;
}
@Bean
public ClientCredentialsResourceDetails buildResourceDetails(){
ClientCredentialsResourceDetails resourceDetails = new ClientCredentialsResourceDetails();
resourceDetails.setClientId("TestId");
resourceDetails.setClientSecret("TestSecret");
resourceDetails.setAccessTokenUri("TestURI");
return resourceDetails;
}
现在,在调用类中,我将其注释如下,它工作正常。
@Autowired
private OAuth2RestTemplate restTemplate;
我想使这个功能通用,并基于非 clientId、secret 和 URI 创建模板。我怎样才能做到这一点?是否创建多个 @bean 方法(每个凭据的单独方法)并基于调用者凭据,从映射中选择相应的 bean 可能是实现此目的的唯一方法?
我尝试只保留一个 @bean 方法并将参数传递给 restTemplate 方法,但我一直遇到 没有找到 [java.lang.String] 类型的合格 bean 错误
请指教
【问题讨论】:
-
你有多少个clientId?
-
现在大约 3 个,但我们正在考虑在不久的将来增加到 20 个。
标签: java spring rest spring-security oauth-2.0