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

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

那里有可用的东西吗? 是否最好只创建一些用户提交的数据的散列或类似的东西?

有帮助吗?

解决方案

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

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

其他提示

查看几乎所有Web 2.0站点/服务。他们都有不同程度的auth和管理API密钥。 Flickr,Twitter,Github等

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

你可以自己实现这个,也可以找一个合作伙伴(有几个)为你做这件事。

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

但是,有一种加密标准方式可以做到这一点“mung”。操作称为HMAC。非常值得一看,如果你想要更标准/更健壮/更安全的东西。

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

或者,您可以使用双向SSL作为传输层,只需信任它在应用程序/ API中。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top