2014-08-29 39 views
11

Tôi có bộ lọc xác thực tùy chỉnh tạo ra PreAuthenticatedAuthenticationToken và lưu trữ nó trong bối cảnh bảo mật. Điều này tất cả hoạt động tốt. Dưới đây là cấu hình:Bảo mật mùa xuân và tùy chỉnh AuthenticationFilter với khởi động mùa xuân

@Configuration 
@EnableWebMvcSecurity 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 

    @Autowired 
    private SsoAuthenticationProvider authenticationProvider; 

    @Autowired 
    private SsoAuthenticationFilter ssoAuthenticationFilter; 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http.addFilterAfter(ssoAuthenticationFilter, SecurityContextPersistenceFilter.class); 
    } 
} 

Bây giờ ssoAuthenticationFilter tôi là một phần của FilterChainProxy, vào vị trí đúng. Trơn tru.

Nhưng khi ssoAuthenticationFilterFilter, nó được chọn bằng Khởi động và được bao gồm làm bộ lọc. Vì vậy, chuỗi bộ lọc của tôi thực sự trông giống như:

  • ssoAuthenticationFilter (bao gồm vì là Filter)
  • filterChainProxy (mùa xuân tự động cấu hình)
    • ...
    • SecurityContextPersistenceFilter
    • ssoAuthenticationFilter (bao gồm theo http.addFilterAfter(...))
    • ...
  • một số bộ lọc khác

Rõ ràng là tôi muốn thoát khỏi những ký tự động của ssoAuthenticationFilter đây (người đầu tiên niêm yết).

Mọi mẹo được đánh giá cao.

Trả lời

11

2 lựa chọn:

  1. Thêm một FilterRegistrationBean@Bean với đậu lọc của bạn như lọc mục tiêu của mình và đánh dấu nó như là kích hoạt = false

  2. Đừng tạo ra một định nghĩa @Bean cho bộ lọc của bạn (thường đó là những gì tôi làm, nhưng YMMV vì bạn có thể phụ thuộc vào autowiring hoặc một cái gì đó để làm cho nó hoạt động)

+0

Bạn là người đàn ông - như allways với S pring boot. –

+0

Có kế hoạch nào để hội tụ cấu hình bộ lọc Spring Security với cách khởi động Spring để thực hiện nó không? Tôi rất muốn có thể thiết lập thứ tự các bộ lọc servlet của tôi, bao gồm việc có thể đặt một bộ lọc trước các bộ lọc bảo mật mà không cần phải gây rối với 'HttpSecurity' – Adam

+0

Đừng nghĩ rằng tôi hiểu rằng dường như thêm bất kỳ điều gì vào câu trả lời). Dù sao, bạn không thể thực hiện các bộ lọc bảo mật như các bean được sắp xếp vì có thể có nhiều chuỗi bộ lọc trong một ngữ cảnh. –

Các vấn đề liên quan