为什么有些API提供商需要API密钥?

时间:2009-01-26 22:04:43

标签: web-services api

有几个Web服务API可以注册API密钥。例如,UPS Web服务需要一个密钥,该密钥包含在对其服务的调用中 - 除了用户名和密码

提供商使用的密钥是什么?也许UPS是唯一同时需要API密钥和用户名/密码的人?

一个想法是他们使用它来限制或衡量API的使用,但在我看来,用户配置文件中的设置可以很容易地做同样的事情 - 特别是因为你通常需要获得一个帐户w /用户名和用于获取API的密码。

7 个答案:

答案 0 :(得分:6)

有两个主要用例。第一种是测量,跟踪和限制API使用。如果某人正在构建允许第三方访问它的服务,则服务提供商可能希望控制(或至少知道)谁有访问权限,以便他们可以尝试并防止诸如拒绝服务攻击之类的事情。在度量和跟踪方面,可以获得有趣的信息,例如知道哪些应用程序在访问服务时很受欢迎,或者人们最常使用哪些功能。

另一个用例与安全性和身份验证有关。对于服务提供商来说,让第三方应用程序和服务要求用户放弃主服务的用户名和密码是不明智的。这是一个巨大的曝光。这就是为什么许多服务正在对诸如OAuth之类的协议进行标准化,这些协议通过授权向用户的数据提供委托访问。虽然不是万无一失,但最好将用户凭证分发给未知和不受信任的各方。

答案 1 :(得分:4)

大部分时间是监控开发人员如何使用web-api。如果他们以某种方式不同意你对api的使用,它提供了一种方法让他们关闭它/你而不会伤害其他用户。每个用户/应用程序的统计数据总是有价值的。

我使用了flickr api - 在这种情况下密钥是你的,但登录数据可能是使用你的应用程序的人的登录数据,所以api密钥是区分应用程序的唯一方法。

答案 2 :(得分:1)

通常用于获取有关向API执行查询的应用程序数量的统计信息。 我认为在某些情况下使用API​​密钥询问用户名/密码是否具有暧昧关系,但它是如何实现的 - 所以我们无法用它做任何事情。

他们要求API密钥,因为您可以在同一帐户下拥有多个API - 如果您有多个网站使用相同的API。

答案 3 :(得分:0)

他们可以用它来表示您尝试使用的API版本。也许在版本1.0中,有一种方法可以在www.UPS.com/search上进行POST,并且在同一地址的版本2.0中有另一个,但是采用不同的参数集,甚至以不同的格式返回数据/样式。您的程序是基于V1.0构建的,并且需要某个API合同。他们希望能够在不干扰客户产品的情况下创建V2.0。

这只是猜测,但对我来说听起来不错。

答案 4 :(得分:0)

我认为Gracenote对cddb做了类似的事情。我忘记了细节,但我记得一些令牌。

(他们对使用他们的服务也有严格的规定。)

西蒙提醒我,gracenote是什么东西。 Gracenote和Fedex以及其他Web服务有很多开发人员为该软件编写应用程序。因此开发人员可以获得一个令牌放入他们的应用程序,但最终用户拥有自己的用户名和密码。它让服务能够密切关注滥用程序等。这可能是主要原因。 (如浏览器或webbot通知网络服务器谁/它是什么)

答案 5 :(得分:0)

最初,Blogger要求您申请API密钥(Google地图)并使用它来限制对API的访问。随着Blogger演变为Metaweblog,API的要求变得不那么重要了,Blogger不再要求您申请密钥。如其他人所述,它仍可用于跟踪目的。

答案 6 :(得分:0)

在我们的情况下,我们的客户想要它:

  • 跟踪/分析 - 确定谁在做什么以及构建什么产品。由于许多用户都是桌面应用,因此仅仅查看引荐来源并不总是足够。
  • 权限 - 用户有权访问哪些资源?用户如何构建可以访问指定资源的应用程序?
  • 许可/合法 - 强制用户已阅读并接受ToU /许可信息。
  • 安全性 - 传递用户名/密码是一个非常糟糕的主意。
相关问题