我目前正在开发的 Web 应用程序需要用户能够通过 Facebook OAauth 登录。然而问题是,所有这些用户都在阻止访问 facebook.com(公司政策)的防火墙后面。我们已经研究了几种解决方案来解决这个问题,例如;
- 在 Facebook 和用户之间放置一个(squid)代理。这可以解决问题,因为 squid 支持细粒度的基于正则表达式的 ACL。但是,大多数 Facebook 的 OAuth 策略都在 www.facebook.com 上运行,如果用户使用 HTTPS(这是强制性的),则无法检查 PATH_INFO 以将特定路径列入白名单。
- 在防火墙的 DMZ 中添加一个类似代理的站点,它只传递和更改 urls/Facebook 请求。这显然也不是可行的方法,因为这基本上意味着用户将他们的凭据留在我们的服务器上,这违反了 Facebook 的条款。
- 稍微放宽防火墙以仅启用 OAuth 身份验证所需的 IP 地址,但据我们所知,没有专门的 IP 或子域仅用于身份验证(如果 graph.facebook.com 就好了会提供这样的东西)。
有替代解决方案的想法吗?这有可能吗?
最佳答案
不,因为 OAuth Login API 的流程通过将用户发送到 facebook.com 上的 HTTPS URL 来工作,您将无法轻松区分设置应用程序登录所需的流量和 Facebook.com 的其他流量
尝试使用像“赞”按钮这样的社交插件来验证 Facebook 用户时,您会遇到同样的问题 - 您无法轻松地将插件流量与 facebook.com 的其他流量分开
关于facebook - 使用 Facebook oauth 登录,没有完整的 facebook.com 访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8995467/