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

如何在控制台应用中用TokenAcquirerFactory实现Graph证书认证

守护应用通过证书获取Graph AccessToken的配置方案

需求背景

我已经搭建了一个守护模式的控制台应用,原本通过appsettings.json里的客户端密钥自动获取Graph AccessToken,同时用证书认证连接ExchangeOnline PowerShell模块修改通讯组列表。现在希望统一使用证书认证,复用Azure门户中已配置的ExchangeOnline证书,减少凭证维护工作量。

配置步骤

1. 修改appsettings.json的凭证配置

将原来的ClientSecret类型凭证替换为Certificate类型,根据证书存储方式选择对应配置:

方式一:使用本地Windows证书存储的证书

适用于将证书导入到本地机器或当前用户证书库的场景:

{
  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "TenantId": "你的Azure AD租户ID",
    "ClientId": "你的应用注册ID",
    "ClientCredentials": [
      {
        "SourceType": "Certificate",
        "CertificateThumbprint": "你的证书指纹(无空格的十六进制字符串)",
        "CertificateStoreLocation": "CurrentUser", // 可选值:CurrentUser/LocalMachine
        "CertificateStoreName": "My" // 固定为"My"(个人证书库)
      }
    ]
  }
}

方式二:使用本地PFX证书文件

适用于通过文件存储证书的场景(比如容器部署):

{
  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "TenantId": "你的Azure AD租户ID",
    "ClientId": "你的应用注册ID",
    "ClientCredentials": [
      {
        "SourceType": "Certificate",
        "CertificateFilePath": "./cert.pfx", // 证书文件的相对或绝对路径
        "CertificatePassword": "PFX证书的保护密码"
      }
    ]
  }
}

2. 确保TokenAcquirerFactory自动加载证书配置

原有的TokenAcquirerFactory初始化代码无需大幅修改,它会自动读取appsettings.json中的证书配置:

var builder = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);

var configuration = builder.Build();
var factory = TokenAcquirerFactory.CreateFromConfiguration(configuration);

// 添加Graph服务(如果需要)
factory.Services.AddMicrosoftGraph();

var app = factory.Build();

3. 关键注意事项

  • Azure AD应用注册配置:必须在Azure门户的应用注册页面,将该证书的公钥(.cer文件)上传到「证书和密码」板块,确保证书指纹与配置中的一致。
  • 证书权限:如果使用本地证书存储(LocalMachine),运行应用的账号需要拥有该证书私钥的读取权限。可通过证书管理器右键证书→「所有任务」→「管理私钥」添加对应账号权限。
  • 证书有效性:确保证书未过期,且包含正确的密钥用法(需要支持数字签名)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 07:55:27