我正在使用.NET Core 3.0 Web API并使用Azure AD身份验证。 所以我正在尝试从声明对象获取活动登录用户的用户名和电子邮件。
这是我尝试过的
var cu = _httpContextAccessor.HttpContext.User;
string username = User.FindFirstValue(ClaimTypes.Name);
执行时用户名为空。当我们改变 ClaimTypes.Email 时也是如此。
我怎样才能获得这些详细信息。
但是在User.Identity.Claims中调试时,我可以看到该值。但我无法从那里提取。
>ClaimTypes.Name 值遵循旧的SAML兼容格式http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
而JWT令牌使用较短的版本,如name
。
将以下行添加到ConfigureServices
方法,以使用 JWT 令牌声明名称生成声明集合。
JwtSecurityTokenHandler.DefaultMapInboundClaims = false;