복붙노트

[SPRING] SocialAuthenticationFilter와 ProviderSignInController를 함께 사용해야합니까?

SPRING

SocialAuthenticationFilter와 ProviderSignInController를 함께 사용해야합니까?

짧게

ProviderSigninController를 사용할 때 인증 이벤트가 시작되지 않습니다. 전체 스프링 보안 통합을 사용하려면 어떻게해야합니까?

긴 버전

필자가 가장 잘 이해할 수 있도록 다음과 같이 Spring -Social 기능을 설정했다.

ProviderSignInController는 소셜 연결을 생성하고 새 사용자가 나타나면 사용자 계정을 자동으로 제공하도록 설정됩니다. 문서화 된 예제에서 볼 수 있듯이 SignInAdapter를 사용합니다.

또한 UserDetailsService를 사용하여 정기적 인 스프링 보안 기반 인증 서비스를 제공합니다.

그러나 내가 본 한 가지 차이점은 소셜 인증 로그인이 어떤 AuthenticationEvent도 발생시키지 않는다는 것입니다. 이러한 이벤트는 일반 계정의 필터에서 발생합니다.

나는이 통합의 일부를 놓치고 있는가? SocialAuthenticationFilter를 거치지 않고 auth 컨텍스트를 수동으로 설정하는 것이 약간 위험한 것 같습니다.

인증 이벤트 로깅을위한 중심적인 장소가 필요합니다.

해결법

  1. ==============================

    1.필자는 Spring Security와 함께 Auth와 암시 적 가입을 위해 SocialAuthenticationFilter를 사용하고자하는 비슷한 상황을 보았습니다. ProviderSignInController보다는 컨트롤러를 사용하는 것이 더 낫다고 생각합니다.

    필자는 Spring Security와 함께 Auth와 암시 적 가입을 위해 SocialAuthenticationFilter를 사용하고자하는 비슷한 상황을 보았습니다. ProviderSignInController보다는 컨트롤러를 사용하는 것이 더 낫다고 생각합니다.

    나는 그것을 연결했고 대부분 효과가 있었지만 정상적인 로그인이 준 onAuthenticationSuccess 이벤트를 잃어 버렸다.

    마침내 필자가 필요로하는대로 필터를 작동 시키려면 ObjectPostProcessor를 추가해야합니다. 이를 통해 SpringSocialConfigurer 내에서 필터가 처리되지 않은 상태에서 초기화 된 후 수동으로 AuthenticationSuccessHandler를 설정할 수있었습니다.

    여기에 스 니펫이 있습니다.

                // 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는 .formLogin (). successHandler (loginSuccessHandler)를 통해 필자가 정상적인 필터 구성에서 설정 한 bean과 동일합니다.

    여기서 장애물을 설정할 수도 있습니다 .Handler는 여기에 있습니다.

    이것은 내 목적에 도움이되었다. 이제 솔루션은 내 SocialUserDetailsService를 인증 용으로 사용하고 ConnectionSignUp을 암시 적 등록 (UsersConnectionRepository에 등록) 용으로 사용합니다.

    희망이 도움이됩니다.

  2. from https://stackoverflow.com/questions/27802112/should-i-use-both-socialauthenticationfilter-and-providersignincontroller-togeth by cc-by-sa and MIT license