1

我使用 Apigee 作为私有 REST API 的代理,它允许对我的数据库进行基本的 CRUD 操作。前端开发人员想直接从 JavaScript/Ajax 调用我的 API,所以我不能使用基本的 API 密钥身份验证,因为任何人都可以查看 JS 的源代码并在我的 API 上调用可能具有破坏性的方法(我是一个远离起源的人)浏览器中的策略,但这不会阻止某人在浏览器之外执行 curl 并调用我的 API)。

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

提前致谢!

4

2 回答 2

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 网站上有一个示例。

于 2013-11-15T19:31:27.163 回答
0

因此,您想授权访问者访问您的第 3 方网站,并确保他们不会做任何滥用行为?

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


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

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

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

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

于 2013-11-15T16:38:44.590 回答