什么是 API 密钥?

最近,我在几乎所有的跨服务应用程序中都看到了这个词。

API 密钥到底是什么,它的用途是什么?

另外,公共 API 键和私有 API 键之间的区别是什么。

165189 次浏览

An API key is a unique value that is assigned to a user of this service when he's accepted as a user of the service.

服务维护所有发出的密钥,并在每次请求时检查它们。

通过查看请求中提供的密钥,服务检查它是否是有效的密钥,以决定是否授予用户访问权。

一般来说:

API 键只是标识您。

如果存在公共/私有区别,那么公共密钥就是您可以分发给其他人的密钥,以允许他们从 API 获得关于您的一些子集信息。私钥仅供您使用,并提供对所有数据的访问。

API 密钥的“确切”用途在很大程度上取决于发出它的人以及它所用于的服务。然而,总的来说,API 密钥是某种形式的秘密令牌的名称,它与 Web 服务(或类似的)请求一起提交,以识别请求的来源。该键可能包含在请求内容的某个摘要中,以进一步验证来源并防止篡改值。

通常,如果可以肯定地标识请求的来源,那么它就是一种身份验证形式,这可以导致访问控制。例如,可以根据执行请求的人限制对某些 API 操作的访问。对于那些通过销售这些服务赚钱的公司来说,这也是一种追踪谁在使用这些服务进行计费的方法。此外,通过阻塞一个密钥,您可以部分地防止在请求量过高的情况下的滥用。

一般来说,如果您同时拥有一个公钥和一个私钥 API 密钥,那么它表明这些密钥本身就是一个传统的公钥/私钥对,用于某种形式的 非对称密码学或相关的数字签名。这些技术更加安全,可以积极地识别请求的源,另外,还可以保护请求的内容不被窥探(除了篡改之外)。

API 密钥只是认证 Web 服务用户的一种方式。

这样想,“公共 API 密钥”类似于您的数据库用作验证服务器登录名的用户名。“私有 API 密钥”将类似于密码。使用此方法的站点/数据库在第三方/验证服务器上维护安全性,以便发布或编辑您的站点/数据库的真实请求。

API 字符串只是站点/数据库联系验证服务器的登录名的 URL。

看起来很多人使用 API 密钥作为安全解决方案。底线是: 永远不要把 API 密钥当作秘密它不是。在 https 或不 https 上,任何能够读取请求的人都可以看到 API 密钥,并且可以进行任何他们想要的调用。API Key 应该只作为一个“用户”标识符,因为即使与 ssl 一起使用,它也不是一个完整的安全解决方案。

更好的描述是在 Eugene Osovetsky 链接到: < a href = “ https://stackoverflow.com/questions/1482472/When-working-with-most-APIs-why-do-they-need-two-type-of-entication-nam/1501112 # 1501112”当使用大多数 API 时,为什么它们需要两种类型的身份验证,即密钥和秘密? 或者查看“一个 href = “ http://nordicapis.com/why-api-keys-are-not-enough/”rel = “ norefrer”> http://nordicapis.com/why-api-keys-are-not-enough/