Cordova - 使用客户端 Facebook Oauth 的安全性

Cordova - Security using client-side Facebook Oauth

我目前正在制作一个 Ionic Cordova 应用程序,它需要 Facebook Auth。 我为此使用了 Nic Raboy 的非常简单的 plugin。我制作了一个图表来显示当前的流程。

问题是:如果对手以某种奇怪的方式知道在我的 (Laravel 5.1) 服务器上注册的路径;难道他们不能 get the Facebook ID 并且只是组成一个假的访问令牌 + 附加数据,然后代表其他人创建一个用户吗?

即使这假设不是问题,我如何确保登录的用户是实际登录的用户?由于 registration/logging 与使用 Facebook 作为身份验证相同,我假设服务器正在检查某些值。使用 Facebook 访问令牌对我来说是有意义的,但由于该令牌经常更改,因此对我来说似乎并不可靠。

我也看过 Laravel 的 Socialite,但它似乎只适用于视图,我显然不能,因为我将服务器用作 REST 服务器。

感谢任何帮助。谢谢。

通常您会让您的服务器直接与 FB 对话。接受的方法是:

  1. Cordova 应用程序执行握手并从 Facebook 应用程序获取 FacebookID访问令牌 和其他凭据。
  2. Cordova 应用程序将此信息发送到您的服务器。
  3. 重要提示:服务器使用这些凭据并直接与 FB 对话。以这种方式,服务器通常通过使用 Access Token 与 FB 对话来执行验证。使用 Access Token 它从 FB 获取信息并确保一切匹配。例如,它会检查从 Cordova 应用程序发送的 FacebookID 是否与直接从 FB 检索的 FacebookID 相同。

可以找到有关此方法的更多信息 here。所附的link具体说明:

The call will need to be server-to-server, since it involves your app secret.

这种方法通常可以保证没有第三方攻击。即使有人知道你的 facebook id(他们很容易得到,因为它是 public),他们也不能假装是你,因为他们缺少访问令牌(过期)。