假设我有一个网站,上面有很多关于我们产品的信息。我想要一些我们的客户(包括我们!)为了能够在我们的产品中查找各种方法,包括:
1)从AJAX调用中提取数据,这些调用以很酷的JavaScripty方式返回数据;2)创建使用这些数据的iPhone应用程序;3)让其他web应用程序使用这些数据。
通常,我只会创建一个API并完成它。然而,这些数据实际上是适度保密的-这就是说,我们不希望我们的竞争对手能够每天早上查看我们所有的产品,然后自动设定他们的价格来降低我们的价格。我们还希望能够看到谁可能在滥用系统,所以如果有人每天对我们的API进行一千万次复杂的调用,并使我们的服务器陷入瘫痪,我们可以切断他们的网络。
我的下一个合乎逻辑的步骤是创建一个开发人员的密钥来限制访问-这在web应用程序中工作得很好,但对于任何AJAX调用就不那么有效了。(在我看来,他们需要在JavaScript中提供密钥,它是明文的,很容易看到,因此实际上根本没有安全性。尤其是当我们在我们的站点上使用我们自己的开发人员的密钥来进行这些AJAX调用时。)
所以我的问题是:在研究了Oauth和OpenID一段时间后,我不确定是否有一个解决方案可以处理以上三种情况。开发人员的键有没有某种规范的“最佳实践”,或者Oauth和OpenID能以某种我还不熟悉的方式轻松地处理AJAX调用,或者我完全遗漏了什么?
发布于 2010-03-13 02:13:07
我认为两条腿的OAuth是你想要满足的#2和#3。对于#1,我建议客户不是直接针对你的应用程序发出JS请求,而是通过他们自己的web应用程序代理这些请求。
发布于 2010-03-13 02:14:59
一种中间的解决方案是需要一个API密钥;然后要求任何使用它的人实际上都不会直接在AJAX中使用它;而是将他们的调用包装在服务器端请求中,例如:
AJAX -> customer server -> your server -> customer server -> user为感兴趣的人创建一个简单的PHP应该不会太困难,而且您自己的iPhone应用程序显然会绕过中间人,使用自己的API密钥发布。
发布于 2010-03-15 03:31:53
OAuth和OpenID不太可能直接与AJAX调用有太多关系。最有可能的是,您的AJAX处理程序前面有某种授权过滤器来检查cookie,并且该cookie可能是作为OpenID身份验证的结果而设置的。
这似乎归结为一个“how do I prevent screen scraping”的问题。如果只有登录的客户才能看到价格,这是一回事,但假设你像大多数零售网站一样,你对客户注册的门槛尽可能低,这并没有真正的帮助。
而且,嘿,如果你的价格不可用,你就不会出现在Froogle、Nextag或PriceGrabber这样的搜索引擎上。但这更多的是一个商业战略决策,而不是一个编程决策。
https://stackoverflow.com/questions/2434804
复制相似问题