2008-12-31 118 views
2

我期待在建设一个API,并正在考虑的OAuth管理访问API,但我在做什么更多的是B2B系统,使企业能够访问数据纳入其网站。一开始我不会有任何b2c。你如何管理API密钥

所以OAuth的似乎不是适合我的工具,我一直在寻找关于构建基于关键系统资源,但整个事情还没有来。

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

回答

2

你需要的仅仅是一些唯一标识用户...只是使用UUID或者一个UUID的哈希值。

只要确保这个ID是经过安全通道,如果你通过它在不安全的通道可能需要确保实现类似于HTTP的ID摘要身份验证的一些方法。

0

我不会只使用用户提交的数据,因为这可能会造成API密钥可猜测的情况。通常,我接收用户生成的一些数据,然后将它与一些相对唯一的数据(即当前系统时间)和使用SHA-1或其他内容的散列组合在一起,如果我不希望它显然是一个SHA-1哈希,然后用它作为关键。

1

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

+0

正确的,但看着这些服务是不是真的给太多的指示有关管理密钥和身份验证(不,我反正可以辨认)。 – pedalpete 2008-12-31 23:26:47

1

根据要求,在网页API的世界,让你的合作伙伴/开发人员API密钥(标识),并要求他们签署的调用(认证)是非常标准。有很多方法来规范签名。现在很常见的是;采取所有呼叫参数,时间戳(+/- 5分钟摆动),共享秘密,并使用SHA-1或MD5(SHA-1更好)对其进行哈希处理。

您可以自己实施或找到合作伙伴(有几个)为您做。

1

的一般方法在这里被提出(使用哈希其中包括API密钥和当前时间)都是不错的 - 肯定比包括消息的“密码”更好。

但是,有一种加密标准方式来执行称为HMAC的这种“mung”操作。如果你想要更标准/健壮/安全的东西,那么值得一看。

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

或者,您可以对传输层使用双向SSL,并简单地相信应用程序/ API中的SSL。

真的取决于你如何安全的希望...:]