使用user_impersonation权限访问D365 Business Central遇权限问题
Teams机器人访问Business Central时令牌缺失user_impersonation权限的解决方案
1. 确认Azure AD应用权限配置
- 检查机器人对应的Azure AD应用注册,确保已添加Business Central委托权限
user_impersonation,且完成租户管理员同意(个人微软账户无需此步骤)。权限必须绑定到机器人的应用注册,而非其他关联应用。 - 在「API权限」页面验证权限状态,确认
user_impersonation权限显示为「已授予[租户名称]管理员同意」。
2. 修正令牌请求的范围参数
你当前获取的令牌仅包含Graph权限,需在请求时指定Business Central的范围:
- 使用
@azure/msal-node(yo Teams默认依赖)获取令牌时,调整scopes参数:// 仅请求Business Central权限 const scopes = ["https://api.businesscentral.dynamics.com/user_impersonation"]; // 同时请求Graph用户信息权限+Business Central权限 const scopes = ["User.Read", "https://api.businesscentral.dynamics.com/user_impersonation"]; - 若通过Teams OAuth流程获取令牌,需在授权请求的
scope参数中包含上述Business Central范围。
3. 检查Teams应用配置
- 打开
manifest.json,确认webApplicationInfo中的resource字段设置为https://api.businesscentral.dynamics.com,确保授权流程指向正确的资源。
4. 验证令牌内容
获取令牌后,用jwt.ms解析令牌,查看scp字段是否包含user_impersonation,确认权限已正确注入令牌。
内容的提问来源于stack exchange,提问作者Sigar Dave
相关产品推荐
相关产品推荐

