11

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

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

4

1 回答 1

13

有人可以解释创建 api 密钥的步骤吗,比如 dropbox、twitter、facebook 等?我想尝试自己实现这个。

生成 API 密钥

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

注意:如果您不希望它成为可解密的密钥,例如,它是经过散列的,因此难以破解,那么您可以简单地遵循以下策略:执行一组步骤来形成您的未散列数据字符串:sha1("some-secret"."some-other-bit-of-info"."etc"."etc")和然后 API 使用者有责任生成自己的密钥。因此,只有当他们拥有构建它所需的必要部件/信息时,他们才能访问。

使用 API

以 Stripe 的 API 为例:

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

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

于 2013-01-04T00:01:54.073 回答