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

本地开发C# Azure函数用VisualStudioCredential获取令牌遇AADSTS65001错误

本地Azure函数连Dataverse:解决AADSTS65001令牌获取错误

你当前代码的核心问题是:TokenRequestContext传入的是托管标识的Client ID,这不符合要求——要获取Dataverse的访问令牌,必须传入Dataverse实例的API权限范围,而非托管标识自身的ID,这是触发AADSTS65001错误的主要原因。

下面是具体修复步骤:

1. 修正令牌请求的资源参数

将代码中的资源替换为你的Dataverse实例的默认权限范围,格式为:https://<你的组织域名>.crm.dynamics.com/.default

修正后的代码:

var vsCred = new VisualStudioCredential();
var tok = await vsCred.GetTokenAsync(
    new TokenRequestContext(new[] { "https://your-org-domain.crm.dynamics.com/.default" }), 
    default
);

2. 检查Visual Studio登录账号的权限

  • 确保你在VS中登录的Azure账号,直接拥有Dataverse的访问权限(比如在Dataverse中分配了系统管理员、系统定制员等安全角色)
  • 若依赖托管标识权限访问,需确认该托管标识已被添加到Dataverse的安全角色中,同时你的VS登录账号在Azure AD中拥有「托管标识操作员」角色,可代表托管标识获取令牌

3. 核对Azure AD权限配置

  • 给托管标识配置的必须是Dataverse的对应权限,且区分权限类型:
    • 本地调试使用委派权限时,需确保管理员已对该权限授予用户同意(而非仅管理员同意,因为本地调试是通过你的用户身份发起请求)
    • 若使用应用权限,需确保管理员已授予管理员同意,但此时本地调试应切换为ManagedIdentityCredential而非VisualStudioCredential(应用权限更适配生产环境的托管标识,本地调试用委派权限+个人用户身份更顺畅)

4. 重置Visual Studio令牌缓存

若上述步骤无效,可尝试清除VS的令牌缓存:

  • 关闭Visual Studio
  • 删除路径C:\Users\<你的用户名>\AppData\Local\.IdentityService下的所有文件
  • 重新打开VS并登录Azure账号,再次测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 03:51:35