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

如何在Azure Data Factory Web活动中通过证书获取AAD访问令牌

在Azure Data Factory中使用Key Vault存储的证书获取AAD访问令牌的替代方案

方法1:通过自定义活动(Custom Activity)实现

  • 准备自托管集成运行时(Self-Hosted IR),确保其所在机器可访问Key Vault与AAD
  • 编写C#控制台程序,核心逻辑:
    1. 用Azure.Security.KeyVault.Certificates库从Key Vault读取证书(需确保ADF托管标识或自托管IR标识拥有Key Vault证书读取权限)
    2. 借助Microsoft.Identity.Client库,以证书为凭据构造IConfidentialClientApplication实例
    3. 调用AcquireTokenForClient方法获取目标资源的访问令牌
  • 将编译后的可执行文件上传至Azure Blob Storage,配置ADF的Blob存储链接服务
  • 创建自定义活动,指定可执行文件路径与集成运行时,运行后即可获取令牌,后续可传递给其他活动使用

方法2:借助Azure Function作为中间代理

  • 创建HTTP触发的Azure Function,启用系统分配托管标识,给该标识配置两项权限:
    1. Key Vault的Certificate Get权限,允许读取目标证书
    2. 目标AAD资源的访问权限(需确保服务主体证书可用于请求该资源令牌)
  • 在Function中编写核心代码:
    using Azure.Security.KeyVault.Certificates;
    using Microsoft.Identity.Client;
    
    var client = new CertificateClient(new Uri("https://your-keyvault.vault.azure.net/"), new DefaultAzureCredential());
    var cert = await client.DownloadCertificateAsync("your-cert-name");
    
    var app = ConfidentialClientApplicationBuilder
        .Create("service-principal-client-id")
        .WithTenantId("your-tenant-id")
        .WithCertificate(cert.Value)
        .Build();
    
    var result = await app.AcquireTokenForClient(new[] { "https://target-resource/.default" })
        .ExecuteAsync();
    
    return new OkObjectResult(result.AccessToken);
    
  • 在ADF的Web活动中调用该Function的端点,直接获取返回的访问令牌,还可在Function中添加令牌缓存逻辑减少重复请求

方法3:修正Web活动的证书认证配置(解决之前的失败问题)

如果之前直接用Web活动失败,大概率是配置细节遗漏,按以下步骤调整:

  • 确保ADF的托管标识拥有Key Vault的Certificate Get权限
  • 在ADF中创建Key Vault链接服务,配置完成后,在Web活动的认证选项中选择Client Certificate:
    • 证书字段选择从Key Vault链接服务获取的目标证书
  • 构造AAD令牌请求:
    • 请求URL:https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token
    • 请求方法:POST
    • 请求Body(x-www-form-urlencoded格式):
      • grant_type=client_credentials
      • client_id={服务主体Client ID}
      • scope={目标资源URI}/.default
  • 发送请求后,解析响应中的access_token字段即可得到所需令牌

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 07:18:24