繁体   English   中英

您如何管理API密钥

[英]How do you manage api keys

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

因此,oauth对我而言似乎不是合适的工具,我一直在寻找有关构建基于密钥的系统的资源,但没有遇到任何问题。

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

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

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

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

但是,有一种称为HMAC的加密标准方法可以执行此“蒙蒙”操作。 如果您想要更标准/更坚固/更安全的产品,非常值得一看。

最终,显然存在来自安全选项的“黄金标准”-使用数字证书对所有请求进行签名(在计算上可能是昂贵的)或用于对初始请求进行签名,然后生成一个有限的使用会话密钥(例如,仅一个API, 60分钟后过期)。

另外,您可以将2路SSL用于传输层,并在应用程序/ API中信任它。

确实取决于您想要的安全性...:]

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM