我已经创建了一个 api,我想对谁使用它、使用频率等进行一些控制。我想要一个 API key 策略,以便用户必须提供 key 才能使用 API。但是我不知道如何实现它。用户使用用户名和密码注册。我想到的是在用户登录时分配一个 UUID 并将其存储在数据库的表中。然后每个请求都包含这个 uuid,并在服务器上对每个请求进行检查。
然而这似乎不对。有人可以解释创建 api key 的步骤吗,比如 dropbox、twitter、facebook 等?我想尝试自己实现。
最佳答案
Could someone explain the steps in order to create a api key like, dropbox, twitter, facebook etc. does? I want to try implement this myself.
生成 API key
- 选择一些您想使用的加密/解密方法
- 选择您将在加密之前添加到数据中的盐
- 决定你想要加密字符串中的哪些数据:时间戳、Uid、 Angular 色等。时间戳是其中最有用的部分,因为使用时间戳,你可以限制来自某个时间之前的 key 的请求,因此需要生成新的 key 。
- 将其捆绑在解密后可以解析的内容中。有些人使用 json 对象,有些人使用字符分隔的字符串
注意:如果您不希望它成为可解密的 key ,例如,它是经过哈希处理的,因此难以破解,那么您可以简单地遵循以下策略:制定一组步骤来形成您的未哈希数据string: sha1("some-secret"."some-other-bit-of-info"."etc"."etc")
然后API使用者有责任生成他们的自己的 key 。因此,只有当他们拥有构建它所需的必要部件/信息时,他们才能访问。
使用 API
以 Stripe 的 API 为例:
发出授权请求:返回一个 API key 。 "curl 使用 -u 标志传递基本身份验证凭据(在您的 API key 后添加一个冒号将阻止它询问您的密码)。"--Stripe Docs
将该 key 连同所有进一步的请求一起发送。
关于java - 为我的 API 实现 API key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14149189/