You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core Web App调用Microsoft Graph时个人中心用户Claims缺失

问题解决思路

1. 权限范围配置错误(核心原因)

当前appsettings.json中DownstreamApi:Scopes仅配置了openid profile,这两个是用于身份验证的ID Token范围,不包含调用Microsoft Graph获取用户信息的权限。需要添加User.Read委托权限:

"DownstreamApi": {
  "BaseUrl": "https://graph.microsoft.com/v1.0",
  "Scopes": "openid profile User.Read"
}

2. 在Azure AD门户配置并授予权限

  • 登录Azure AD门户,找到你的单租户应用注册
  • 进入API权限页面,点击添加权限,选择Microsoft Graph → 委托权限,搜索并添加User.Read权限
  • 点击授予管理员同意(单租户环境下,管理员同意后所有用户均可使用该权限)

3. 验证Token与API调用

重启应用后重新登录,此时获取的Access Token会包含User.Read权限,调用_graphServiceClient.Me.Request().GetAsync()即可成功获取用户信息(包括显示名称、邮箱、头像等)。

4. 可选:直接从ID Token读取Claims(无需调用Graph API)

如果不需要额外的用户信息,可直接从已登录用户的Claims中提取数据,无需调用Graph,示例代码:

// 在HomeController.Profile方法中
var displayName = User.Claims.FirstOrDefault(c => c.Type == "name")?.Value;
var email = User.Claims.FirstOrDefault(c => c.Type == "preferred_username")?.Value;
var avatarUrl = User.Claims.FirstOrDefault(c => c.Type == "picture")?.Value;

内容的提问来源于stack exchange,提问作者user20207

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 14:55:25