为我的API实现API密钥

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

然而这看起来不正确。 有人可以解释的步骤,以创build一个API,如Dropbox,Twitter,Facebook等呢? 我想尝试自己实现这个。

有人可以解释的步骤,以创build一个API键,如Dropbox的,微博,Facebook等呢? 我想尝试自己实现这个。

生成API密钥

  1. select一些你想使用的encryption/解密方法
  2. select一个盐,您将encryption之前将添加到数据
  3. 在encryption的string中决定你想要的数据:时间戳,UID,angular色等。时间戳是最有用的部分,因为使用时间戳,你可以限制来自某个键的请求,要生成的新密钥。
  4. 将它捆绑在一旦你解密后可以parsing的东西。 有些人使用json对象,有些用char分隔的string

注意:如果你不希望它是一个可解密的密钥,那么它被哈希,因此更难破解,那么你可以简单地遵循这个stratgey:做一组步骤来形成你的非哈希数据string: sha1("some-secret"."some-other-bit-of-info"."etc"."etc") ,然后API消费者有责任生成他们自己的密钥。 因此,只有具备必要的部分/信息才能访问它们。

消费API

以Stripe的API作为一个体面的例子:

  1. 进行授权请求:返回一个API密钥。 “ curl使用-u标志来传递基本的authentication信息(在您的API密钥后添加冒号将会阻止它向您询问密码) ”–Stripe Docs

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