为我的API实现API密钥

时间:2013-01-03 23:54:37

标签: java javascript spring node.js api-key

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

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

1 个答案:

答案 0 :(得分:9)

  

有人可以解释创建api的步骤   关键像,Dropbox,twitter,facebook等吗?   我想尝试自己实现这个。

生成API密钥

  1. 选择您想要使用的加密/解密方法
  2. 选择要添加到加密
  3. 之前的数据的salt
  4. 决定加密字符串中您想要的数据:时间戳,Uid,角色等。时间戳是最有用的部分,因为使用时间戳,您可以限制来自密钥的请求超过一段时间,因此需要生成一个新密钥。
  5. 将其捆绑在您解密后可以解析的内容中。有些人使用json对象,有些人使用char-delimited字符串
  6. 注意:如果你不希望它是一个可解密的密钥,就像在,它被散列并因此无法破解,那么你可以简单地遵循这个策略:制定一组步骤来形成你的未散列数据string:sha1("some-secret"."some-other-bit-of-info"."etc"."etc")然后API使用者有责任生成他们自己的密钥。因此,只有当他们拥有构建它所需的必要部件/信息时,他们才能访问。

    使用API​​

    以Stripe的API为例:

    1. 发出授权请求:返回API密钥。 “ curl使用-u标志传递基本身份验证凭据(在您的API密钥之后添加冒号会阻止它询问您的密码)。”--Stripe Docs

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