浏览器内客户端API的身份验证?

时间:2012-05-10 17:32:05

标签: authentication client

我正在考虑Google静态地图API,它会限制您使用1000张静态地图,如果您注册帐户,则会更多。当客户端上的所有内容都公开时,他们如何跟踪帐户等?

对于大多数服务器到服务器API,我获得了access_token / key / etc.我可以传递给服务以证明我确实是我,但在客户端上任何这样的access_token / key / etc.会立即成为公众知识。

一般来说,客户端库(FB SDK,Stripe,Google等)使用哪些策略来执行身份验证,以及他们如何解决客户端上的所有内容都是公开的事实?

1 个答案:

答案 0 :(得分:1)

您可以将API密钥配置为白名单by host,告知Google地图只允许在发送与您的白名单匹配的引荐来源的网站上使用API​​密钥。

如果某个其他网站使用您的API密钥,他们会在加载时收到此错误消息:

  

此网站需要不同的Google Maps API密钥。可以在http://code.google.com/apis/maps/documentation/javascript/v2/introduction.html#Obtaining_Key生成新密钥。

您可以使用RefControl extension for FireFox

自行验证

这是因为:

  • 几乎所有网络浏览器都会发送引荐来源(i.e., the URI of the resource which links to it)作为请求的一部分。
  • 有人窃取您的API密钥(因为正如您所说,它是一个公开的字符串),他们需要告诉所有用户覆盖他们的推荐人以匹配他们从中窃取的网站(这显然是不切实际的) )。

请注意,Google似乎允许不包含引荐来源的请求 - 我想配置为排除此信息的浏览器数量微不足道,因此不值得关注。