2

我正在考虑构建一个 API,并且正在考虑使用 oauth 来管理对 api 的访问,但我正在做的更多的是一个 b2b 系统,它允许企业访问数据以将其合并到他们的站点中。一开始我不会有任何b2c。

所以 oauth 对我来说似乎不是正确的工具,我一直在寻找有关构建基于密钥的系统的资源,但没有遇到任何问题。

那里已经有东西了吗?最好只创建一些用户提交的数据的哈希或类似的东西?

4

5 回答 5

2

您需要的只是唯一标识用户的东西......只需使用 UUID 或 UUID 的哈希值。

只需确保此 ID 通过安全通道传递,如果您通过不安全通道传递它,您可能需要实现一些类似于 HTTP 摘要身份验证的方法来保护 ID。

于 2008-12-31T21:38:43.623 回答
1

看看几乎所有的 Web 2.0 站点/服务。他们都有不同程度的身份验证和管理 API 密钥。Flickr、Twitter、Github 等。

于 2008-12-31T22:41:15.370 回答
1

根据要求,在 web api 的世界中,为您的合作伙伴/开发人员提供 API 密钥(标识)并要求他们签署调用(身份验证)是非常标准的。有很多方法可以指定签名。这些天很常见的是;获取调用的所有参数、时间戳(+/- 5 分钟摆动)、共享密钥,并使用 SHA-1 或 MD5(SHA-1 更好)对其进行哈希处理。

您可以自己实施,也可以找一个合作伙伴(有几个)为您完成。

于 2009-03-10T23:29:56.490 回答
1

这里建议的一般方法(使用包含 API 密钥和当前时间的哈希)都很好 - 当然比在消息中包含“密码”更好。

但是,有一种称为 HMAC 的“绿”操作的加密标准方法。如果您想要更标准/强大/安全的东西,非常值得一看。

最后,显然有来自安全选项的“黄金标准”——使用数字证书来签署所有请求(计算成本可能很高)或用于签署初始请求,然后生成有限使用的会话密钥(例如,仅一个 API,使用60 分钟后到期)。

或者,您可以将 2-way SSL 用于传输层,并在应用程序/API 中简单地信任它。

真的取决于你想要它有多安全...... :]

于 2010-10-12T10:41:38.017 回答
0

我不会只使用用户提交的数据,因为这会造成 API 密钥可猜测的情况。通常,我会获取用户生成的一些数据,然后将其与一些相对唯一的数据(即当前系统时间)结合起来,并使用 SHA-1 或其他方法对其进行哈希处理,如果我不这样做,可能会更改表示希望它显然是一个 SHA-1 哈希,然后将其用作密钥。

于 2008-12-31T21:09:27.037 回答