现有用户的 Microsoft 身份验证

Authentication with Microsoft for existing users

我正在使用 (ext)ASP.NET 开发一个已经有用户注册的 Webapp。我正在尝试使用 Microsoft (OpenID Connect) 添加身份验证。

我的问题是,我不知道如何将现有用户连接到他们各自的 Microsoft 帐户。在他们第一次登录后,我应该将 "sub" 保存在我的数据库中,并可以将用户与它进行比较。

但是第一次,不知道怎么办。我无法真正检查 "preferred_username" 中的有效载荷中的电子邮件,因为它是可变的。

我的第二个问题是,在我的数据库中保存 "sub" 是错误的方法吗?

问得好,登录后在您的应用中识别用户是一项常见要求。特别是如果用户有你的应用程序的历史记录,例如下订单,并且你希望在将登录迁移到 Azure AD(或任何地方)时维护这些历史记录。

我更喜欢以下方法:

  • 确保授权服务器包含现有用户的电子邮件
  • 我建议在应用程序数据库中存储子声明的副本
  • 登录后,尝试在您的应用中找到子声明的匹配项
  • 如果找不到,则尝试匹配电子邮件声明

我在 User Data Management 上的博客 post 可能会给您关于要遵循的模式的更多想法。如果您的问题是关于获取电子邮件索赔的 Microsoft 特定技术问题,请 post 返回并提供更多详细信息 - 我也许可以帮助您。