生成API密钥

时间:2017-07-17 23:05:52

标签: api security secret-key

我创建了一个API,我只希望某些客户有权访问。经过一番研究,我发现API密钥和API秘密是控制它的好方法。

我想基本上使用我控制的信息生成自己的秘密。例如,如果我创建了秘密1500315177265-8005550000-System,则秘密本身具有我可以引用和验证的信息。根据我的理解,秘密是什么并不重要,只要它不共享,这就是它的秘密。我可以添加一些长盐值来让它更难猜测。 我可以通过这种方式安全地使用机密吗?

同样,我想如果秘密本身具有识别信息,则需要API密钥。很可能,我在这里遗漏了一些东西,或者更多的API会这样做。

1 个答案:

答案 0 :(得分:1)

您不需要自己创建此机制,您只需使用OAuth即可。实际上,通过阅读OAuth如何运作,我非常确定您能够全面了解" API Key"正在做。

长话短说。 OAuth允许您创建用户请求的访问令牌,一旦用户请求访问令牌,他就可以使用它来获取API的身份验证。 您还可以配置这些访问令牌的持续时间,例如,假设您只希望它们在一小时内有效。然后,用户将每小时使用一个新的访问令牌,帮助您最大限度地降低受到访问令牌泄露的风险。

如果你想看看OAuth使用的管道,它将是这样的:

用户发送标识符和共享密钥(将其视为用户名和密码)。如果标识符和秘密是正确的,他将收到"刷新令牌",该令牌将用于向令牌服务器发送请求以接收新的"访问令牌" 。客户端向令牌服务器发送请求以接收访问令牌,现在他能够向您的API发送请求,在那里他将使用其访问令牌作为标识符,并且仅在令牌时使用是有效的,他可以访问您的申请。

也许你可能对过期的令牌感到好奇,例如,当令牌过期时会发生什么?现在我们的用户需要重复所有流程吗?不,因为如果令牌已过期,他可以向令牌服务器发送新请求,发送他的刷新令牌,并且他将获得一个新令牌以与您的API一起使用。

我很确定您已经注意到您的API密钥是"访问令牌"等效,您的共享密钥等同于OAuth流程开头使用的凭据。 您可以创建自己的机制,但需要考虑OAuth已涵盖的许多注意事项。例如,您的API密钥是否过期?毕竟,您不应该相信在一段不确定的时间内通过每个请求发送一个密钥。您将如何处理请求新密钥的过程?你真的希望你的用户每次想要一个新密钥时发送他们的秘密吗?刷新令牌对此很有用。