2017-01-23 1 views
1

나는 spring-security-oauth가 시작한 https 요청을 추적하기 위해 spring-cloud-sleuth를 사용하려고합니다.spring-security-oauth 활동을 추적하기 위해 spring-cloud-sleuth를 사용하는 방법?

하지만 스프링 - 클라우드 - 썬더 필터 TraceFilter 전에 OAuth2AuthenticationProcessingFilter가 실행됩니다.

spring-security-oauth 필터 이전에 spring-cloud-sleuth 필터가 처리되도록 변경할 수 있습니까?

버전 정보 :

  • 봄 부팅 : 1.3.5
  • 스프링 클라우드 : Brixton.SR3
  • 스프링 클라우드 형사 : 1.0.3
  • 스프링 보안 OAuth2를 : 2.0.9

업데이트 : 나는 P를 해결할 수 아래의 제안을 바탕으로 로 내 자신의 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/문제를 제출하여 계속 논의 할 수 있습니다.

+0

빠른 응답을 보내 주셔서 감사합니다. 는 같은 FilterRegistrationBean를 사용하여 의미합니까 : @Bean 공공 FilterRegistrationBean getSleuthTraceFilterRegistrationBean() { FilterRegistrationBean 콩 = 새로운 FilterRegistrationBean(); bean.setFilter (새 TraceFilter (...)); bean.setOrder (1); bean.addUrlPatterns ("/"); return bean; } TraceFilter를 생성하려면 어떻게해야합니까? 생성자는 다음과 같이 자세한 내용을 입력해야합니다. TraceFilter를 등록하는 다른 간단한 방법을 놓쳤습니까? –

+0

지저분한 의견에 사과드립니다. 'FilterRegistrationBean'을 사용하고 싶습니까? 그러나 어떻게'TraceFilter' 객체를 만들 수 있습니까? 생성자는 많은 세부 사항을 필요로합니다 ... 아니면 TraceFilter를 등록하는 더 쉬운 방법이 있습니까? –

+0

등록을 담당하는 두 개의 bean이 있습니다 - https://github.com/spring-cloud/spring-cloud-sleuth/blob/master/spring-cloud-sleuth-core/src/main/java/org/ springframework/cloud/sleuth/instrument/web/TraceWebAutoConfiguration.java # L98 제대로 작동하는지 확신 할 수 없지만 분명히 콩을 재사용하고 같은 방식으로 상위 순서로 등록하려고 시도 할 수 있습니다. 'TraceFilter'는 이미 bean입니다 - 당신은 그것을 삽입 할 수 있습니다. –

관련 문제