我一直在尝试将spring-social集成到我们的应用程序中,并且在了解谁应该在安全上下文中设置访问令牌方面遇到一些困难。我正在使用spring-social 1.1.4 libs和spring-social-twitter 1.1.2.RELEASE。我使用SpringSocialConfigurer在Twitter上添加了社交登录,并且能够触发我的/ auth / twitter API来触发OAuth1流以获取请求令牌,重定向到Twitter以登录,然后通过我的身份验证获取访问令牌请求令牌。一旦我有了请求令牌,我就希望我的Twitter连接能够持久保存到我的UserConnection表中。但是,这没有发生,而是我被重定向到/ signup URL。检查SocialAuthenticationFilter中的代码后,我看到: enter image description here
其中第201行返回null,因此,触发第206行重定向到/注册URL。我原本希望我的身份验证设置为SocialAuthenticationToken。我是否误解了应该发生的流程?不确定这是否有任何帮助,但是我将SpringSocialConfigurer挂钩的现有spring-security过滤器链如下:
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);