处理用户身份验证(通过Facebook)并在应用程序内保护通信

时间:2013-07-18 13:51:56

标签: android ios facebook security authentication

也许下面的声音听起来很奇怪,我有一些错误的假设,所以我希望你能宽恕这一点。

简要介绍一下我们想要实现的目标:

目前我们正在开发一款需要后端存储用户特定数据(例如图片,评论等)的应用。由于我们想要摆脱所有用户身份验证,并且我们也想使用Facebook功能,我们将让Facebook执行所有身份验证,并根据我们将在身份验证后收到的ID /电子邮件创建用户。

我们简要介绍一下这个流程:

  1. 用户打开应用程序但未登录(Facbook SDK将自行处理会话并保留cookie)。
  2. 用户通过Facebook验证。
  3. App向服务器发送id。如果存在id,服务器将返回,因此应用程序将显示某种注册(域特定表单)或将立即登录用户
  4. 现在是棘手的部分,我不知道如何处理这个问题。

    由于后端的API是公共的(HTTPS),我们需要以某种方式确保用户在能够通过应用程序获取数据之前登录。

    仅仅说“哦,应用已经验证他是用户,所以没有其他人会调用后端”是不够的。后端如何通过Facebook登录验证api消耗是否真正通过身份验证?我们希望避免任何人可以使用他在设备上持久保存的Facebook ID来调用我们的REST服务。

    请记住:我们不希望在用Facebook进行身份验证时为用户分配密码。

    也许我在这个用例中有一些奇怪的想法,所以让我高兴吧! 感谢您提前获得所有答案和共享知识。期待!!

2 个答案:

答案 0 :(得分:0)

我不知道你是否可以通过facebook模块验证你的应用程序,但看看后端作为这样的服务提供商:apiOmat还提供“私人测试模块”,这意味着你可以要求特征

答案 1 :(得分:0)

如果您使服务器使用访问令牌获取用户信息,您可以执行以下操作:

  1. 执行客户端OAuth身份验证并接收访问令牌
  2. 使用此令牌将访问令牌发送到您的后端并使用Facebook API获取包含Facebook ID的用户信息
  3. 服务器会将散列ID(cookie = id + ":" + hash(id + secret))存储在HTTP cookie
  4. 做你的注册/登录事宜
  5. 对服务器后端的每个请求都将通过重新计算带有密码的哈希并将其与cookie中的值进行比较来验证cookie中的id