2011-02-10 63 views
5

大多数API要求开发人员获取API密钥。 API密钥然后用于速率限制。什么是阻止开发人员获取多个API密钥作为防止速率限制的方法?什么是阻止开发人员获取多个API密钥

我面临的问题是决定如何发布API密钥。我发现的唯一工作是发布更多的“开发人员密钥”。

  • 我还没有找到一个这样才能真正速率限制应用程序的使用(有人可能会得到多个密钥和序列养活他们自己的应用程序来获得这一个应用更高的速率)
  • 和我没有找到一种方法来保持每个应用的关键(有人可以拿到钥匙,并用它在多个域)

回答

5

API密钥不是限速正确的工具,特别是如果API回来结束可调用。如果代码集成在最终用户的浏览器中,它就可以工作,因为它可以作为“中立地”,确保应用程序身份不被欺骗,但如果它是从客户端开发人员编写的服务或应用程序中调用的。

资源利用控制是一个经济问题,所以它需要一个经济的解决方案。每次呼叫需要一个唯一的hashcash令牌是强制执行此操作的好方法。 (Hashcash是一个工作证明方案 - 它要求调用者证明他们花费了一堆CPU时间来完成一项毫无意义的任务,以证明该请求对他们有价值。)

它是根据负载可扩展 - 如果您的服务不堪重负,您可以动态增加令牌中所需的前导零位中的“价格”;每增加一位,请求率就会降低一半。 (只要确保你的API可以传递hashcash“价格”,如果它是动态的。)

+0

我想知道,怎么可能使一个API不是“后端可调用”? – silow 2011-02-10 19:47:57

相关问题