• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 使用第 3 方 OAuth token 在自定义用户数据库中创建用户对象?

[复制链接]
菜鸟教程小白 发表于 2022-12-13 06:23:00 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我们正在创建一个用户可以登录的服务(现在是后端 + iOS 应用程序)。我们已经完成了我们自己的基于 token 的自定义登录系统并进行了注册。我们现在正在尝试实现他们可以选择“通过 Facebook 登录”或“Twitter”等的功能。(即不使用我们的自定义注册用户名和密码)

我们已经成功实现了客户端功能,但是我们从第三方服务(Facebook)收到的只是一个 token ,以及用户的基本信息。

要使用我们的服务,(当然)需要在我们的服务器上注册一个适当的 CustomUser-object(我们自己的),该对象通常会在我们的自定义注册中创建。通过 3rd 方服务登录时,我们应该如何为该外部认证用户创建一个 CustomUser-object?

当用户通过我们的应用程序被第三方服务认证时,我们如何以及向我们自己的服务器发送什么来注册(或认证)? 我们收到一个 auth-token(最终会过期),应用程序(客户端)可以在 3rd 上访问用户的基本信息。我们正在考虑将基本信息(例如用户的 user_id 和电子邮件以及 token )发送到我们自己的服务器,并为其创建一个新的用户对象(如果它以前不存在)。但是,我们意识到这根本不是很安全。当用户下次登录我们的服务时,使用相同的 3rd 方身份验证,我们只有用户 user_id 和 email 来匹配。该 token 可能是一个新 token 。这意味着任何拦截到我们服务器的任何第 3 方登录调用的人都会看到,基于第 3 方身份验证登录到现有 customUser 所需的唯一信息是 user_id 和电子邮件。在大多数此类 3rd 方服务(例如 Facebook)上非常公开。

我们一直在尝试使用这些 3rd 方服务阅读 OAuth 和授权/身份验证,但是我们看到的每一个文档都痛苦地专注于 3rd 方身份验证,并且没有触及 < strong>我们自己的第 3 方身份验证..

我们做错了吗?



Best Answer-推荐答案


实际上,您关于电子邮件和 user_id 的断言并不完全正确,至少对于 Facebook 而言。

... Which are very public on most such 3rd-party services, such as Facebook.

当有人通过 Facebook Oauth 服务登录时,您将获得一个“app_scoped_user_id”,这是 Facebook 为用户和您的应用创建的唯一 ID。每个用户对于他使用的每个应用程序都有不同的“应用程序范围用户 ID”,除了您(应用程序)之外没有人会知道“应用程序范围用户 ID”。

App scope user id docs

所以我想说使用“应用范围用户 ID”作为用户的标识符是安全的,也是最好的方法。

不确定它如何与 Twitter 等其他服务一起使用,但我很确定您可以做类似的事情。即使 user_id 是公开的,它也应该始终是唯一的,您可以使用它来识别您自己的用户。

希望对你有帮助。

关于ios - 使用第 3 方 OAuth token 在自定义用户数据库中创建用户对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29583879/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap