如何从jwt令牌获取用户ID?

时间:2020-01-18 13:52:44

标签: c# asp.net-core jwt azure-active-directory httpcontext

Net核心应用程序。通过招摇我正在对我的Web API应用程序进行身份验证。我正在从招摇的每个请求中发送JWT令牌。该jwt令牌包含Azure用户objectid。我想找回它。我尝试如下。

userId = _httpContextAccessor.HttpContext.User.Claims.First(i => i.Type == ClaimTypes.NameIdentifier).Value;

这没有给我正确的对象标识符。我可以在令牌中看到对象标识符,如下所示。

jwt token

在下面的图像中有对象标识符,但我无法检索它。有人可以帮我吗?任何帮助,将不胜感激。谢谢

1 个答案:

答案 0 :(得分:2)

如果您知道要查找的索赔的名称,则可以使用它来代替ClaimTypes类中定义的索赔。

userId = _httpContextAccessor.HttpContext.User.Claims.First(i => i.Type == "CLAIM_NAME").Value;

ClaimTypes类不是一个枚举,它只包含一些预定义的const字符串值。

enter image description here