【问题标题】:API Authentication via JavaScript SDK通过 JavaScript SDK 进行 API 身份验证
【发布时间】:2011-04-07 13:55:55
【问题描述】:

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

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

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

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

谢谢,

加文

【问题讨论】:

  • 请求 IP 将是最终用户,而不是服务于域的机器 - 你不能使用它,抱歉。还是您的意思是请求 API 密钥?我怀疑它们也来自服务器。
  • 没错,大妈。关于我可以使用什么的任何建议?来自客户端计算机,否则任何人都可以伪装成任何人的应用程序。

标签: javascript api authentication


【解决方案1】:

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

将(声称但不可信)应用程序 ID 传递到您的 init(),jsonp 到您的域,然后:

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

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

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

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

【讨论】:

  • 我需要的那种。当我只有应用程序 id 作为身份验证时,基本上 jsonp 会离开域。然后,一旦用户通过身份验证或通过服务器使用(2-legged)oauth 访问 api,则允许标准 JSON。
猜你喜欢
  • 2014-06-13
  • 2021-07-18
  • 2015-12-08
  • 2016-04-23
  • 1970-01-01
  • 2022-10-07
  • 2016-04-16
  • 2015-09-15
  • 2016-11-01
相关资源
最近更新 更多