gpt4 book ai didi

ios - 对于使用 Facebook iOS SDK 的混合 SSO 场景,为我们自己的自定义用户记录生成密码/ key 的最佳方法是什么?

转载 作者:技术小花猫 更新时间:2023-10-29 10:17:07 25 4
gpt4 key购买 nike

所以我的意图是在我的 iOS 应用程序中登录,允许我们的标准电子邮件/密码注册,或使用 Facebook 登录。我们还在创建休息服务以获取给定用户的应用程序信息,例如https://url/getPosts/[userId]?userPwd=foo

我之前在 Web 应用程序中使用 fb 实现了 SSO,但我对 iOS 客户端场景中身份验证的安全性有些担忧。与我之前所做的主要区别在于,在 Web 应用程序中,我正在对 Facebook 进行服务器到服务器调用以获取访问 token ,因此我有理由确信用户已通过身份验证并且 Web 服务器进行了特权调用数据库。在 iOS 案例中,我有移动客户端应用程序自己发出 Facebook iOS 身份验证请求,并且服务器必须以某种方式相信来自客户端应用程序的这个用户确实根据我们数据库中的匹配用户记录进行了身份验证。

我的问题是如何从 iOS SDK 生成持久且 secret 的唯一 key ,以便我可以在我们的数据库中为仅通过 Facebook 进行身份验证的用户创建和关联匹配的用户记录。我希望这是无缝的,这样用户就不必手动填写另一个表单,我们只会在我们的数据库中自动创建这个匹配的用户记录。

当他们使用 Facebook 进行 fbDidLogin 时,我可以在我自己的用户表中插入一条记录,使用 Facebook Id 作为唯一标识符,并使用 fb 访问 token 作为我自己的用户记录的伪密码/ key 。在将其保存为用户密码之前,我必须使用 Facebook 验证访问 token 以确保其有效(用户永远不会看到此密码,它只会在 api 调用期间由客户端应用程序传递)。这样,当用户通过 iPhone 应用程序调用我们自己的 rest api 时,我们可以使用此 secret /密码/ key 进行身份验证和授权。

让整个问题变得毫无实际意义的另一种方法是只处理客户端应用程序上的授权逻辑,并在调用我们自己的 api 之前检查是否存在有效的 fb session ,我只使用一个应用程序范围的 api 来保护它 secret ,但这似乎并不安全,因为获得一个 secret 就可以授权所有用户的数据。我宁愿在个人用户级别授权。那是正确的选择吗?我是不是对 iOS 安全问题偏执了?

fb 访问 token 已过期,因此看起来可能不耐用,但是如果我启用离线访问,该 token 不会过期但会创建一个看起来更可怕的 oauth 对话框窗口。访问 token 的替代方法是在 iOS 客户端上使用应用程序 key 对 fb Id 进行哈希处理,并将其用作我们数据库中的 Facebook 用户密码。然而,这又是一个单一的 secret key ,也许可以从 iOS 客户端应用程序反向编译?

最佳答案

Design for Facebook authentication in an iOS app that also accesses a secured web service

这篇文章帮助我了解更多。如果我没记错的话,流程是这样的:

  1. 用户在 iOS 应用中进行身份验证
  2. iOS 应用获取授权 token ,将其发送到 Rails 应用
  3. Rails 应用获取身份验证 token 并将其发送到 graph.facebook.com/?auth_token=XXX,以便在身份验证成功时取回用户。
  4. Rails 应用获取用户信息并在自己的数据库表中匹配/创建用户。将某种身份验证 key 发送回 iOS 应用。
  5. iOS 应用保存身份验证 key ,以便它可以使用它与 Rails 应用通信。

如果我遗漏了什么,请告诉我。

关于ios - 对于使用 Facebook iOS SDK 的混合 SSO 场景,为我们自己的自定义用户记录生成密码/ key 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7361855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com