在创建了一个基本的 REST 服务之后,我已经到了适合添加某种密码保护的地步,因为我需要验证我的用户是否已正确登录并有足够的权限来执行他们所执行的任何操作即将。
REST 服务将主要从 Javascript 繁重的前端访问,考虑到这一点,我提出了以下两个替代方案来解决这个问题:
/login
使用户登录带有 POST
的页面.该页面设置了一个 session cookie,其中用户是标记为已登录,以及权限级别。在每一个上
根据请求,我验证用户已登录并且他/她
权限级别。 session 到期时,自动或
手动(注销,用户将不得不重新登录)。
有更多的方法可以解决这个问题吗?还有什么我应该关心的吗?
最佳答案
我目前正在开发一个 REST API 以及一个客户端(用 javascript 编写),下面我将尝试解释用于保护 API 免受未经授权访问的方法。
Auth-Key
除了 /api/authenticate
之外,每个 API 请求的 header . /api/authenticate
将获取用户名和密码(使用 POST
发送),并与 Auth-Key
一起返回用户信息. Auth-Key
在调用 /api/authenticate
后随机生成并存储在后端 users
带有特定用户条目的表,md5
远程ip的哈希+客户端提供的用户代理。 Auth-Key
的值,以及 md5
提到的总和,在 users
中搜索.如果发现一个在过去一直处于事件状态的有效用户 N
分钟用户将被授予访问权限,如果没有:http 返回代码 401。Auth-Key
通过张贴到 /api/authenticate
,然后将此值存储在一个变量中,并在以后的每个请求中发送。 关于authentication - 密码保护 REST 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8562223/