我有一段时间的移动应用程序,它使用自定义登录流程,利用json web令牌(基于Java的前端服务器)。我现在希望能够允许用户出于方便的原因通过Facebook登录。阅读Facebook登录流程后,用户输入他们的FB凭证,然后Facebook返回设备(当然,如果成功的话)一个访问令牌以及其他信息,如电子邮件,范围等。当这些信息返回到设备时,我会发送到我的服务器的电子邮件地址,并检查它是否是当前用户。如果是,我会允许他们继续,但如果他们是新的,他们将需要添加一些额外的信息。我看到的问题是用户不能在发送我的服务器之前欺骗客户端的电子邮件地址吗?我怎么知道进入我的应用程序的电子邮件是为我验证的用户。
我已经阅读了他们关于将FB与现有登录系统(https://developers.facebook.com/docs/facebook-login/multiple-providers但似乎无法找到)和android / iOS登录集成的文档,但无法找到如何防止这种常见情况。
答案 0 :(得分:2)
我看到的问题是,用户只是在发送服务器之前欺骗客户端的电子邮件地址?
不要发送电子邮件地址 - 发送访问令牌,并在服务器端请求他们的数据(包括电子邮件地址)。
Facebook拥有大量资源来处理文档中的此类安全问题。检查f.e. https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow/v2.4#confirm和https://developers.facebook.com/docs/facebook-login/security