开始我知道
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
上发布了此内容
答案 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。