oauth2 账户认证

信息安全 oauth
2021-08-24 22:28:26

假设您使用 oauth2 和几个 oauth 提供程序保护您的应用程序。

现在想象有人使用提供商 A 和电子邮件 bob@example.com 登录。

下一次,有人使用提供商 B 和相同的电子邮件 bob@xample.com 登录。

两家提供商都声明电子邮件地址已经过验证,并且都是大公司(无法指定您自己的提供商或类似的东西)。

您是否应该将两个登录名映射到同一个帐户?有哪些风险?

我已经看到的风险是攻击面越来越大:如果我想黑掉 Bob 的帐户,我可以尝试黑掉提供商 AB。但好处是对 Bob 来说更方便,因为他不必这样做记住他使用的提供商...

1个回答

首先确保每个 OAuth 提供者实际验证用户的电子邮件地址。谷歌和 Facebook 会这样做,但并不是每个网站都会验证您的电子邮件地址(reddit 就是一个例子)。谷歌和 Facebook 在安全方面处于领先地位,我怀疑它们会成为最薄弱的环节。然而,纵深防守是令人钦佩的品质。

使用电子邮件地址作为唯一标识符的问题的一个简单解决方案是向用户发送电子邮件并要求他们单击一个链接,该链接确认应该链接两个 OAuth 提供程序。