使用身份验证令牌的Java REST服务

Spr*_*ing 16 java security authentication rest java-ee

在我使用Java EE 6的Web应用程序上.我想将我的一些功能公开为Json Rest Service.我想使用身份验证令牌进行登录,用户将发送他们的用户名,密码和服务器将发回一个令牌,该令牌将用于授权用户在给定时间内的进一步请求.

到目前为止,有几个问题困扰着我;

  • 当服务器创建令牌并发送到客户端时,服务器是否应该使用像哈希表这样的用户ID令牌对将其保存在数据库中或Bean中?

  • 我可以使用任何特定于Java EE的API获得一些帮助,或者这必须是所有自定义代码吗?

cow*_*wls 11

继承了我的意见:

  • 我会将令牌保存在DB中,以防您需要重新启动服务器而不想丢失所有用户的令牌.您可以将其保存在内存中以加快请求速度,只有在内存中找不到时才在DB中查找.

  • 我会接受标题中的标记.我会将其余服务放在HTTPS上,以便请求被加密,然后您不必担心在请求中手动加密令牌

  • 我可能会看看JAX-RS,看看它提供了哪些功能


Iai*_*ter 6

我最近在博客上讨论了如何使用简单的会话令牌方法和使用会话令牌作为共享密钥签署请求的更安全方法,在JAX-RS REST API中设置基于角色的授权.

归结为:

  • 从服务器获取会话令牌以及用户的一些标识符
  • 使用令牌加密请求中的信息
  • 还使用时间戳和随机数值来防止MITM攻击
  • 除了最初检索会话令牌之外,决不要来回传递会话令牌
  • 对会话令牌有一个到期政策