使用RESTful服务时保持用户会话和身份验证

时间:2016-10-13 14:57:47

标签: java rest authentication restful-authentication

我对企业java web应用程序开发非常陌生,所以请保持温和。

一位同事和我正在为我们公司的一个小型应用程序工作,这将完全在私人网络中运行,该网络没有接触大型互联网。使用Spring并将服务器端编写为一组REST API。

关于REST身份验证;我做了一些研究,包括this topic非常有用。

我打算在SSL上使用HTTP基本身份验证,但我担心性能问题。我们公司有一个LDAP用户查找身份验证服务。由于REST是无状态的,显然每个REST调用都需要进行身份验证。如果LDAP因某种原因而变慢,则应用程序中的每个操作都会受到影响。

我有一个想法,我想知道是否有道理:

  • 让用户登录一次,然后我们生成一个存储在会话表中的unqiue令牌 - 包括用户的用户ID,登录时间戳和最后一次操作时间戳。
  • 令牌被发送回客户端,由客户端继续通过每次REST调用重新发送它(我们可以将其粘贴到HTTP身份验证头中)。
  • 在执行任何REST调用之前检查令牌的有效性。
  • 每次成功的REST调用都会在会话表中更新用户的最后操作时间戳。
  • 另一个线程在60秒的周期内运行,该周期检查自每个用户的上次操作后经过的时间 - 如果任何人在一段时间内(例如两个小时)处于非活动状态 - 他们的会话令牌将被清除。

这是一种合理的方法吗?我知道我必须处理(或禁止)来自不同客户的单个用户的多次登录;还没想过。

0 个答案:

没有答案