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

如何在C#中通过应用注册实现PowerBI工作区TOM身份验证?

使用应用注册(客户端ID+密钥)验证Power BI Premium工作区身份

前置准备

  • 在Azure AD中完成应用注册,记录租户ID、客户端ID、客户端密钥
  • 给应用注册添加Power BI Service权限(如Dataset.Read.All或Workspace.Read.All),并获取管理员同意
  • 安装必要NuGet包:
    • Microsoft.AnalysisServices.Tabular
    • Azure.Identity(用于简化服务主体令牌获取)

修改后的代码实现

using System;
using Microsoft.AnalysisServices.Tabular;
using Azure.Identity;

namespace IrisTabularManagement
{
    public class TabularModel
    {
        private readonly string _workspaceConnection;
        private readonly string _tenantId;
        private readonly string _clientId;
        private readonly string _clientSecret;
        private Server _server;

        // 从配置传入凭据(Azure函数中可通过Environment.GetEnvironmentVariable读取应用设置)
        public TabularModel(string workspaceName, string tenantId, string clientId, string clientSecret)
        {
            // Premium工作区的标准连接格式
            _workspaceConnection = $"powerbi://api.powerbi.com/v1.0/myorg/{workspaceName}";
            _tenantId = tenantId;
            _clientId = clientId;
            _clientSecret = clientSecret;
            _server = new Server();
            Connect();
        }

        private void Connect()
        {
            // 使用服务主体获取Power BI API的访问令牌
            var credential = new ClientSecretCredential(_tenantId, _clientId, _clientSecret);
            var tokenRequest = new TokenRequestContext(new[] { "https://analysis.windows.net/powerbi/api/.default" });
            var tokenResult = credential.GetToken(tokenRequest);

            // 用令牌连接到Premium工作区
            _server.Connect(_workspaceConnection, tokenResult.Token);
        }

        public string GetDatasets()
        {
            var result = string.Empty;
            foreach (Database database in _server.Databases)
            {
                result += $"{database.Name}|";
            }
            // 移除末尾多余的竖线(可选优化)
            return result.TrimEnd('|');
        }
    }
}

关键说明

  • 工作区连接格式:必须使用powerbi://api.powerbi.com/v1.0/myorg/{WorkspaceName},替换{WorkspaceName}为你的Premium工作区名称
  • 凭据管理:不要硬编码租户ID、客户端ID和密钥,Azure函数中应通过应用设置存储,用Environment.GetEnvironmentVariable("变量名")读取
  • 权限范围:确保应用注册的权限足够读取数据集元数据,若需要修改操作需添加对应权限并重新授予管理员同意

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:05:22