对电子邮件地址的声明是否足以支持OAuth权限

时间:2013-08-31 01:25:21

标签: security authentication oauth openid

OAuth是一个很好的框架,允许委派身份验证,因此用户无需使用新的用户名和密码即可使用您的网站。但是,我对如何存储经过OAuth身份验证的用户有点朦胧,以便您可以对该用户执行应用程序级权限。

OAuth返回有关用户的一些声明,包括声明的标识符和电子邮件。到目前为止,我一直使用声明的标识符作为OAuth认证用户的唯一标识符,但这样做存在一些问题。

  • Google为您用于登录的每个网址提供了不同的声明标识符。
  • 每个提供商都会为同一个人提供不同的标识符(例如,如果我在同一个电子邮件地址下拥有雅虎和Google帐户,则每个人都会有不同的标识符)

这两个都是完全合理的,但尤其是第一个让人感到有点痛苦。

将此主要标识符移动到电子邮件地址意味着无论使用哪个URL和提供商,只要他们拥有相同的电子邮件地址,我就会将他们统一为同一个用户。

我的问题是如果我转而使用电子邮件声明作为我的用户的唯一标识符,我的权限基于此是否安全?

关注

  • 依赖提供商验证电子邮件地址,然后再将其作为OAuth用户
  • 是验证电子邮件地址所需的提供商(我假设所有主要电子邮件地址都是这样做的)?

1 个答案:

答案 0 :(得分:0)

我认为你在谈论的是OpenID而不是OAuth。

如果您查看main providers,可以假设他们拥有其用户的有效电子邮件属性(例如,在myopenid.com中是可选的,但是他们推荐它,因此他们有电子邮件他们的大多数用户)。

电子邮件是唯一标识符,是识别用户的好方法。

我认为在您的应用程序中使用电子邮件作为标识符没有任何安全问题。但是,所有用户都希望与您的应用程序共享其电子邮件属性是一个问题。