我应该同时使用SocialAuthenticationFilter和ProviderSignInController吗?
简而言之
使用ProviderSigninController时不会触发身份validation事件。 如何使用完整的Spring安全集成?
长版
据我所知,我有一个function性的Spring-social设置如下:
ProviderSignInController设置为创建社交连接,并在新用户出现时自动配置用户帐户。 我使用SignInAdapter,如记录的示例所示,
我还使用UserDetailsService定期进行基于spring-security的身份validation服务。
但是,我看到的一个区别是社交身份validation登录不会引发任何* AuthenticationEvents。 这些事件由常规帐户的filter引发。
我想知道 – 我错过了这种整合的一部分吗? 。
看起来有点脆弱,不通过SocialAuthenticationFilter,只需手动设置auth上下文。
我想要一个记录认证事件的中心位置。
我有类似的情况,我想使用SocialAuthenticationFilter进行身份validation和使用Spring Security的隐式注册,而不是ProviderSignInController(我同意使用控制器感觉有点脏)。
我把它连接起来并且它大部分都有效,但我丢失了正常登录给我的onAuthenticationSuccess事件。
我最终做的是让我的filter按需要工作,就是向它添加一个ObjectPostProcessor。 这允许我在SpringSocialConfigurer深度初始化filter后手动设置我的AuthenticationSuccessHandler(没有句柄)。
这是一个片段。
// Spring Social configurer integrates with Spring Security for us .and().apply(new SpringSocialConfigurer() .postLoginUrl("/") // other setup .addObjectPostProcessor(new ObjectPostProcessor() { @Override public O postProcess(O filter) { filter.setAuthenticationSuccessHandler(loginSuccessHandler); return filter; } });
loginSuccessHandler
,与我在普通filter配置中设置的bean相同,通过.formLogin().successHandler(loginSuccessHandler)
。
你也可以在这里设置你的failureHandler。
这符合我的目的。 该解决方案现在使用我的SocialUserDetailsService进行身份validation,使用ConnectionSignUp进行隐式注册(在UsersConnectionRepository上注册时)。
希望这可以帮助。
- 如何在Dropwizard中进行资源的基本身份validation
- Spring SecurityContext在错误页面上返回null身份validation
- 如何使用WSS4J拦截器在Web服务方法中获取经过身份validation的用户
- Spring Security 4.0.0 + ActiveDirectoryLdapAuthenticationProvider + BadCredentialsException PartialResultException
- 将自定义AuthenticationProcessingFilter与一起使用(auto-config =“true”)
- 如何在GWT中实现登录屏幕?
- 如何在SNMP4J中使用非对称密钥或证书身份validation?
- JAX-WS,身份validation和授权 – 如何?
- Spring Security将URL参数传递给Authentication Provider