如何保护JavaScript / Ajax客户端[apigee]中使用的API?

时间:2013-11-15 16:30:14

标签: javascript ajax oauth-2.0 apigee

我使用Apigee作为私有REST API的代理,它允许对我的数据库进行基本的CRUD操作。前端开发人员希望直接从JavaScript / Ajax调用我的API,因此我无法使用基本的API Key身份验证,因为任何人都可以查看JS的源代码并在我的API上调用潜在的破坏性方法(我不在原点浏览器中的策略但不会阻止某人进行卷曲并在浏览器之外调用我的API。

最好的方法是什么? UI开发人员是否可以某种方式使用OAUTH在用户通过身份验证后为每个会话获取访问令牌并在其Ajax调用中使用它?但即使这样,用户也无法查看JS源代码并通过curl做一些讨厌的事情吗?

提前致谢!

2 个答案:

答案 0 :(得分:1)

OAuth v2应该可以解决您的问题。 Apigee网站上有多篇文章和资源,讨论何时最好使用OAuth v1与OAuth v2。 http://apigee.com/docs/content/apigee-oauth-frequently-asked-questions,三脚OAuth策略可能最适合您:http://apigee.com/docs/gateway-services/content/oauth。在Apigee网站上有一个例子。

答案 1 :(得分:0)

所以你想授权第三方网站的访问者,并确保他们不能做任何滥用的事情?

没有安全模型。一旦你授权用户/会话/浏览器它是免费游戏,他就可以做任何他想做的事。


所以在这里退后一步,你想要防止什么虐待?也许您想阻止未知的第三方使用您的服务。在这种情况下,您可以在水下设置API密钥身份验证,为您提供临时会话密钥。

有3个派对。用户(u),使用您的API的第三方(3)和您(y)。

  • u3
  • 请求会话密钥
  • 3使用他的API密钥向y发送水下请求
  • y验证API密钥并将会话密钥发送回3
  • 3将会话密钥交给u
  • uy
  • 发送服务请求

如果3永远无法获得会话密钥,那么您的服务对未知的第三方是安全的。