spring-social: SecurityContextHolder.getContext().getAuthentication() возвращает ноль
Я пытался интегрировать Spring-social в наше приложение, и у меня возникают трудности с пониманием рабочего процесса в отношении того, кто должен устанавливать маркер доступа в контексте безопасности. Я использую Spring-Social 1.1.4 libs и Spring-Social-Twitter 1.1.2.RELEASE. Я добавил социальный вход в Twitter с помощью SpringSocialConfigurer и могу использовать мой API / auth / twitter, чтобы вызвать поток OAuth1 для получения токена запроса, перенаправить в Twitter для входа в систему, а затем получить токен доступа с моим аутентифицированным маркер запроса. Получив токен запроса, я ожидал, что мое подключение к Twitter будет сохранено в моей таблице UserConnection. Однако этого не происходит, но вместо этого я перенаправлен на URL / signup. После проверки кода в SocialAuthenticationFilter я вижу: введите описание изображения здесь
где строка 201 возвращает ноль, таким образом, вызывая строку 206 для перенаправления на URL / signup. Я ожидал, что моя Аутентификация была установлена на SocialAuthenticationToken. Я неправильно понимаю поток здесь, который должен произойти? Не уверен, поможет ли это, но существующая цепочка фильтров Spring-Security, в которую я подключил SpringSocialConfigurer, выглядит следующим образом:
SpringSocialConfigurer springSocialConfigurer = new SpringSocialConfigurer()
.connectionAddedRedirectUrl("/connectionAdded")
.postLoginUrl("/postLogin")
//.postLoginUrl("/")
.signupUrl("/signup")
.defaultFailureUrl("/#/login")
.alwaysUsePostLoginUrl(true);
springSocialConfigurer
.addObjectPostProcessor(new ObjectPostProcessor<SocialAuthenticationFilter>() {
@Override
public <O extends SocialAuthenticationFilter> O postProcess(O filter) {
//filter.setAuthenticationSuccessHandler(loginSuccessHandler);
System.out.println(filter.getClass().getName());
return filter;
}
});
http.csrf()
.disable()
.headers()
.frameOptions()
.disable()
.and()
.sessionManagement()
.sessionFixation()
.none()
.enableSessionUrlRewriting(false)
.and()
.formLogin()
.permitAll()
.successHandler(successHandler)
.failureHandler(failureHandler)
.loginPage("/login")
.loginProcessingUrl("/login_post.htm")
.and()
.authorizeRequests()
.antMatchers("/account/wishlist/**", "/account/**", "/auth/**")
.access("isAuthenticated()")
.and()
.requiresChannel()
.antMatchers("/", "/**")
.requiresSecure()
.and()
.logout()
.invalidateHttpSession(true)
.deleteCookies("ActiveID")
.logoutUrl("/logout")
.and()
.portMapper()
.http(80)
.mapsTo(443)
.http(8080)
.mapsTo(8443)
.http(8081)
.mapsTo(8444)
.http(8082)
.mapsTo(8445)
.and()
.addFilterBefore(securityFilter, UsernamePasswordAuthenticationFilter.class)
.addFilterBefore(sessionFixationProtectionFilter, SessionManagementFilter.class)
.rememberMe()
.tokenValiditySeconds(1209600)
.and()
.apply(springSocialConfigurer);