我正在实现OAuth (更具体地说,“与谷歌登录”)的网站,它一直只使用电子邮件和密码多年。
现在,我正在阅读的指南建议在uid回调中阅读OAuth。但是,与其他方法签约的现有用户在数据库中没有该信息。基本上他们会得到一个新的,单独的帐户。
但是,如果我能够用电子邮件来识别用户,我可以提供一个更好的流程:用户将立即被识别。
我的网站上的电子邮件地址是通过电子邮件确认核实的。
依赖像Google这样的身份提供者返回的电子邮件安全吗?还是我应该只依赖于"provider / uid“来进行身份验证?
发布于 2022-06-29 23:58:27
通常,在使用外部登录时,需要为每个用户存储一个唯一的ID。考虑以下情况:
user@example.com。user@example.com注册。用户B现在可以访问用户A的所有数据,这是非常糟糕的(并且还可能使您承担法律责任,这取决于管辖权)。请注意,如果用户A使用电子邮件和密码注册,用户B就不会有密码,因此不可能登录。如果您认为电子邮件重用不是一个问题,我向您保证,它确实发生在一些财富500强公司。
许多站点所做的是拒绝使用SSO登录,如果已经有一个带有该电子邮件地址的现有帐户,迫使它们使用现有的凭据,然后一旦登录,允许它们链接这两个帐户。这是解决问题的一种安全方法,如果人们愿意的话,还可以让人们在未来利用SSO。
发布于 2022-07-02 01:34:29
OAuth不用于身份验证.。您应该使用用于身份验证的协议,比如OpenID连接(该协议的一部分使用OAuth )。
OAuth的普通用例是获取一个令牌,授权您的应用程序代表用户对其他服务执行操作。例如,您可以为用户的Google帐户获得一个OAuth令牌,以便从您的应用程序中代表用户访问特定的Google。
https://security.stackexchange.com/questions/263046
复制相似问题