为我的API实现API密钥

Implementing API keys for my API

本文关键字:API 密钥 实现 我的      更新时间:2023-09-26

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

然而,这似乎不正确。有人能解释一下创建api密钥的步骤,比如dropbox, twitter, facebook等吗?我想自己实现这个

有人能解释一下创建api的步骤吗比如,dropbox, twitter, facebook等等?我想试着自己实现这个。

生成API密钥

  1. 选择你想使用的加密/解密方法
  2. 选择在加密前要添加到数据的盐
  3. 决定您想要在加密字符串中包含哪些数据:时间戳、Uid、角色等。时间戳是其中最有用的部分,因为使用时间戳,您可以限制来自某个时间之前的密钥的请求,从而需要生成新密钥。
  4. 将其捆绑在可以稍后解析的东西中。有些人使用json对象,有些人使用字符分隔字符串

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

使用API

以Stripe的API为例:

  1. 发出授权请求:返回API密钥。curl使用-u标志来传递基本的认证凭证(在API密钥后添加冒号将防止它要求您输入密码)。

  2. 将该密钥与所有进一步的请求一起发送。