2015-01-06 15 views
6

Trong ngắnTôi có nên sử dụng cả hai SocialAuthenticationFilter và ProviderSignInController cùng

sự kiện xác thực không được sa thải khi sử dụng ProviderSigninController. Làm cách nào tôi có thể sử dụng tích hợp bảo mật toàn bộ mùa xuân?

dài Version

Để tốt nhất của sự hiểu biết của tôi, tôi có một thiết lập chức năng Xuân-xã hội làm việc như sau:

ProviderSignInController được thiết lập để tạo kết nối xã hội và tự động tài khoản người dùng cung cấp khi người dùng mới xuất hiện. Tôi sử dụng SignInAdapter, như được hiển thị bởi documented example,

Tôi cũng có dịch vụ xác thực dựa trên bảo mật mùa xuân thường xuyên sử dụng UserDetailsService.

Tuy nhiên, một khác biệt mà tôi đã thấy là đăng nhập xác thực xã hội không tăng bất kỳ * AuthenticationEvents nào. Các sự kiện này được bộ lọc tạo cho các tài khoản thông thường.

Tôi tự hỏi - Tôi có thiếu một số phần của tích hợp này không?.
Dường như một chút dễ bị tổn thương KHÔNG đi qua SocialAuthenticationFilter và chỉ cần đặt thủ công ngữ cảnh xác thực.

Tôi muốn một vị trí trung tâm để ghi lại sự kiện xác thực.

+0

Tôi gặp vấn đề tương tự. Bạn có tin gì về điều này không? Cảm ơn. – alexanoid

+1

Không xin lỗi. Không chắc chắn nếu có bất kỳ cải tiến/cập nhật nào đối với bảo mật mùa xuân kể từ khi tôi đăng bài này. –

Trả lời

1

Tôi đã có một tình huống tương tự mà tôi muốn sử dụng SocialAuthenticationFilter cho auth và đăng ký ngầm với Spring Security, chứ không phải là ProviderSignInController (Tôi đồng ý nó cảm thấy một chút bẩn bằng cách sử dụng bộ điều khiển).

Tôi đã kết nối nó lên & nó chủ yếu hoạt động, nhưng tôi đã mất các sự kiện onAuthenticationSuccess mà thông tin đăng nhập bình thường đã cho tôi.

Điều cuối cùng tôi đã làm để làm cho bộ lọc của mình hoạt động như tôi cần, là thêm một ObjectPostProcessor vào nó. Điều này cho phép tôi đặt thủ công AuthenticationSuccessHandler của mình sau khi bộ lọc đã được khởi tạo sâu bên trong SpringSocialConfigurer (mà không cần xử lý trên nó).

Đây là một đoạn trích.

  // Spring Social configurer integrates with Spring Security for us 
      .and().apply(new SpringSocialConfigurer() 
        .postLoginUrl("/") 
        // other setup 
        .addObjectPostProcessor(new ObjectPostProcessor<SocialAuthenticationFilter>() { 
         @Override 
         public <O extends SocialAuthenticationFilter> O postProcess(O filter) { 
          filter.setAuthenticationSuccessHandler(loginSuccessHandler); 
          return filter;  
         } 
        }); 

loginSuccessHandler, chỉ là đậu cùng tôi đặt trong cấu hình bộ lọc bình thường của tôi qua, .formLogin().successHandler(loginSuccessHandler).

Bạn cũng có thể đặt FailHandler của mình tại đây.

Điều này đã phục vụ cho mục đích của tôi. Bây giờ, giải pháp này sử dụng SocialUserDetailsService của tôi cho auth và ConnectionSignUp để đăng ký ngầm (khi được đăng ký trên UsersConnectionRepository).

Hy vọng điều này sẽ hữu ích.

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