简单的REST认证策略?

时间:2011-09-20 12:48:10

标签: authentication rest node.js

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

我正在努力保持简单和高效。为了记录,我使用的是Node.js.

据我所知,由于可伸缩性原因,我们不会建议会话。

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

例如:

http://myservice/users/list?username=authorized&password=mypass

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

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

2 个答案:

答案 0 :(得分:5)

你永远不应该在URL中使用明文信息(它可以在 浏览器历史记录,没有混淆,也没有像apache这样的常用日志模式。

而是使用HTTP标头:

X-USER: user
X-PWD: password

优点:

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

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

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

答案 1 :(得分:1)

您需要nonce

否则,如果您使用SSL,那么您应该很好。