2017-06-14 16 views
0

spring-cloud-secuirtyを使用して保護されているフロントエンドのウェブサイトがあります。すべてのバックエンドリソースは@EnableResourceServerを使用して保護されています。春と午後のM2Mコール

これらのリソースへのすべてのリクエストは、Zuulゲートウェイを介して許可されていますが、私の問題は、バックエンドのタスクが日常的に実行されるようにスケジュールされているか、電子メールによってトリガーされます。これらのタスクは許可されておらず、私が読んで理解するように、彼らはclient_credentialsとして認証されるべきです。しかし、セキュリティで保護されたリソースと通信しようとする前にアクセスコードを取得するようにクライアントを設定する方法を見つけることができません。

私は以下の迎撃を追加するすべてのものは、タスクサービス

答えて

0

除いて取り組んでいるこのプロジェクトでは、サンプルprojectを作成しているがトリックをしましたが、私はこれが最善の解決策

@Component 
public class Interceptor implements RequestInterceptor { 

    private final OAuth2RestTemplate template; 

    public Interceptor(ClientCredentialsResourceDetails oauth2RemoteResource) { 
     template = new OAuth2RestTemplate(oauth2RemoteResource, new DefaultOAuth2ClientContext(new DefaultAccessTokenRequest())); 
    } 

    @Override 
    public void apply(RequestTemplate requestTemplate) { 
     requestTemplate.header("Authorization", "bearer " + template.getAccessToken().getValue()); 
    } 
} 

であることを確認していません

より良いアプローチ

より読みになった後、私はその春、雲を見つけました-securityは既にインターセプタを持っているので、タイプOAuth2FeignRequestInterceptorのbeanを以下のように宣言するだけです。

@Configuration 
@EnableOAuth2Client 
@Slf4j 
public class OAuth2FeignAutoConfiguration { 

    @Bean 
    public OAuth2FeignRequestInterceptor oAuth2FeignRequestInterceptor(OAuth2ClientContext oauth2ClientContext, OAuth2ProtectedResourceDetails details) { 
     return new OAuth2FeignRequestInterceptor(oauth2ClientContext,details); 
    } 


} 
関連する問題