我正在使用spring-security-facebook:0.10.4在我们的Grails应用程序中集成SSO的Facebook身份验证。我们的要求之一是允许用户打开或关闭SSO(通过我们的应用程序的一些控制)。如果它已打开,那么我们希望使用spring-security-facebook筛选器进行身份验证。如果我们的应用程序关闭了SSO,我们希望使用默认的Spring安全筛选器进行身份验证(无论是否存在Facebook cookie /身份验证令牌)。Grails spring-security-facebook插件 - 自定义客户端身份验证
我不确定如何配置spring-security-facebook插件以允许此用例。现在,我有基于透明cookie的授权(FacebookAuthCookieTransparentFilter)工作,并且效果很好。问题在于它会尝试通过Facebook在每个页面上进行身份验证。我看不到一种可以控制此功能的方式,因此我可以检查用户是否在我们的应用中打开了SSO,并且只有在启用了SSO的情况下才使用Facebook身份验证过滤器。
我在想我必须使用基于手动Cookie的授权(FacebookAuthCookieDirectFilter),但我不知道如何配置它。文档(位于... http://splix.github.com/grails-spring-security-facebook/guide/3%20Usage.html#3.4%20Client%20Side%20Authorization)说...“与FacebookAuthCookieTransparentFilter相同,它解析Facebook cookie,但仅用于指定的URL。像来自spring-security-core或类似的用户名/密码过滤器。成功授权后,它可以重定向用户指定的网址。“
是基于手动cookie的授权是否符合我的要求?如何将其配置为仅适用于在我们的应用中打开SSO的用户?如何将其配置为“...将用户重定向到指定的网址”?
好,我得到它的工作。谢谢伊戈尔! – aschune
这对第一次从我的应用程序登录Facebook非常有用。但是,如果我已经在另一个选项卡上登录到Facebook,然后转到我的应用程序,然后单击facebookAuth:connect按钮... Facebook身份验证窗口闪烁,但我的应用程序不执行任何操作。在这种情况下(?)看起来auth.login事件没有被触发。你见过这个问题吗?我不知道这是一个Facebook的错误,或者我需要在我的JavaScript代码。 – aschune
是的,有时会发生。您也可以点击FB.getLoginStatus类,请参阅https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/ –