我正在创建一个带有JavaScript客户端的系统,该客户端将通过REST(HTTP)[JSON]与服务器通信。
我正在使用role-based access control来管理来电。
示例:[显式网址将保持不变]
\
\login\
\
if (user->role == "manager") return "\manager-homepage\";
else return "\homepage\";
由于REST是无状态的,我将如何管理这个用例?
我是否随每个请求发送cookie,并且返回的HTTP状态代码将告诉JS在哪里路由?
[哪种效率相当低+对MITM攻击开放]
答案 0 :(得分:1)
您是否可以使用标准身份验证方案,例如http digest?
示例:[来自维基百科页面]
- 客户端要求提供需要身份验证的页面,但不提供用户名和密码。通常这是因为用户只需输入地址或链接到页面。
- 服务器响应401“客户端错误”响应代码,提供身份验证领域和随机生成的一次性使用的值,称为nonce。
- 此时,浏览器将向用户显示身份验证领域(通常是正在访问的计算机或系统的描述),并提示输入用户名和密码。用户可以决定在此时取消。
- 一旦提供了用户名和密码,客户端就会重新发送相同的请求,但会添加一个包含响应代码的身份验证标头。
- 在此示例中,服务器接受身份验证并返回页面。如果用户名无效和/或密码不正确,服务器可能会返回“401”响应代码,客户端会再次提示用户。
注意:客户可能已经拥有所需的用户名和密码,而无需提示用户,例如:如果它们之前已被网络浏览器存储过。
另请参阅这个非常相似的问题的答案:REST and authentication variants
根据您所需的安全级别,您可以通过ssl提供整个服务。这将阻止mitm攻击。