什么是API密钥?

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

API密钥究竟是什么,它有什么用途?

另外,公钥和私钥之间的区别是什么?

API密钥的“确切”用途主要取决于谁出问题,以及用于何种服务。 但总的来说,API密钥是为了识别请求的来源而提供给某种forms的秘密令牌的名称,与秘书服务(或类似的)请求一起提交。 密钥可以被包含在请求内容的一些摘要中以进一步validation来源并防止篡改这些值。

通常情况下,如果您可以正确识别请求的来源,则它会充当authentication的一种forms,从而导致访问控制。 例如,您可以根据执行请求的人来限制对某些API操作的访问。 对于通过销售此类服务而赚钱的公司来说,这也是一种跟踪谁在使用这些东西进行结算的方式。 而且,通过阻止密钥,可以在请求数量太高的情况下部分防止滥用。

一般来说,如果您同时拥有公钥和私钥,则表明密钥本身就是传统的公钥/私钥对,用于某种forms的非对称密码或相关的数字签名。 这些是更加安全的技术,用于确定请求的来源,另外,还可以保护请求的内容免受窥探(除了篡改)。

一般来说:

一个API密钥只是标识你。

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

API密钥是一个唯一的值,当他被接受为该服务的用户时,该值被分配给该服务的用户。

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

通过在请求处查看提供的密钥,服务会检查是否有效的密钥来决定是否授予用户访问权限。

API密钥只是validationWeb服务用户的一种方式。

看起来很多人使用API​​密钥作为安全解决scheme。 底线是: 永远不要把API密钥当作秘密处理 。 无论是否https,谁可以读取请求可以看到API密钥,并可以进行任何他们想要的电话。 一个API密钥应该只是一个“用户”标识符,因为它不是一个完整的安全解决scheme,即使与ssl一起使用。

尤金·奥索维斯基(Eugene Osovetsky)的更好的描述是: 当使用大多数API时,为什么需要两种types的身份validation,即密钥和秘密? 或者查看http://nordicapis.com/why-api-keys-are-not-enough/

可以这样想,“公共API密钥”类似于数据库用作loginvalidation服务器的用户名。 “私人API密钥”然后将类似于密码。 通过使用此方法的站点/数据库,安全性在第三方/validation服务器上得到维护,以确保发布或编辑您的站点/数据库的可靠请求。

APIstring只是您的站点/数据库的login名的URL来联系validation服务器。