简单的REST认证策略?

Cli*_*sel 5 authentication rest node.js

我正在设计一个可供多个客户端,Web,移动设备,第三方等使用的Web服务.我正在将REST视为可能的解决方案,我正在考虑身份验证的情况.

我试图保持简单和高效.为了记录,我使用Node.js.

我理解,出于可伸缩性的原因,不建议会话.

通过https在每个请求上传递用户名和密码有什么意见?

例如:

HTTP://为MyService /用户/用户名列表授权=和密码=为mypass

这种方法有严重的缺点吗?它是否会打开安全漏洞,跨站点脚本?

对于一般的Web服务,是否有更好的解决方案?

man*_*ana 5

您永远不应该在URL中使用明文信息(它可以在浏览器历史记录中显示,不会被混淆,也可以在通常的日志模式中使用,如apache).

而是使用HTTP标头:

X-USER: user
X-PWD: password

优点:

  • 它符合HTTP标准(HTTP标头用于交叉问题,如安全性或缓存控制)
  • 如果您使用SSL(如通过https),信息将被加密

如果您没有SSL,则应使用nonce方法.看看HTTP-digest以获得一些想法.如果您不需要识别特定用户(如移动设备最终用户),则可以完全重用HTTP-digest.

尽可能重用安全设置.提出自定义身份验证方案很难,因为存在许多安全隐患.