You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何为Azure AD注册的应用授予Microsoft Fabric服务权限?调用Fabric API遇空响应或401错误求助

如何为Azure AD注册的应用授予Microsoft Fabric服务权限?调用Fabric API遇空响应或401错误求助

我按照微软的文档一步步搭建了调用Microsoft Fabric API的应用,但现在遇到了权限相关的问题,想请大家帮忙排查:

已完成的操作步骤

步骤1:在Azure AD中注册应用

  1. 登录Azure门户,进入Microsoft Entra ID(Azure AD) > 应用注册
  2. 点击**+ 新注册**,填写信息:
    • 名称:例如FabricAPIApp
    • 支持的账户类型:选择「仅限此组织目录中的账户」
  3. 点击注册完成创建

获取必要的配置值

  • 应用(客户端)ID → 后续作为APP_ID使用
  • 目录(租户)ID → 认证时需要用到
  • 对象ID(主要用于权限配置环节)

步骤2:创建客户端密钥(使用客户端凭证流时)

  1. 在已注册的应用详情页,进入证书和机密
  2. 点击**+ 新建客户端密钥**
  3. 设置过期时间(比如1年),点击添加
  4. 务必安全复制并保存生成的客户端密钥值(即CLIENT_SECRET

步骤3:配置Fabric工作区角色

在Microsoft Fabric的目标工作区中,我给要使用API的用户分配了参与者角色

步骤4:获取访问令牌

我用以下Python代码成功获取了认证令牌:

%pip install msal
import msal

CLIENT_ID = ""
CLIENT_SECRET= ""
AUTHORITY = "https://login.microsoftonline.com/<TENANT_ID>"
SCOPES = ["https://api.fabric.microsoft.com/.default"]

app = msal.ConfidentialClientApplication(
    CLIENT_ID,
    authority=AUTHORITY,
    client_credential=CLIENT_SECRET
)

result = app.acquire_token_for_client(scopes=SCOPES)

if "access_token" in result:
    access_token = result["access_token"]
    print("[+] Token obtained.")
else:
    print("[-] Error getting token:", result.get("error_description"))
    exit()

遇到的问题

令牌获取成功后,我调用Fabric的获取工作区接口:

import requests

headers = {
    "Authorization": f"Bearer {access_token}",
    "Content-Type": "application/json"
}

url = "https://api.fabric.microsoft.com/v1/workspaces"
response = requests.get(url, headers=headers)

if response.status_code == 200:
    print("[+] Response:", response.json())
else:
    print(f"[-] Error: {response.status_code} - {response.text}")

结果返回[+] Response: {'value': []},调用其他Fabric接口则直接返回401未授权错误。

查官方文档后得知,应用需要Workspace.Read.AllWorkspace.ReadWrite.All的委托权限,但我在Azure Portal的「API权限」面板里,无论怎么搜索都找不到和Fabric相关的权限选项——试过在Azure AD门户的应用API权限页面查找,同样没有结果。

有没有人知道该怎么给Azure AD注册的应用授予Microsoft Fabric的API权限?


备注:内容来源于stack exchange,提问作者Cerbero

火山引擎 最新活动