Spring Security:多次登录到相同的资源:表单登录+ Facebook Connect(uid,sessionKey)

时间:2009-12-02 21:52:41

标签: authentication facebook spring-security

开始我知道

http://blog.kadirpekel.com/2009/11/09/facebook-connect-integration-with-spring-security/

唯一的问题是它完全取代了使用Facebook Connect的表格登录。

我有原生的表格登录,

我也有Facebook Connect,在收集用户信息后,我将其链接到本机帐户,但没有密码。

此时我想调用一个链接或方法来启动进入的过程 Spring Security Filter Chain。


这是source code that works,但我正在尝试修改。 它包含我正在采取的所有文件。

现在根据我的理解,我需要添加一个自定义的FacebookAuthenticationProvider以便我的 AuthenticationManager知道它。

<bean id="facebookAuthenticationProvider" class="org.springframework.security.facebook.FacebookAuthenticationProvider">
</bean>

<security:authentication-manager alias="authenticationManager">
    <security:authentication-provider ref="facebookAuthenticationProvider" />
</security:authentication-manager>

然后在FacebookAuthenticationProvider中,我将不得不调用一个FacebookAuthenticationToken来获取用户当前的facebook Uid和SessionKey。

然后尝试验证此令牌。

那么FacebookAuthenticationFilter会进入哪里?

我只是想了解调用这3个文件的顺序。 好像您正在尝试实施任何其他自定义身份验证。

FacebookAuthenticationFilter.java   
FacebookAuthenticationProvider.java     
FacebookAuthenticationToken.java    

我也在Spring Security Forum

上发布了此内容

2 个答案:

答案 0 :(得分:3)

我写了一篇关于具有spring security的多个身份验证提供程序的文章(例如,一个表单登录,一个facebook登录和一个open-id登录)。希望有所帮助:http://thoean.com/programming/java/multiple-authentication-provider-with-spring-security/

答案 1 :(得分:0)

这可能对您有用...我使用aop来保护我的服务方法和ldapAuthenticationProvider,但行为也与dbAuthenticationProvider相同。我观察到在调用安全方法之前调用SecurityContextHolder.getContext().getAuthentication().getPrincipal()总是返回null但是一旦调用了安全方法,它就会被正确填充。这是Spring security 3.0.5.RELEASE。