【问题标题】:OAuth - What information can I store?OAuth - 我可以存储哪些信息?
【发布时间】:2015-03-05 04:30:48
【问题描述】:

我正在运营一个电子商务网站,并希望使网站更易于访问,因此我正在考虑使用 OAuth,以便他们可以使用他们的一些社交媒体资料登录。我还通过电子邮件和其他方式向我的客户发送了很多营销活动,所以在用户注册的那一刻,我有一些信息,例如他们的电子邮件和有关他们职业的一些详细信息(与产品相关,不要担心我不是在多管闲事!)。

如果用户使用 OAuth 登录,那么他们将不会向我提供一些基本信息,例如他们的电子邮件,因为他们不必使用注册表单。

那么,在实施 OAuth 时,我想知道我可以将哪些关于用户的数据存储到我的数据库中?例如,目前我可以向我网站上的所有用户发送时事通讯,但是使用 OAuth 是否可以做到这一点?如果每个用户使用 OAuth 登录,我可以访问哪些类型的信息?

很抱歉,如果这些问题已在其他地方得到解答,我一直在尝试搜索,但没有找到任何关于公司可以获得什么的信息,我只是从基本编码的角度和从用户的观点。

谢谢!

【问题讨论】:

  • OAuth 2.0 本身(即没有标准化或专有扩展)不能用于用户身份验证,因为 OAuth 2.0 是用于委托 API 访问的协议。 OpenID Connect 是建立在 OAuth 2.0 之上的协议,提供用户身份验证;您的问题实际上是关于 OpenID Connect 而不是 OAuth 2.0。
  • @HansZ。谢谢!我想我一般指的是这种方法!

标签: security login oauth oauth-2.0 openid-connect


【解决方案1】:

使用 OpenID Connect,它是 OAuth 2.0 的标准化扩展配置文件,您可以通过第 3 方提供商对用户进行身份验证。还有许多提供者创建了自己的 OAuth 2.0 专有扩展,为他们提供登录语义,但它们没有标准化,您的客户端代码必须处理这些专有扩展中的每一个。可以预期,所有使用专有 OAuth 2.0 扩展登录的提供商将来都会迁移到 OpenID Connect。

OpenID Connect(以及专有的 OAuth 2.0 扩展协议)不仅对用户进行身份验证,而且还以声明(或:属性)的形式提供用户身份信息。因此,如果只有用户同意将其提供给您的客户,他们确实会提供您正在寻找的基本信息(例如电子邮件)。您可以使用该信息并将其存储在数据库中以供离线访问。

OpenID Connect 的好处在于它标准化了许多基本声明,以便您的代码在处理用户信息时可以与提供者无关。见http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims。专有的 OAuth 2.0 登录协议不提供标准化声明,因此您需要对每个提供者进行自定义处理(映射/翻译)。

【讨论】:

  • 这就是我关心的问题,我可以拥有用户的信息,但前提是他们同意。如果是这种情况,我更喜欢典型的登录系统,这样我可以确保在用户注册时我有某些信息。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多