【发布时间】:2013-04-07 23:48:10
【问题描述】:
我们正在尝试为我们的服务开发 API,但我们正在怀疑如何完成身份验证过程。我们的客户端必须能够包含一个与我们的 Node.js 服务器连接的 .js 文件。这里的关键点是我们的后端必须跟踪 API 的使用,以便我们的客户将根据其使用收费。
我们的目的是为用户设计尽可能简单的 API,同时确保其安全。我们想到了:
为每个用户创建一个 API_KEY 并在每个请求中将其与他们的域进行匹配。这里的问题可能是域不是最安全的选择,不是吗?我们知道该域可能会在 HTTP 请求中被替换。
使用带有 API_KEY 和 SECRET_KEY 的 SDK 为给定会话和用户生成令牌。我一点也不讨厌这个选项,但我们希望为开发人员提供一个更简单的解决方案,这并不意味着使用多个 API。
你有什么想法/建议/考虑/什么?
提前致谢。
【问题讨论】:
-
如果“域”是指在
Origin标头中传递的值,则在支持 CORS 的较新浏览器上这是不可欺骗的。它仍然可以在较旧的浏览器(尤其是 IE)上被欺骗,但这可能是可以接受的,因为单个较新的浏览器请求可能会暴露诡计 - 如果所有用户都在 IE 上,他们只能侥幸逃脱。
标签: javascript api security authentication authorization