Rub*_*nez 5 javascript security authentication api authorization
我们正在尝试为我们的服务开发一个 API,但我们对如何完成身份验证过程感到怀疑。我们的客户端必须能够包含与我们的 Node.js 服务器连接的 .js 文件。这里的关键点是我们的后端必须跟踪 API 的使用情况,以便我们的客户将根据其使用情况付费。
我们的目的是为用户设计尽可能简单的 API,并确保其安全。我们想过:
为每个用户创建一个 API_KEY 并将其与每个请求中的域相匹配。这里的问题可能是域名不是最安全的选择,不是吗?我们知道该域可能会在 HTTP 请求中被替换。
使用具有 API_KEY 和 SECRET_KEY 的 SDK 为给定会话和用户生成令牌。我一点也不讨厌这个选项,但我们更喜欢为开发人员提供一个更简单的解决方案,这并不意味着使用多个 API。
你有什么想法/建议/考虑/什么吗?
提前致谢。
我最喜欢你的第二个选择。除了 API_KEY 和 SECRET_KEY 之外,您还可以执行许多其他操作。
首先确保所有请求都是通过 HTTP 完成的。这是您可以添加的最重要的安全功能......而且很容易做到。
其次,如果您想让事情变得超级安全,请从客户端发送时间戳。此时间戳可用于对 SECRET_KEY 进行哈希处理,从而防止有人重新创建数据。
您的客户将在每个请求中发送以下内容:
1) 时间戳 - 您可以将其存储在数据库中并拒绝任何具有较小数字的新请求
2) API_KEY - 本质上是一个用户ID
3) 签名 - 这是 SECRET_KEY、时间戳和 API_KEY 的哈希值。(哈希算法和参数顺序通常并不重要。SHA1 相当不错)您的服务器可以计算此哈希来验证该客户端是否确实知道 SECRET_KEY。您的客户在任何时候都不应向任何人透露 SECRET_KEY。
您还可以查看 OAuth 标准。我相信 NodeJS 和 Javascript 一般来说都有对应的库。 NodeJS OAuth 提供者
| 归档时间: |
|
| 查看次数: |
2589 次 |
| 最近记录: |