OpenId Connect

时间:2017-03-28 04:40:16

标签: asp.net-identity azure-active-directory openid-connect adal msal

我们有一个使用Asp.Net Identity的Asp.Net 4.5 MVC应用程序来管理我们的客户数据库。我们目前正在使用Microsoft帐户身份验证。我们正在考虑使用OpenId Connect,以便拥有工作/学校帐户的客户也可以登录Add sign-in to an .NET MVC web app

Microsoft帐户身份验证将ProviderKey作为已登录用户的唯一ID返回。这将映射到我们客户数据库中的UserId。

OpenId Connect似乎没有返回ProviderKey,但NameIdentifier看起来很有希望 ClaimsPrincipal.Current.FindFirst(System.IdentityModel.Claims.ClaimTypes.NameIdentifier)?.Value;

是否NameIdentifier是OpenId Connect返回的用户的唯一标识符?是否可以可靠地用于随着时间的推移唯一地识别用户?

1 个答案:

答案 0 :(得分:7)

  

NameIdentifier是OpenId Connect返回的用户的唯一标识符吗?是否可以可靠地用于随着时间的推移唯一地识别用户?

AFAIK,NameIdentifier来自id_token的NameIdSub声明(请参阅here)。对于Azure AD的id_token,它使用了Sub声明。

来自sub claim的描述:

  

标识令牌断言信息的主体,例如应用程序的用户。此值是不可变的,无法重新分配或重用,因此可用于安全地执行授权检查。由于主题始终存在于Azure AD发布的令牌中,因此我们建议在通用授权系统中使用此值。

答案是肯定的,它可靠地用于随着时间的推移唯一地识别用户。