首页 文章

推荐的方法/身份验证引擎来保护API

提问于
浏览
0

你好,谢谢你的期待 .

背景

我正在设计一个应用程序,它将通过API托管第三方网站的某些信息/数据,并且必须通过经过身份验证的请求进行访问 .

OAuth是解决这个问题的方法吗?还是有更好的东西?我不会预先知道第三方网站的域名,所以我不能依赖主机头(无论如何都可以欺骗) .

对API的请求很可能源自客户端的jQuery或常规JavaScript .

问题

确保从我的API请求数据的第三方网站是他们所声称的人,并且被允许访问他们请求的信息的最佳方法是什么?

非常感谢!

马特

1 回答

  • 1

    OAuth,特别是OAuth 2(尚未最终确定),可能对您有用 . 但由于Web请求来自浏览器而不是托管这些网站的Web服务器,因此每个浏览器都必须经过授权而不是每个域 .

    让我们退一步问这个问题:

    您的API将根据每个用户或每个网站域的唯一身份公开唯一的数据吗?或者换句话说,您是API所有者是否要通过 Contract 授权域来访问您的数据,还是个别用户可以通过您的API访问数据,这些用户需要授权这些其他域访问您自己的服务数据?

    如果您正在授权域(而不是用户),则浏览器根本无法成为这些授权API请求的发起者 . 这是因为这些域上的Web服务器必须向客户端发出其密钥,此时他们已经失去对它的控制权,任何人都可以进行这些授权调用 - 而不仅仅是您要授权的域 . 这是“你不能信任客户”的安全原则 .

    如果您要授权用户,则访问其中一个第三方网站的每个用户都必须进行一次性设置,其中网站将其浏览器重定向到您的服务以登录并说“是,[第三方网站” ]可以访问我的数据“,之后他们被重定向回该网站 . 之后,只要他们访问该网站,该网站就可以下载该用户独有的密钥,并可以在客户端上使用javascript进行这些授权的API调用 .

相关问题