实施 OpenID 以及您自己的身份验证

Implementing OpenID along with your own authentication

我知道设计是主观的。但我想知道这是否是个好主意?

假设我在我的应用程序中实现了 OpenID 连接。我支持通过多个平台登录。但是现在,假设我需要维护我的用户数据库以授权我的服务器上的资源;或者假设我需要存储用户首选项。

维护用户的 table 并在每次用户使用 OpenID 登录或使用我在 API 中登录 up/sign 时将数据推送到其中是否是个好主意,使用用户的电子邮件 ID 作为 OpenID 提供的主键(因为它不会改变)?

有什么好的方法可以将两者结合起来?这有什么优点和缺点? 支持授权(我服务器上的资源)以及使用 OpenID/oAuth 进行身份验证的最佳方法是什么?

这是一个很好的问题,很多地方都没有很好地涵盖。

跟踪用户

就通过多个平台登录而言,一种常见模式是对所有类型的登录使用相同的授权服务器,并'federate'使用不同的身份提供商,具有以下好处:

  • 您的 UI 和 API 中的代码更简单
  • 无论登录方法如何,每个用户一个用户 ID

用户数据

在现实的商业应用程序世界中,您经常需要通过 2 个用户数据源来管理用户和授权请求,如您所指出的。我的几篇文章可能会提供一些有用的技术: