2011-04-25 122 views
0

我想要实现的情况下,类似于以下一个基于令牌的认证机制:基于令牌的认证6

在谷歌日历,你可以邀请客人到您的活动,谁又将可以通过电子邮件邀请直接响应这些事件。对这样的事件的邀请包含各自的链接以响应(是,否,也许)与在URL中编码的认证令牌。这些认证令牌仅限于特定的事件和用户。

生成这些类型的“一次性”令牌的最佳做法是什么?只能执行有限的操作并且只能访问有限的资源(并且可能仅在有限的时间内有效)?我如何在Glassfish中实现这一点?我想通过我的应用程序的RESTful API(使用Jersey)公开这一点。目前,我的应用程序中的所有URL路径都使用在web.xml中配置的身份验证约束进行保护。

我的这种方法将是如下:

  1. 提供(例如/ token_auth),其中不施加约束认证的URL,并使用这个令牌认证。
  2. 在Web服务方法中,手动检查安全令牌并执行所需的操作。令牌与用户名,截止日期,授权资源等信息一起保存在数据库中。

我想知道是否有更优雅的解决方案使用任何框架或可以避免的内置容器功能所有的手工工作。而且这个解决方案是否可能有一些安全缺陷。

类似的问题已经被问对SO前:Newbie at JAAS authentication; Sign in using a token in the URL Bar

回答

1

你看着的UUID?我们使用Safehaus UUID

+0

不,我看着它。它优于Java的内置UUID类。效率?我的问题的其余部分如何,你是否会按照我描述的方式处理问题?你还在工作中使用Glassfish吗? – Theo 2011-04-26 19:33:31

+0

我个人不知道在默认的java实现中使用Safehaus版本的UUID的原因。如果需要,我可以找出差异。 – hooknc 2011-04-26 19:46:09

+0

一般来说,我会对任何可能允许访问个人信息(如日历)的令牌使用令牌进行授权。您是否考虑过生成一个包含事件信息的url,然后让用户发送url登录,而不是仅仅因为令牌而授予访问权限?我没有使用Glassfish或泽西岛,但我的猜测是,在这种情况下确实无关紧要。什么是您使用的安全框架?如果你没有使用,你可以考虑使用spring security 3. – hooknc 2011-04-26 19:53:01

1

你的方法看起来不错。我没有意识到为你做这种事情的框架。 Spring Security可能有些东西可以使用,但不是全部。