Postman调用Dynamics 365 BC v2.0 API返回401未授权问题咨询
Dynamics 365 BC v2.0 API AAD认证异常排查方案
剩余401错误(调用业务实体接口无权限)排查项
- 核验AAD应用权限配置:确认Azure Portal中为应用授予的Business Central权限包含
API.ReadWrite.All或更高的实体数据读写权限,仅授予基础Access.Read权限仅支持调用元数据、公司列表类接口,无法访问客户、订单等业务实体数据 - 检查Postman Scope配置:请求Token时的Scope必须设置为
https://api.businesscentral.dynamics.com/.default,使用其他自定义Scope会导致令牌缺失业务数据访问权限 - 修正公司ID传参格式:调用业务实体接口时,括号内的公司ID必须为
/companies接口返回的id字段完整GUID值,且需要用单引号包裹,正确格式示例:
传参格式错误会触发异常鉴权拦截https://api.businesscentral.dynamics.com/v2.0/你的租户域名/production/api/v2.0/companies('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')/customers - 核验JWT角色声明:将获取到的令牌粘贴到JWT解析工具中,检查
roles声明是否包含API.ReadWrite.All等业务数据访问权限,仅配置权限未完成管理员同意的情况下,令牌不会携带对应角色声明 - 确认环境路径配置:生产环境调用路径固定格式为
https://api.businesscentral.dynamics.com/v2.0/{租户域名}/production/api/v2.0,多环境租户需要替换为对应环境标识
历史异常问题说明
令牌iss字段未带/v2.0后缀属于正常现象,商业版AAD租户签发的令牌默认不带该后缀,不影响接口鉴权逻辑
首次出现的401错误为Scope配置缺失导致,官方文档未明确标注必须使用BC资源的.defaultScope,调整后即可获取有效令牌
Internal_CompanyNotFound错误为误将租户ID作为公司ID传入接口导致,替换为/companies接口返回的正确公司ID即可解决
内容的提问来源于stack exchange,提问作者Aidal
相关产品推荐
相关产品推荐

