【问题标题】:Association of OAuth between providers提供者之间的 OAuth 关联
【发布时间】:2017-12-16 00:59:17
【问题描述】:

我在看可汗学院,我想知道他们的身份验证是如何工作的(可能许多其他网站都有相同的)。

当您使用具有电子邮件“aaa@gmail.com”的 facebook 帐户登录时,您完全注销,打开另一个匿名窗口,并使用具有相同电子邮件“aaa@gmail.com”的 google 帐户登录,您登录之前创建的帐户。

我的问题是:

  1. 他们是否根据您的社交帐户拥有的电子邮件与帐户建立关联?
  2. 我确信他们的解决方案是安全的,但是这是否常见且通常可行,因此不会有任何可能的漏洞利用?

【问题讨论】:

  • 1.他们还会用什么? 2. 如果所有这些提供商仅在确认/验证后返回用户电子邮件,那么是的,这是合理的安全。

标签: authentication facebook-graph-api oauth oauth-2.0 google-oauth


【解决方案1】:

我正在使用 Oauth2 系统来授予对我的应用程序的访问权限,dvouch

首先,您的网站中有一个注册用户,并拥有一个唯一的电子邮件。

所以基本上发生的是:

  1. 用户访问您的网站(网站不知道用户是谁)
  2. 用户点击通过 Oauth2 提供商之一登录
  3. 您的网站继续启动“OAuth2”握手,它将用户重定向到提供者 oauth 端点,以及一些信息,例如您要求的范围(电子邮件、个人信息、公共信息等),验证完成后发送回用户的 url、您的应用程序令牌(在提供程序应用程序仪表板中注册)等等。
  4. 假设您选择的提供商是 facebook。 Facebook 收到您的 OAuth2 身份验证请求。它还接收您要求的范围、您希望用户在通过身份验证后访问的 url 以及您的应用程序凭据
  5. 它会检查您发送的凭据是否有效,您要求用户发送的回调 url 是否与他们为您的应用程序注册的内容相匹配(这样某人就不能简单地窃取您的应用程序凭据并让用户重定向到其他地方),如果一切正常且花花公子,它将向用户显示登录窗口。此登录发生在提供商的页面上。不在您的网站上。
  6. 用户登录(在 facebook 或 google 内而不是您的网站)。提供商将它们发送回您在握手开始时指定的回调 url。
  7. 您(您的网站)收到用户返回的一堆信息,例如刚刚完成 Oauth2 流程的用户的电子邮件。
  8. 此时您使用回调中的电子邮件并通过电子邮件识别用户。由于所有电子邮件都是唯一的,并且您的用户必须在提供商处使用该电子邮件进行注册,因此您可以安全地假设他是该电子邮件的所有者。

(从技术上讲,事情可能会发生一些不同)

只要网站有常规的安全措施,它基本上是非常安全的。当然,如果有人可以访问您的 Facebook(wtv) 帐户或电子邮件,他们就可以像您一样登录,但无论他们是否提供 Oauth,这都会发生。

然后,只要您验证您登录的是正确的提供商的网站(例如 facebook 或 google,而不是其他网站),您就可以了,因为其他人将无法看到您的登录信息。由于必须通过授权的“范围”,您作为用户还可以查看应用程序要求的内容(电子邮件、对收件箱的访问、wtv)并决定是否要授予这些范围,如果您决定不授予访问权限,那么 facebook 将不会传回该信息,从而使流程安全。

唯一不安全的方法是,如果您的计算机中安装了恶意软件来记录您的活动,在这种情况下,无论哪种方式,您都会被搞砸。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-26
    • 2014-04-18
    • 2011-07-13
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    相关资源
    最近更新 更多