spring security - 基于时间的URL和身份验证令牌

时间:2013-01-07 09:34:26

标签: spring spring-security

我需要在以下位置实现用户身份验证:

  1. 用户获取链接,链接上有一个令牌,用于加密他的一些细节(id等)和到期时间==>此网址不在我的应用程序中,已经实施
  2. 当用户点击链接时,我需要解密令牌并解析数据,但我不需要将其与数据库中的数据进行比较。只检查时间没有过期并获取数据(id等)
  3. 您能指导我使用哪些课程吗?我已经阅读了很多,现在我想我需要扩展AbstractPreAuthenticatedProcessingFilter来从URL中获取令牌并对其进行解密,但我不确定身份验证提供程序,以及是否需要userService实现?

    谢谢!

    编辑:

    我一直在阅读更多,现在我不确定我是否需要PreAuthenticated类,因为它不像用户之前已经过身份验证,我仍然需要对他进行身份验证。认证实际上是看到解密有效并且尚未达到到期时间。你有什么建议?我开始编写自己的过滤器(扩展AbstractAuthenticationProcessingFilter),然后我看到我需要自己的AuthenticationToken实现,因为UsernamePasswordAuthentication不适合我,然后在提供程序中我找不到真正合适的东西。

    任何帮助都会得到满足。我正在考虑扩展AbstractAuthenticationProcessingFilter但不使用身份验证管理器,因为它让我变得更复杂。你觉得怎么样?

1 个答案:

答案 0 :(得分:0)

以下是您可以使用的方法:

1)扩展“GenericFilterBean”以创建您自己的安全过滤器,然后您可以将其用作“http”配置中的“自定义过滤器”。

2)可选:根据您的需要,您可以实现自己的'UserDetails',这非常简单。

3)可选:您可以使用“PreAuthenticatedAuthenticationToken”进行“身份验证”实施。

4)在过滤器中,您可以查找相应参数的存在,尝试解密信息。如果出现任何问题,请抛出Authentication Exception并在下一个描述的入口点处理它。

5)可选:如果成功,您可以将UserDetails对象包装在PreAuthenticatedAuthenticationToken中,并将其设置为安全上下文持有者。

6)实现“AuthenticationEntryPoint”并覆盖“开始”以清除securitycontext / session,从自定义过滤器处理AuthenticationException和/或重定向/分派到视图。使用此作为您的切入点。