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

如何以服务主体身份在ASP.NET Core Web API中认证Power BI?

Power BI服务主体认证ASP.NET Core Web API失败问题解决

背景

  • 开发Power BI报表,每日从自研的ASP.NET Core Web API获取数据,API基于OAuth2认证框架,Swagger测试正常。
  • 原使用基本认证(用户名密码)可正常运行,现需提升安全性,切换为服务主体认证,推测Power BI服务主体认证底层采用OAuth2客户端凭证流。

已完成配置

  1. Power BI端操作路径:Power BI => 工作区 => 语义模型 => 设置 => 数据源凭据 => 编辑凭据
  2. Entra ID应用注册配置:
    • 添加了所需的各类API权限
    • 将应用注册加入Power BI安全组并赋予管理员权限
    • 安全组及应用注册本身均已加入目标工作空间并拥有管理员权限

报错信息

Failed to update data source credentials.

解决步骤

1. 补充OAuth2关键配置信息

Power BI需明确OAuth2认证的核心参数:

  • 令牌生成URL:格式为 https://login.microsoftonline.com/[Azure租户ID]/oauth2/v2.0/token
  • Scope:格式为 api://[API应用注册ID]/.default

2. 验证服务主体的API权限配置

  • 确保Entra ID中服务主体已被授予ASP.NET Core Web API的应用权限(而非委派权限)
  • 确认该应用权限已完成管理员同意操作

3. 修正Power BI数据源凭据配置

在编辑凭据时,选择「OAuth2服务主体」类型,准确填入:

  • 租户ID
  • 服务主体的客户端ID(应用注册ID)
  • 服务主体的客户端密钥
  • 令牌端点URL(即上述的令牌生成URL)
  • 正确的Scope值

4. 独立验证服务主体的令牌获取与API访问

使用curl或Postman模拟客户端凭证流,验证服务主体能否正常获取API令牌:

curl -X POST https://login.microsoftonline.com/[你的租户ID]/oauth2/v2.0/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials&client_id=[服务主体客户端ID]&client_secret=[服务主体客户端密钥]&scope=api://[API应用ID]/.default"

若能获取有效令牌,进一步测试用该令牌调用API,排查是否为API端认证逻辑问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 17:30:54