Spring中基于令牌的身份验证

时间:2013-02-26 02:42:23

标签: java spring spring-security

我们有一个Spring Web应用程序,它已经使用Spring安全性来验证用户身份并授予对一组受限页面的访问权限。但是,我们希望获得另一组资源。对于第二组,我们不希望用户身份验证,而是希望用户访问页面:/access.html并输入访问代码(之前通过电子邮件发送给他们),然后他们将被授予访问这些资源的权限,而无需登录。访问代码(令牌)仅在有限的时间段内有效,然后到期。

我能否以某种方式使用spring security来实现与我们已有的用户身份验证设置并行实现?

2 个答案:

答案 0 :(得分:1)

当然,有几种方法可以做到这一点。听起来您需要做的就是创建一个过滤器,可以在会话/请求中检查您的令牌,并创建/更新Spring Security上下文以获得所需的角色。然后授权继续进行。

特别是,您要为GrantedAuthories Authentication对象添加Spring Security Context。这个过程有很多细节,我承认我的答案并不完整,但完整答案会非常广泛。

答案 1 :(得分:0)

我用cookie完成了类似的事情。

您可以实现自己的扩展程序GenericFilterBean

然后使用spring-security设置配置,如下所示

<security:http ... >
    ....
    <sec:custom-filter position="FORM_LOGIN_FILTER" ref="cookieAuthenticationFilter" />                                         
</security:http>  

查看BasicAuthenticationFilter的源代码可能会有所帮助。