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

使用Client Secret访问Dynamics Business Central出现身份验证报错问题

问题排查与解决方案
  • 首先确认Postman的认证逻辑:如果Postman测试时使用的是用户账号身份(如授权码流、密码流),和你代码中使用的服务端应用身份(客户端凭证流)属于完全不同的认证主体,二者权限互相独立,Postman调用正常无法证明应用身份配置正确。
  • 检查Azure AD应用注册的权限配置:你当前使用的客户端凭证流属于服务到服务认证,必须在Azure门户的应用注册中为应用添加Dynamics 365 Business Central的应用程序权限(不要选委托权限),添加完成后必须点击「授予管理员同意」完成权限激活,否则获取到的令牌不会包含所需的权限声明。
  • 确认Business Central侧的应用用户配置:仅在Azure AD中配置权限不够,需要进入Business Central管理中心,在「用户」页面新建应用用户,绑定你注册的Azure AD应用ID,同时为该应用用户分配访问公司数据所需的权限集,缺少这一步会直接返回客户端凭据被拒绝的错误。
  • 校验请求参数正确性:
    1. 确认你Business Central的实际环境名称是否为Production,如果是沙箱环境或自定义命名的环境,需要替换请求URL中的Production为实际环境名
    2. 确认填写的TenantId为Azure AD的实际租户ID(GUID格式),而非租户域名
  • 校验令牌有效性:可以在代码中打印result.AccessToken,将其粘贴到JWT解析工具中校验:
    1. aud声明值应为https://api.businesscentral.dynamics.com
    2. roles声明中应包含你分配的Business Central对应权限(如API.ReadWrite.All),如果没有该声明则说明权限配置有误
  • 代码优化建议:HttpClient属于重资源,不建议每次调用都新建实例,建议使用静态单例或依赖注入的方式复用实例,避免端口占用问题。另外建议使用await异步调用代替.Result,避免线程阻塞和死锁风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:48:04