通过JavaScript SDK进行API身份验证

时间:2011-04-07 13:55:56

标签: javascript api authentication

我正在为我们的API构建JavaScript SDK。 API目前需要(两条腿)OAuth身份验证。显然这不适合JS SDK,因为密钥和秘密都在普通站点(在JS代码中)。

Facebook在启动他们的JS SDK时只需要你的app id,所以我想实现类似的东西(或类似的简单)。当开发人员请求密钥时,我们需要他们的应用程序域。我在考虑检测提交域的IP地址(例如myclientapp.com有192.168.0.0 IP)。然后通过确认远程主机IP地址匹配来验证JavaScript请求。

这是最好/最简单的方法吗?

更新:由于Rup指出远程IP将是客户端,因此与应用URL的IP不匹配。所以那就是了。所以重申我正在寻找一种解决方案,允许我在我的JavaScript sdk中为我的API强制执行某种形式的身份验证,这种身份验证不会被其他人欺骗(试图成为别人的应用程序)。

谢谢,

加文

1 个答案:

答案 0 :(得分:1)

改为对用户进行身份验证。

将(声明的,但不值得信任的)应用ID传递到您的init(),jsonp到您的域,然后:

  • 如果用户已登录*并且已经授权该应用,则返回有效用于发出API请求的代码。
  • 弹出一个窗口到您的站点(或重定向,或其他),让用户登录(如果需要)并授权该应用程序。

您可以在身份验证期间控制用户体验,并可以对应用ID进行人工验证(显示声明的徽标,名称等)。

这确实假设你甚至拥有用户的概念,就像Facebook一样。

*检查cookie,并非所有浏览器都接受它们以响应ajax请求;但是所有浏览器都会发送它们。