使用Spring安全性和Spring社交Facebook实现混合身份验证

时间:2012-09-15 11:13:33

标签: facebook spring-security spring-social

我对Spring安全和Spring社交相对较新。我正在尝试使用标准的Spring Security或Spring社交Facebook实现混合身份验证。

因此,用户可以进行身份​​验证:

  • 使用标准的Spring安全登录表单,如下所示:

我的Thymeleaf模板的片段:

<form name="f" th:action="@{/resources/j_spring_security_check}" method="POST">
        <input id="j_username" type='text' name='j_username'/><br /> 
        <input id="j_password" type='password' name='j_password'/><br /> 
        <input id="proceed" type="submit" value="login" />
</form>

这样可行,即使用户向受保护资源发送请求,例如www.example.com/memberArea/editMyProfile受以下intercept-url保护:

<intercept-url pattern="/memberArea/**" access="hasRole('ROLE_USER')" />

用户被重定向到登录表单,并且在成功登录后,用户最终被重定向到受保护资源,即www.example.com/memberArea/editMyProfile

  • 或者用户可以选择Spring Social Facebook并使用以下链接进行身份验证/登录:

我的Thymeleaf模板的片段:

<a th:href="@{'https://www.facebook.com/dialog/oauth/?client_id=414113641982512&amp;redirect_uri=http://www.example.com/&amp;state=UNIQUE&amp;scope=read_stream'}">Login with facebook</a>

在这种情况下,用户当然会被重定向到www.example.com而不是www.example.com/memberArea/editMyProfile

我的问题是,如何 - 仍然使用Spring安全和Spring社交Facebook - 我能以某种方式检索请求的URL(这里是www.example.com/memberArea/editMyProfile)并最终将用户重定向到此URL吗?

1 个答案:

答案 0 :(得分:2)

您能帮助我了解您尝试做的事情与Spring Social的ProviderSignInController的工作方式有何不同?具体来说,如果你看一下Spring Social Showcase(https://github.com/SpringSource/spring-social-samples/tree/master/spring-social-showcase)或Spring Social Quickstart(https://github.com) / SpringSource / spring-social-samples / tree / master / spring-social-quickstart)示例,它们都使用ProviderSignInController通过Facebook验证用户。

在展示示例中,通过将用户的FB信息与先前建立的连接进行比较来完成身份验证。在快速启动示例中,它通过“隐式身份验证”完成,其中没有特定于应用程序的身份验证,而Facebook授权充分用于应用程序身份验证。根据我的理解,你试图做与展示相同的风格,但我可能会误解你正在尝试做什么。

顺便说一句,请随时在StackOverflow继续讨论,但我鼓励您在Spring社交论坛(http://forum.springsource.org/forumdisplay.php?82-Social)上提问您的Spring社交问题,因为我几乎每天监视该论坛,但每周只访问SO(如果经常这样)。