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

如何使用客户端密钥生成Fabric Rest API令牌?

使用客户端密钥实现Fabric API的无交互认证

问题分析

你当前采用的是交互式认证流程(AcquireTokenInteractive),依赖手动登录弹窗完成认证,无法适配后台API调用的无交互场景。而Postman用客户端密钥生成的令牌调用API失败,核心原因大概率是权限配置错误或令牌请求参数不符合要求。

解决方案:改用客户端凭据认证流程

直接通过客户端密钥(Client Secret)采用客户端凭据模式获取令牌,全程无需用户交互,具体步骤如下:

1. 确认Azure AD应用配置

确保你的应用注册已完成以下配置:

  • 在API权限中添加Fabric相关的应用权限(注意是「应用权限」而非「委托权限」),例如Workspace.ReadWrite.All、Item.ReadWrite.All,且已获得管理员同意。
  • 已生成并保存有效的客户端密钥(密钥值仅在创建时可见,需妥善留存)。

2. C#代码实现无交互令牌获取

替换原交互式认证代码,使用ConfidentialClientApplication实现客户端凭据模式:

using Microsoft.Identity.Client;
using System;
using System.Threading.Tasks;

class FabricApiAuth
{
    static async Task Main(string[] args)
    {
        // 参数配置
        string clientId = "你的客户端ID";
        string clientSecret = "你的客户端密钥";
        string tenantId = "你的租户ID"; // 替换为具体租户ID,或保留"organizations"
        string authority = $"https://login.microsoftonline.com/{tenantId}";
        // 客户端凭据模式必须使用.default范围,自动包含已配置的所有应用权限
        string[] scopes = new string[] { "https://api.fabric.microsoft.com/.default" };

        // 构建机密客户端应用实例
        IConfidentialClientApplication confidentialClient = ConfidentialClientApplicationBuilder
            .Create(clientId)
            .WithClientSecret(clientSecret)
            .WithAuthority(new Uri(authority))
            .Build();

        // 获取无交互令牌
        AuthenticationResult result = await confidentialClient.AcquireTokenForClient(scopes)
            .ExecuteAsync()
            .ConfigureAwait(false);

        Console.WriteLine("获取的访问令牌:");
        Console.WriteLine(result.AccessToken);
    }
}

3. 关键注意事项

  • 范围参数要求:客户端凭据模式下,范围必须设置为https://api.fabric.microsoft.com/.default,不能像交互式场景那样指定单个权限范围,该值会自动映射你在Azure AD中配置的所有应用权限。
  • 权限类型限制:必须使用「应用权限」,委托权限仅适用于用户交互式登录场景,客户端凭据模式无法调用。
  • 租户ID优化:建议使用具体的租户ID(可在Azure AD租户概览页面获取),比organizations更稳定,避免多租户环境下的认证歧义。

4. Postman调用失败排查

若Postman仍返回Bad Request,检查以下内容:

  • 请求URL:确认是POST https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token
  • 请求参数:
    • grant_type:必须设为client_credentials
    • client_id:你的应用注册ID
    • client_secret:你的客户端密钥
    • scope:必须是https://api.fabric.microsoft.com/.default
  • 权限验证:再次确认应用权限已正确添加并获得管理员同意,且权限范围与Fabric API的需求匹配。

内容的提问来源于stack exchange,提问作者Dharmendra Kumar Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:52:50