我的理解是 RESTful 服务应该是完全无状态的。每次调用该服务时,我都必须传递它正常运行所需的所有信息。
然而,当涉及到身份验证时,我对它应该如何工作感到相当困惑,特别是在会话管理方面。
我正在使用基本身份验证,第一次发出请求时,客户端会受到挑战(或者我可以从头开始传递标头中的身份验证信息)。但是一旦用户通过了身份验证,只要会话还活着,服务器就不会再挑战这个客户端了。
这意味着我需要为当前用户提供一些退出机制(终止他/她的会话)。
看起来这样做的正确方法是以某种方式更改我的配置,以便每个请求都受到身份验证的挑战,但我不知道这如何与会话管理一起使用。
- 我应该在每次请求后手动使会话无效吗?
- 或者有没有办法强迫客户在每次提出请求时都受到挑战?
你可以找到很多关于 REST 安全性的问题,甚至还有关于如何实现不同身份验证模型的书籍。但是我还没有找到关于如何处理会话管理、登录和注销的好答案。所以要么我做错了什么,要么我误解了一些重要的事情。
我将不胜感激有关如何正确处理此问题的任何想法或指导。
我将 Jersey 2.4 与 Tomcat 7 一起使用。