为我的API实现API密钥

Luc*_*uke 9 javascript java spring api-key node.js

我已经创建了一个api,我希望能够控制谁使用它,经常等等.我想要一个API密钥策略,以便用户必须提供密钥才能使用API​​.但是我不知道如何实现它.用户使用用户名和密码注册.我想到的是当用户登录并将其存储在数据库的表中时分配UUID.然后每个请求都包含此uuid,并在服务器上的每个请求中进行检查.

但这似乎不对.有人可以解释一下创建api键的步骤,比如dropbox,twitter,facebook等吗?我想尝试自己实现这个.

Kri*_*ian 9

有人可以解释一下创建api键的步骤,比如dropbox,twitter,facebook等吗?我想尝试自己实现这个.

生成API密钥

  1. 选择一些您想要使用的加密/解密方法
  2. 选择加密添加到数据中的salt
  3. 在加密字符串中确定您想要的数据:时间戳,Uid,角色等.时间戳是最有用的部分,因为使用时间戳,您可以限制来自密钥的请求超过一段时间,因此需要要生成的新密钥.
  4. 将它捆绑在一旦你解密后可以解析的东西中.有些人使用json对象,有些人使用char-delimited字符串

注意:如果你不希望它是一个可解密的密钥,就像在,它被散列并因此无法破解,那么你可以简单地遵循这个策略:制定一组步骤来形成你的未散列数据字符串:sha1("some-secret"."some-other-bit-of-info"."etc"."etc")和然后API消费者有责任生成他们自己的密钥.因此,只有当他们拥有构建它所需的必要部件/信息时,他们才能访问.

使用API

以Stripe的API为例:

  1. 发出授权请求:返回API密钥." curl使用-u标志传递基本身份验证凭据(在您的API密钥之后添加冒号将阻止它请求您输入密码). " - 条带文档

  2. 发送该密钥以及所有进一步的请求.