Spring Cloud Feign OAuth2请求拦截器不工作 [英] Spring cloud Feign OAuth2 request interceptor is not working
本文介绍了Spring Cloud Feign OAuth2请求拦截器不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用Spring Cloud Feign创建一个简单的REST客户端,以使用由OAuth2安全令牌保护的服务。我正在使用OAuth2FeignRequestInterceptor添加持有者令牌,请检查我的以下代码。我面对的是401。在尝试调试代码时,我在请求对象中找不到持有者令牌。
@Configuration
@EnableConfigurationProperties(value=OAuth2ClientCredentialsProperties.class)
@EnableOAuth2Client
@Profile(OAuth2Profiles.CLIENT_CREDENTIALS)
public class ClientCredentialsConfiguration {
@Autowired
private OAuth2ClientCredentialsProperties oAuth2ClientCredentialsProperties;
@Bean
@Qualifier("ClientCredentialsOAuth2FeignRequestInterceptor")
public OAuth2FeignRequestInterceptor oauth2schemeRequestInterceptor() {
return new OAuth2FeignRequestInterceptor(new DefaultOAuth2ClientContext(), oauth2schemeResourceDetails());
}
@Bean
public ClientCredentialsResourceDetails oauth2schemeResourceDetails() {
ClientCredentialsResourceDetails details = new ClientCredentialsResourceDetails();
details.setClientId(oAuth2ClientCredentialsProperties.getClientId());
details.setClientSecret(oAuth2ClientCredentialsProperties.getClientSecret());
details.setAccessTokenUri(oAuth2ClientCredentialsProperties.getAccessTokenUri());
details.setScope(oAuth2ClientCredentialsProperties.getScopes());
return details;
}
}
这是我的客户端界面
@FeignClient(name = "test", url = "http://localhost:8080", configuration = ClientCredentialsConfiguration.class)
interface GitHubClient {
@RequestMapping(value = "/api/v1/products",
produces = "application/json",
consumes = "application/json;charset=UTF-8",
method = RequestMethod.POST)
ResponseEntity<Object> testUsingPOST(@RequestBody TestDTO testDTO);
我的属性如下
server.port=10080
security.user.name=admin
security.user.password=admin
security.basic.enabled=false
org.springframework.boot.autoconfigure.EnableAutoConfiguration=sgcib.clips.bcsapi.configuration.ClientCredentialsConfiguration
feign.oauth2.enabled=true
feign.hystrix.enabled=false
我的主课
@SpringBootApplication
@EnableWebMvc
@Controller
@EnableFeignClients
@EnableAutoConfiguration
public class App extends SpringBootServletInitializer {
@Autowired
private GitHubClient gitHub;
@RequestMapping("/")
public String home() {
return "index";
}
@RequestMapping("/{owner}")
@ResponseBody
public ResponseEntity<Object> contributors(@PathVariable String owner) {
return gitHub.productsUsingPOST(new TestDTO());
}
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
推荐答案
我发现了问题,是因为ClientCredentialsConfiguration
类中的注释@Profile(OAuth2Profiles.CLIENT_CREDENTIALS)
。我错过了启用配置文件,所以根本没有加载我的拦截器Bean。
这篇关于Spring Cloud Feign OAuth2请求拦截器不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文