首页 > 解决方案 > 身份验证 .NET Core (3.0) Web API 后,始终从 Azure AD 获取用户详细信息中的空值

问题描述

我正在使用 .NET Core 3.0 Web API 并使用 Azure AD 身份验证。所以我试图从 Claims 对象中获取活动登录用户的用户名和电子邮件。

这是我尝试过的

        var cu = _httpContextAccessor.HttpContext.User;

        string username = User.FindFirstValue(ClaimTypes.Name);

执行时用户名为空。当我们更改 ClaimTypes.Email 时也是如此。

我怎样才能得到这些细节。

但是我可以在User.Identity.Claims中调试时看到该值。但我无法从那里提取。

标签: c#azure.net-coreazure-active-directoryasp.net-core-webapi

解决方案


ClaimTypes.Name值遵循旧的 SAML 兼容格式http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name,而 JWT 令牌使用较短的版本,例如name.

将以下行添加到您的ConfigureServices方法中,以使用 JWT 令牌声明名称构建声明集合。

JwtSecurityTokenHandler.DefaultMapInboundClaims = false;

推荐阅读