【问题标题】:Why should we trust someone authenticated via e.g. facebook?为什么我们应该信任通过例如身份验证的人Facebook?
【发布时间】:2017-04-23 10:09:23
【问题描述】:

在使用 OAuth 时,我们使用第三方来负责对用户进行身份验证。
例如。当使用 Facebook 时,我们在 Facebook 上“注册”我们的应用程序,当我们的应用程序用户尝试登录而不是向应用程序提供他的凭据时,他使用他的 Facebook 帐户登录。
我不明白的是为什么应用程序信任用户?该应用程序所知道的是,用户在 Facebook 上是受信任的,因为他在那里有一个帐户。我们如何才能相信用户应该真正访问该应用程序?

【问题讨论】:

  • 为什么要关闭?我可以改进这个问题吗?
  • “相信他们”关于什么,究竟是什么? “应用程序所知道的是,用户在 Facebook 上是受信任的,因为他在那里有一个帐户。我们如何才能相信用户应该真正访问应用程序?” - 决定拥有 Facebook 帐户是否足以访问您的应用程序。
  • 您没有从 Facebook 获得此用户的唯一标识符吗?这样你就知道她第二天回来时是同一个人?您还需要身份验证服务提供什么?

标签: android facebook oauth single-sign-on


【解决方案1】:

在这种情况下,您向其提供服务的“用户”是 Facebook/Google/Instagram/等。帐户。从您的角度来看,您并不关心输入凭据的人是谁。

通常,您只知道登录您的应用程序的人知道该帐户的用户名和密码。在外部验证案例中,您知道此人拥有 fb/google/inst 的特定登录名并知道与之关联的密码。

请记住,在大多数情况下(本地或外部验证),您不认识与该帐户关联的人(除非您有某种个人验证方法,例如信用卡或发送带有一些身份验证的传统字母)。您只知道登录的人知道凭据。

从技术上讲,这些帐户(fb、google、inst)中的每一个都是一个单独的“用户”,而您的本地凭据登录却是不同的。

整个概念实际上是关于用户便利性,以及一些额外的好处,例如让其他人存储和维护用户数据、额外的安全性等等。

也就是说,如果您坚持使用“本地”凭据方法仍然完全可以,只要确保它是安全的 :-)


编辑:

一个简单的例子:

您的应用有两个登录选项 - 使用密码进行简单登录和使用 Google 登录。 您还有一个用户 John Smith。

John 打开您的应用,该应用需要登录并且每个帐户都关联了一些敏感数据。

场景 1。 John 选择标准的“本地”登录选项并使用他的凭据 JohnSmith1111 和密码 12345 登录。John 现在能够显示与帐户 JohnSmith1111 关联的数据。

场景 2。 John 选择使用 Google 登录。他被重定向到登录页面,在那里进行身份验证并返回到您的应用程序。您的应用会收到用户 google_john_smith 已成功通过身份验证的通知。 John 现在可以显示与帐户 google_john_smith 关联的数据。

关键是使用这些登录选项验证的帐户不一样!这里不存在“信任”问题。

【讨论】:

  • 因此,如果我有一个访问“我的服务器”和“服务”的应用程序,如果直接访问,我通常会有一个用户名/密码来登录它们,例如通过浏览器。但是,如果我委托身份验证,例如到FB我还是不知道用户是谁?那么这个方案是否适用于特定情况?
  • 再次,这一切都归结为一个问题,如果您真的需要(并且可以)知道用户是谁 :-) 请记住,这个外部身份验证不是登录相同的替代方式用户帐号。您应该将其视为单独的用户帐户:-)
  • 我不确定我是否关注你。为什么我不需要知道用户是谁?这就是身份验证的全部意义,对吗?如果他访问的服务器有“敏感”数据怎么办?
  • 我认为您在这里对信任的理解是错误的。我将添加一个示例
猜你喜欢
  • 2021-01-30
  • 2011-05-25
  • 2019-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-13
  • 2012-07-15
  • 1970-01-01
相关资源
最近更新 更多