使用身份验证令牌的Java REST服务
在我的web应用程序上使用JavaEE6。我想将我的一些功能公开为Json Rest服务。我想使用身份验证令牌进行登录,用户将发送其用户名、密码,服务器将发送回令牌,该令牌将用于授权用户在给定时间内的进一步请求 到目前为止,有几个问题困扰着我使用身份验证令牌的Java REST服务,java,security,rest,jakarta-ee,authentication,Java,Security,Rest,Jakarta Ee,Authentication,在我的web应用程序上使用JavaEE6。我想将我的一些功能公开为Json Rest服务。我想使用身份验证令牌进行登录,用户将发送其用户名、密码,服务器将发送回令牌,该令牌将用于授权用户在给定时间内的进一步请求 到目前为止,有几个问题困扰着我 当服务器创建令牌并发送到客户机时,服务器应该将其保存在DB中还是使用哈希表之类的东西作为用户标识令牌对保存在Bean中 我可以使用任何特定于JavaEE的API获得一些帮助吗?或者这必须是所有自定义代码 以下是我的输入: 我会将令牌保存在DB中,以防您
- 当服务器创建令牌并发送到客户机时,服务器应该将其保存在DB中还是使用哈希表之类的东西作为用户标识令牌对保存在Bean中
- 我可以使用任何特定于JavaEE的API获得一些帮助吗?或者这必须是所有自定义代码
- 我会将令牌保存在DB中,以防您需要重新启动服务器,因为您不想丢失所有用户的令牌。您还可以潜在地将其保存在内存中,以加速请求,并且只有在内存中找不到它时才在DB中查找它
- 我会接受标题中的标记。我会将rest服务放在HTTPS上,这样请求就被加密了,然后您就不必担心在请求中手动加密令牌了
- 我可能会看看JAX-RS,看看它提供了什么特性
- 从服务器获取会话令牌以及用户的一些标识符
- 使用令牌加密请求中的信息
- 还可以使用时间戳和nonce值来防止MITM攻击
- 除非最初检索会话令牌,否则不要来回传递它
- 对会话令牌具有过期策略
- 以下是我的输入:
- 将令牌保存在bean或哈希表中不会持久。DB将在执行之间保持
如果要使用REST,则可以将参数中的身份验证传递给方法,也可以传递给请求头本身。加密是另一回事。我想这取决于系统的规模和开放程度。如果安全性是最重要的,那么是的,您应该找到某种形式的加密
我使用和做过类似的事情。这些东西用这个比较简单。编写自定义代码就是重新发明轮子。有很多框架可以帮助您。但是,您将了解该框架的学习曲线。我最近讨论了如何在JAX-RS REST API中使用简单的会话令牌方法和更安全的方法(使用会话令牌作为共享密钥对请求进行签名)设置基于角色的授权
归结起来是: