当我尝试实现自己的REST API时,我正在尝试围绕RESTful的实践,这就是说,有一点让我感到困惑。
我遇到的一种资源是REST Cookbook for logging in,虽然我了解随机数是如何进行HMAC身份验证的,但我还是挂在了页面底部列出的一项警告中:
使用随机数可以提高安全性,但必须在服务器端存储和比较随机数。
现在,original dissertation on the REST architecture断言了关于无状态的以下内容:
5.1.3无状态
我们接下来为客户端-服务器交互添加一个约束:通信本质上必须是无状态的,就像Section 3.4.3(Figure 5-3)的客户端无状态服务器(CSS)样式那样,从客户端到服务器的每个请求都必须包含理解该请求所需的所有信息,并且不能利用服务器上存储的任何上下文。因此,会话状态完全保留在客户端上。
该约束通常不允许使用旧的DHTML webapp维护身份验证的方法(例如,包含“会话ID”哈希的cookie,用于标识用户的后续请求)。如果服务器需要记住使用了哪些随机数值,那么从技术上讲,这种维护状态不是很像会话ID吗?如果合法客户端丢失状态,那么当服务器不应该存储时,如何生成有效的随机数,更不用说泄露有状态信息了?
我感觉自己看到了错误的东西,缺少了一个谜题,或者用这种方法误解了一些东西,但是我无法弄清楚我的一生是什么...