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

在.NET Core中使用Azure.Identity时如何获取TenantId、ClientId等凭据?

解答

核心结论

  • 无法从实例化后的DefaultAzureCredential对象中直接获取租户ID、客户端ID、密钥这类属性,该类是Azure Identity封装的聚合凭据抽象,设计上不会暴露底层认证源的配置与敏感信息。
  • 启用系统托管标识的Azure App Service运行时会自动注入预置环境变量,你可以直接读取相关参数:
    • 租户ID对应环境变量:AZURE_TENANT_ID
    • 客户端ID对应环境变量:AZURE_CLIENT_ID
    • 注意:系统托管标识的认证凭据由Azure平台自动托管、定期轮换,不会对外暴露明文密钥,因此MongoDB驱动要求传入客户端密钥的Azure KMS配置方案,不适用于托管标识场景。

最优实现方案

你给出的变通方案完全适配当前场景:先用托管标识权限拉取Key Vault中存储的主密钥,再将主密钥作为本地KMS提供方的参数传给MongoDB驱动,全程无需硬编码敏感信息,也无需额外维护凭据轮换。

1. 集成Azure Key Vault拉取配置

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((context, config) =>
        {
            var builtConfig = config.Build();
        
            if (context.HostingEnvironment.IsProduction() && builtConfig["SystemConfig:UseKeyVault"] == "true")
            {
                Uri kvUri = new(builtConfig["SystemConfig:KeyVaultUri"]);
                var secretClient = new SecretClient(
                    kvUri,
                    new DefaultAzureCredential());
                // 将Key Vault中存储的所有配置项注入应用配置
                config.AddAzureKeyVault(secretClient, new KeyVaultSecretManager());
            }
        })
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });

2. 配置本地KMS提供方

private static Dictionary<string, IReadOnlyDictionary<string, object>> GetLocalKmsProvider(IOptions<MongoDbConfig> configuration)
{
    var localMasterKey = Convert.FromBase64String(configuration.Value.MasterKey);
    var localKey = new Dictionary<string, object>
    {
        { "key", localMasterKey }
    };

    var kmsProviders = new Dictionary<string, IReadOnlyDictionary<string, object>>();
    kmsProviders.Add("local", localKey);
    return kmsProviders;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:42:01