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

使用EmbedApiSample生成PowerBI Embed Token时遇AADSTS70002错误

解决PowerBI Embedded生成Embed Token时的AADSTS70002错误

这个AADSTS70002错误我在做PowerBI Embedded集成时碰到过好多次,本质就是你的控制台应用向Azure AD请求令牌时,没有正确传递必填的client_secret或client_assertion参数。下面是几个针对性的排查和修复步骤:

  • 先确认服务主体的凭据是否有效且配置正确
    首先去Azure AD的服务主体页面,检查你创建的密钥(client_secret)是否过期,或者有没有在生成时正确复制完整的值(毕竟密钥只在创建时显示一次,丢了就得重新生成)。然后核对控制台应用的配置文件(比如appsettings.json)里的ClientSecret字段,确保没有拼写错误、多余空格或者粘贴了错误的内容。示例配置应该是这样的:

    "PowerBIConfig": {
      "ClientId": "你的服务主体Client ID",
      "ClientSecret": "你的服务主体密钥",
      "TenantId": "你的Azure租户ID",
      "WorkspaceId": "PowerBI工作区ID",
      "ReportId": "要嵌入的报表ID"
    }
    
  • 检查获取Azure AD令牌的请求格式
    如果你是手动构建HTTP请求来获取令牌,一定要确保请求体里包含client_secret参数,并且请求的Content-Type设置为application/x-www-form-urlencoded。正确的请求体示例:

    grant_type=client_credentials&resource=https://analysis.windows.net/powerbi/api&client_id=你的ClientID&client_secret=你的密钥
    

    要是用的是Microsoft.Identity.Client(MSAL)库,检查代码里有没有正确传入凭据。比如用密钥认证的话,代码应该是这样的:

    var confidentialClient = ConfidentialClientApplicationBuilder
        .Create(Configuration["PowerBIConfig:ClientId"])
        .WithClientSecret(Configuration["PowerBIConfig:ClientSecret"])
        .WithTenantId(Configuration["PowerBIConfig:TenantId"])
        .Build();
    
    var authResult = await confidentialClient.AcquireTokenForClient(new[] { "https://analysis.windows.net/powerbi/api/.default" })
        .ExecuteAsync();
    

    别漏掉WithClientSecret这一步,很多时候就是这里忘加了导致的错误。

  • 别搞混服务主体密钥和用户密码
    新手容易犯的一个错误:把Azure AD普通用户的登录密码当成了服务主体的client_secret。记住,服务主体是专门给应用程序用的身份,它的密钥是在服务主体的“证书和密码”选项卡下生成的,和用户账号的密码完全不是一回事。

  • 如果用证书认证,要改用client_assertion
    要是你的服务主体是用证书来做身份验证的,那你就不能用client_secret,得生成基于证书的client_assertion参数。用MSAL的话,代码应该改成加载证书的方式:

    var certPath = Path.Combine(Directory.GetCurrentDirectory(), "你的证书文件.pfx");
    var certificate = new X509Certificate2(certPath, "证书密码");
    
    var confidentialClient = ConfidentialClientApplicationBuilder
        .Create(Configuration["PowerBIConfig:ClientId"])
        .WithCertificate(certificate)
        .WithTenantId(Configuration["PowerBIConfig:TenantId"])
        .Build();
    

按照上面的步骤排查,90%以上的情况都能解决这个AADSTS70002错误。如果还是不行,可以再检查一下服务主体的权限是否正确配置(有没有给PowerBI工作区的权限),不过这个错误本身是身份验证阶段的问题,优先解决凭据传递的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:36:41