使用B2C身份提供商时HttpContext.User.Identity始终返回null
问题描述
使用B2C ID Provider时,应用认证功能正常,但尝试获取已登录用户信息时,HttpContext.User.Identity始终返回null。已调整AnonymousAccess相关设置,问题仍未解决。
相关截图:
- 配置截图:

- launchSettings截图:

- 问题截图:

排查与解决建议
- 确认认证中间件顺序:在
Program.cs中,确保app.UseAuthentication()在app.UseAuthorization()之前执行,且两者都在路由中间件之前。顺序错误会导致身份信息无法正确加载。 - 检查ClaimsPrincipal填充情况:在认证回调或授权过滤器中,输出
HttpContext.User的完整内容,确认是否有Claims被加载。若Claims存在但Identity为null,需检查身份类型是否正确设置。 - 验证B2C令牌配置:确保
AddMicrosoftIdentityWebApp的配置参数(Domain、ClientId、TenantId、SignUpSignInPolicyId)准确无误,且令牌包含sub或nameidentifier等核心用户声明。 - 检查Cookie认证配置:若用Cookie存储身份信息,确认
CookieAuthenticationOptions的SlidingExpiration、ExpireTimeSpan等设置合理,未禁用身份持久化。 - 注意请求时机:避免在控制器构造函数或中间件早期阶段访问
HttpContext.User——此时认证中间件可能还未完成身份处理,建议在Action方法内访问。 - 查看详细日志:在
appsettings.json中设置Logging.LogLevel.Microsoft.AspNetCore.Authentication为Debug,通过日志排查认证过程中的错误或警告。
内容的提问来源于stack exchange,提问作者Ferri16
相关产品推荐
相关产品推荐

