OpenId Connect中用户的唯一标识是什么?

8
我们有一个使用Asp.Net Identity管理客户数据库的Asp.Net 4.5 MVC应用程序。我们目前正在使用Microsoft帐户身份验证。我们考虑使用OpenId Connect,以便具有工作/学校帐户的客户也可以登录将登录添加到.NET MVC Web应用程序
Microsoft帐户身份验证返回ProviderKey作为已登录用户的唯一ID。这映射到我们的客户数据库中的UserId。
OpenId Connect似乎没有返回ProviderKey,但NameIdentifier看起来很有前途:ClaimsPrincipal.Current.FindFirst(System.IdentityModel.Claims.ClaimTypes.NameIdentifier)?.Value; NameIdentifier是由OpenId Connect返回的用户的唯一标识符吗?它能可靠地用于随时间唯一标识用户吗?

这个答案能帮到你吗:https://dev59.com/Y1oV5IYBdhLWcg3wEbS9#36787635? - juunas
1个回答

9
“NameIdentifier”是由OpenId Connect返回的用户唯一标识符吗?它能可靠地用于长期唯一标识用户吗?
据我所知,“NameIdentifier”从id_token中的“NameId”或“Sub”声明映射而来(请参见这里)。对于Azure AD的id_token,它使用了“Sub”声明。
根据sub声明的描述:
“表明令牌所断言的信息的主体,例如应用程序的用户。该值是不可变的,不能被重新分配或重复使用,因此可以安全地用于执行授权检查。因为主题始终存在于Azure AD生成的令牌中,所以我们建议在通用授权系统中使用此值。”
答案是,它可靠地用于长期唯一标识用户。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接