这些天,我几乎在每个跨服务应用程序中都看到了这个词。
API 密钥到底是什么,它的用途是什么?
此外,公共和私有 API 密钥之间有什么区别。
这些天,我几乎在每个跨服务应用程序中都看到了这个词。
API 密钥到底是什么,它的用途是什么?
此外,公共和私有 API 密钥之间有什么区别。
What "exactly" an API key is used for depends very much on who issues it, and what services it's being used for. By and large, however, an API key is the name given to some form of secret token which is submitted alongside web service (or similar) requests in order to identify the origin of the request. The key may be included in some digest of the request content to further verify the origin and to prevent tampering with the values.
Typically, if you can identify the source of a request positively, it acts as a form of authentication, which can lead to access control. For example, you can restrict access to certain API actions based on who's performing the request. For companies which make money from selling such services, it's also a way of tracking who's using the thing for billing purposes. Further still, by blocking a key, you can partially prevent abuse in the case of too-high request volumes.
通常,如果您同时拥有公共和私有 API 密钥,则表明密钥本身是用于某种形式的非对称加密或相关数字签名的传统公共/私有密钥对。这些是更安全的技术,可以积极地识别请求的来源,此外,还可以保护请求的内容不被窥探(除了篡改之外)。
非常笼统地说:
API 密钥仅用于识别您。
如果有公共/私人区别,那么公钥是您可以分发给其他人的,以允许他们从 api 获取有关您的一些信息子集。私钥仅供您使用,并提供对您所有数据的访问权限。
看起来很多人使用 API 密钥作为安全解决方案。底线是:永远不要将 API 密钥视为秘密。无论是否在 https 上,任何可以读取请求的人都可以看到 API 密钥并可以进行任何他们想要的调用。API 密钥应该只是一个“用户”标识符,因为即使与 ssl 一起使用,它也不是一个完整的安全解决方案。
更好的描述在 Eugene Osovetsky 链接到:当使用大多数 API 时,为什么它们需要两种类型的身份验证,即密钥和秘密? 或查看http://nordicapis.com/why-api-keys-are-not-enough/
API 密钥是在该服务的用户被接受为该服务的用户时分配给该服务的用户的唯一值。
该服务维护所有已发布的密钥并在每次请求时检查它们。
通过查看请求时提供的密钥,服务会检查它是否是有效密钥,以决定是否授予用户访问权限。
API 密钥只是对 Web 服务用户进行身份验证的一种方式。
这样想,“公共 API 密钥”类似于您的数据库用作登录验证服务器的用户名。然后,“私有 API 密钥”将类似于密码。通过使用此方法的站点/数据库,在第三方/验证服务器上维护安全性,以便发布或编辑您的站点/数据库的真实请求。
API 字符串只是您的站点/数据库与验证服务器联系的登录 URL。