什么是API密钥?

Ora*_*ind 103 security api terminology api-key

这些天我几乎在每个跨服务应用程序中都看到了这个词.

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

此外,公钥API和私钥API之间有什么区别.

Rob*_*Rob 108

"确切"使用的API密钥在很大程度上取决于谁发布它,以及它用于什么服务.然而,总的来说,API密钥是给予某种形式的秘密令牌的名称,该秘密令牌与Web服务(或类似)请求一起提交以便识别请求的来源.密钥可以包括在请求内容的一些摘要中,以进一步验证原点并防止篡改值.

通常,如果您可以积极地识别请求的来源,它将作为一种身份验证形式,这可以导致访问控制.例如,您可以根据执行请求的人限制对某些API操作的访问.对于通过销售此类服务赚钱的公司而言,它也是一种跟踪谁将该东西用于计费目的的方式.此外,通过阻止密钥,可以在请求量过高的情况下部分防止滥用.

通常,如果您同时拥有公钥和私钥API,则表明密钥本身是传统的公钥/私钥对,用于某种形式的非对称加密或相关的数字签名.这些是用于肯定地识别请求源的更安全的技术,另外,用于保护请求的内容免受窥探(除了篡改).

  • 说得好!然而,在我有限的经验中,公共/私人区别与公钥加密无关.我见过的"公共"密钥通常是"访问精简版" - 换句话说,一个密钥可以分发给第三方访问非敏感数据,而不会泄露密钥到王国. (11认同)
  • @Rob +1 为详细答案 @tim +1 为事后思考! (2认同)

tim*_*dev 23

一般来说:

API密钥只是标识您.

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


小智 15

看起来许多人使用API​​密钥作为安全解决方案.底线是:永远不要将API密钥视为秘密.在https与否,谁可以读取请求可以看到API密钥,并可以进行他们想要的任何调用.API密钥应该只是一个"用户"标识符,因为它不是一个完整的安全解决方案,即使与ssl一起使用也是如此.

更好的描述是在Eugene Osovetsky链接到:使用大多数API时,为什么它们需要两种类型的身份验证,即密钥和密钥? 或者查看http://nordicapis.com/why-api-keys-are-not-enough/

  • 正如您所看到的,这是一个古老的问题,根据现代Stack Overflow标准,可能会被视为"过于宽泛"(或者可能是"偏离主题").这些问题倾向于吸引固执己见的答案,这些答案通常被低估和/或删除.远离这些问题是最佳的行动方案.您可以查看[help/on-topic]以获取更多信息. (2认同)

小智 9

API密钥是在被接受为服务的用户时分配给该服务的用户的唯一值.

该服务维护所有已发布的密钥,并在每个请求时检查它们.

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