使用ClientSecret实现C#中Graph认证时遇权限错误求助
解决ClientSecret调用Graph API时的"Either scp or roles claim need to be present in the token"错误
这个错误的核心原因是你用了应用权限模式(ClientSecret),但没有给Azure应用注册配置对应的Graph应用权限并完成管理员同意。
具体修复步骤:
- 登录Azure门户,找到你的应用注册
- 进入「API权限」页面
- 点击「添加权限」→ 选择「Microsoft Graph」→ 切换到「应用权限」标签
- 根据你要调用的Graph接口,勾选对应的应用权限(比如查询用户就选
User.Read.All,读取邮件选Mail.Read等) - 添加权限后,点击页面顶部的「授予管理员同意」(必须由全局管理员或具备权限的角色完成此操作)
代码确认:
你的代码里的scope用https://graph.microsoft.com/.default是正确的,应用权限模式下必须使用这个scope,它会自动包含你给应用配置的所有应用权限。另外要确保:
TENANT_ID是你的租户ID(或租户域名)CLIENT_ID是应用注册的客户端IDVALUE_OF_SECRET是你在应用注册里创建的客户端密钥值(不是密钥ID)
完成上述操作后,重新运行代码应该就能正常调用Graph API了。
内容的提问来源于stack exchange,提问作者Lukas
相关产品推荐
相关产品推荐

