0

OAuth2セキュリティトークンで保護されたサービスを消費するために、Springクラウドフェインを使用して簡単なRESTクライアントを作成しようとしています。ベアラトークンを追加するためにOAuth2FeignRequestInterceptorを使用しています。下のコードを確認してください。私は401に直面しています。私のコードをデバッグしようとすると、私のリクエストオブジェクトにベアラトークンが見つかりません。SpringクラウドFeign OAuth2要求インターセプタが動作していません

@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); 
    } 

答えて

0

私はそれがClientCredentialsConfigurationに注釈@Profile(OAuth2Profiles.CLIENT_CREDENTIALS)に起因して、問題を発見しましたクラス。プロファイルを有効にしていないので、インターセプタBeanがまったく読み込まれません。

0

下回っています。私にとっては、@Beanメソッドの戻り値の型を汎用のRequestInterceptorに変更しました。このように:どのように装うとセットアップのOAuthへ

@Bean 
public RequestInterceptor oauth2FeignRequestInterceptor() { 
    return new OAuth2FeignRequestInterceptor(...); 
} 

また、このチュートリアルではかなりよく説明: spring-cloud-feign-oauth2

+0

ClientCredentialsConfigurationクラスの注釈@Profile(OAuth2Profiles.CLIENT_CREDENTIALS)が原因で問題が見つかりました。プロファイルを有効にしていないので、インターセプタBeanがまったく読み込まれません。 –

関連する問題