Facebook graph api 如何使基于纯JavaScript的Google或Facebook OAuth 2.0安全到欺骗?

Facebook graph api 如何使基于纯JavaScript的Google或Facebook OAuth 2.0安全到欺骗?,facebook-graph-api,oauth-2.0,google-oauth,spoofing,Facebook Graph Api,Oauth 2.0,Google Oauth,Spoofing,我正在为客户端登录系统实现基于JavaScript的Google或Facebook OAuth,我希望在成功验证用户后使用Google/Facebook返回的访问令牌和电子邮件Id组合在服务器上创建会话。我有一个基于.NET的服务器应用程序。我希望使用一些AJAX方法(如$.AJAX)发送此访问令牌和电子邮件Id组合,并在服务器端为此电子邮件Id创建会话 现在我有一个限制,我的服务器在防火墙后面,它无法联系Google/Facebook验证访问令牌 我的一位同事向我指出,由于我的服务器和Goog

我正在为客户端登录系统实现基于JavaScript的Google或Facebook OAuth,我希望在成功验证用户后使用Google/Facebook返回的访问令牌和电子邮件Id组合在服务器上创建会话。我有一个基于.NET的服务器应用程序。我希望使用一些AJAX方法(如$.AJAX)发送此访问令牌和电子邮件Id组合,并在服务器端为此电子邮件Id创建会话

现在我有一个限制,我的服务器在防火墙后面,它无法联系Google/Facebook验证访问令牌

我的一位同事向我指出,由于我的服务器和Google/Facebook之间没有通信,任何恶意用户都可以向我发送用户A的电子邮件id和任何随机访问令牌,我无法检查该令牌的有效性是否真的属于用户A


我的服务器正在使用SSL通信。那么,我如何才能使这个场景安全。

我认为您不应该使用无法验证的令牌。如果你不能联系IDP验证代币,我认为你的应用程序无法运行。这有点令人惊讶,大多数防火墙都允许您呼出,它们不允许其他人呼入。

您可以请求一个ID令牌,如下所述

它包含JWT中的签名用户ID和电子邮件

这篇文章可能会有所帮助


免责声明:我没有亲自尝试过这些。另外,正如Tim所说,你确定不能从防火墙后面呼叫吗?

是的,在我的系统中,防火墙规则仅基于IP地址而不是基于域名打开。我的问题是,由于Google.com或Facebook.com可以有很多负载平衡的IP地址,我无法获得所有IP地址的防火墙规则。纯粹出于好奇,为什么你的防火墙限制传出IP地址?这是我们的生产服务器,我的组织对防火墙规则非常严格。这可能是离题的,但对于出站流量,更典型的是使用http代理。您可以将代理规则配置为允许/不允许站点,并且您的防火墙将允许来自代理的所有出站流量。无论如何,请看一下ID令牌,因为它应该适用于您。本视频介绍了如何执行此操作。它使用的是Android而不是JavaScript,但原理是一样的。