2017-01-23 10 views
1

私はspring-security-oauthによって開始されたhttps要求を追跡するためにspring-cloud-sleuthを使用しようとしています。spring-security-oauth活動を追跡するためにspring-cloud-sleuthを使用するにはどうすればよいですか?

しかし、私は、spring-security-oauthフィルタOAuth2AuthenticationProcessingFilterがspring-cloud-sleuthフィルタTraceFilterの前に実行されていることに固執しています。

spring-security-oauthフィルタの前にspring-cloud-sleuthフィルタが処理されるようにこれを変更できますか?

バージョン情報:

  • 春ブート:1.3.5
  • 春クラウド:Brixton.SR3
  • 春-クラウド探偵:1.0.3
  • 春 - セキュリティのOAuth2私は、pを解決できるの下の提案に基づいて :2.0.9

更新私自身のFilterRegistrationBeanを定義することによってroblem:

@Inject 
TraceFilter traceFilter; 

@Bean 
public FilterRegistrationBean myTraceFilter() { 
    LOG.info("Register a TraceFilter with HIGHEST_PRECEDENCE"); 
    FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(traceFilter, new ServletRegistrationBean[0]); 
    filterRegistrationBean.setDispatcherTypes(ASYNC, new DispatcherType[]{ERROR, FORWARD, INCLUDE, REQUEST}); 
    filterRegistrationBean.setOrder(Ordered.HIGHEST_PRECEDENCE); 
    return filterRegistrationBean; 
} 

答えて

1

あなたはTraceFilterを自分で登録して、手動で順序を提供することができます。春のセキュリティフィルターの前に置いてみてください。それがうまくいくならば、全体の流れを説明するPR/issueを提出して、議論を続けることができます。

+0

クイックレスポンスありがとう! はあなたのようなFilterRegistrationBeanを使用して意味ですか: @Bean 公共FilterRegistrationBean getSleuthTraceFilterRegistrationBean(){ FilterRegistrationBean豆=新しいFilterRegistrationBean(); bean.setFilter(new TraceFilter(...)); bean.setOrder(1); bean.addUrlPatterns( "/"); return bean; } しかし、どのようにTraceFilterを作成するのですか?そのコンストラクタには、多くの詳細が必要です:-) TraceFilterを登録する簡単な方法がありませんでしたか? –

+0

乱雑なコメントにごめんなさい! 'FilterRegistrationBean'を使うことを意味しますか?しかし、 'TraceFilter'オブジェクトを作成するにはどうすればいいですか?そのコンストラクタは多くの詳細を必要とします... TraceFilterを登録する簡単な方法はありますか? –

+0

ここには登録を担当する2つのBeanがあります - https://github.com/spring-cloud/spring-cloud-sleuth/blob/master/spring-cloud-sleuth-core/src/main/java/org/私はそれが正常に動作するかどうかは分かりませんが、明らかにBeanを再利用して同じ方法で上位のものを登録しようとします。 'TraceFilter'はすでにBeanです - あなたはそれを挿入することができます。 –

関連する問題