OAuth 是一个允许委托身份验证的出色框架,因此用户无需新的用户名和密码即可使用您的站点。但是,我对如何存储已通过 OAuth 身份验证的用户有点模糊,以便您可以对该用户执行应用程序级别的权限。
OAuth 返回一些关于用户的声明,包括声明的标识符和电子邮件。到目前为止,我一直使用声明的标识符作为 OAuth 认证的用户的唯一标识符,但这样做存在一些问题。
- Google 会为您用于登录的每个网址提供不同的声明标识符。
- 每个提供商都会为同一个人提供不同的标识符(例如,如果我在同一电子邮件地址下拥有 Yahoo 和 Google 的帐户,他们将各自具有不同的标识符)
这两个都是完全有道理的,但尤其是第一个让处理起来有点痛苦。
将此主要标识符移动到电子邮件地址意味着无论使用的 URL 和提供者如何,只要它们具有相同的电子邮件地址,我都会将它们简化为相同的用户。
我的问题是,如果我切换到使用电子邮件声明作为我的权限所依据的用户的唯一标识符,这会安全吗?
关注点
- 依赖提供商在允许他们作为 OAuth 用户之前验证电子邮件地址
- 供应商是否需要验证电子邮件地址(我假设所有主要的都这样做)?