c# - 身份验证 .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中调试时看到该值。但我无法从那里提取。
解决方案
ClaimTypes.Name值遵循旧的 SAML 兼容格式http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
,而 JWT 令牌使用较短的版本,例如name
.
将以下行添加到您的ConfigureServices
方法中,以使用 JWT 令牌声明名称构建声明集合。
JwtSecurityTokenHandler.DefaultMapInboundClaims = false;
推荐阅读
- c++ - 派生类的原始类型数据成员可以用作其基本构造函数的参数吗?
- excel - Excel中如何根据分组表做表映射实现分组求和?
- python - Python pandas 绘制移动secondary_yaxis(kind='line')
- powershell - Azure OAuth 2.0 设备代码在启动时添加到浏览器
- javascript - 以动态方法获取选定的单选按钮值
- html - 问题 - 以闪亮的方式更改 SidePanel 的背景颜色也会导致渲染图中的颜色发生变化
- python - 在 tkinter 中运行 mainloop 后更新文本
- ios - 预定的 IOS 本地通知每分钟重复一次
- c++ - #include 在 C++ 枚举中的作用
- mysql - MySQL history show a lot of \040