spring.config.import下访问OAuth2认证Spring Cloud Config Server的RestTemplate配置
解决方案:Spring Boot 2.4+配置数据导入方式下自定义OAuth2 RestTemplate
在Spring Boot 2.4+引入的spring.config.import配置数据导入机制中,不再依赖bootstrap上下文,因此原来通过ConfigServicePropertySourceLocator自定义RestTemplate的方式不再适用。可以通过ConfigServerConfigDataLoaderCustomizer接口实现自定义RestTemplate的需求,具体步骤如下:
1. 实现自定义配置类
创建配置类,通过ConfigServerConfigDataLoaderCustomizer替换配置服务器加载器使用的RestTemplate:
@Configuration public class ConfigClientOAuth2Config { // 自定义配置服务器加载器,替换为OAuth2RestTemplate @Bean public ConfigServerConfigDataLoaderCustomizer configServerRestTemplateCustomizer(OAuth2RestTemplate oauth2RestTemplate) { return configServerLoader -> configServerLoader.setRestTemplate(oauth2RestTemplate); } // 定义OAuth2RestTemplate实例(复用你原有的逻辑即可) @Bean public OAuth2RestTemplate oauth2RestTemplate(ClientCredentialsResourceDetails resourceDetails) { return new OAuth2RestTemplate(resourceDetails); } // 配置OAuth2客户端凭证信息 @Bean public ClientCredentialsResourceDetails clientCredentialsResourceDetails() { ClientCredentialsResourceDetails details = new ClientCredentialsResourceDetails(); // 根据你的OAuth2服务端配置填写参数 details.setAccessTokenUri("https://your-oauth-server/token"); details.setClientId("your-client-id"); details.setClientSecret("your-client-secret"); details.setGrantType("client_credentials"); return details; } }
2. 相关注意事项
- 版本要求:确保使用Spring Cloud 2020.0.0(Ilford)及以上版本,对应Spring Boot 2.4+
- 移除旧配置:不需要再引入
spring-cloud-starter-bootstrap依赖,删除META-INF/spring.factories文件及原有的ConfigClientOAuth2BootstrapConfiguration类 - 保持核心配置:配置文件中保留
spring.config.import=optional:configserver:,并根据需要配置配置服务器地址(spring.cloud.config.uri)等参数
内容的提问来源于stack exchange,提问作者dflachbart
相关产品推荐
相关产品推荐

