问题描述
使用 .NET Azure.Identity 中的 DefaultAzureCredential 认证并连接到Azure Key Vault中, 在Key Vault 的示例中,并没有介绍如何在代码中设置连接到中国区Azure中。
如果直接运行DefaultAzureCredential,会默认连接到Global Azure,那需要如何修改才能连接到China Azure中呢?
问题解答
查看DefaultAzureCredential方法,它可以通过DefaultAzureCredentialOptions来设置 AuthorityHost , 用于指定认证所连接的云环境。
所以,正确的代码应该是:
##1: AAD 认证信息配置为系统环境变量
DefaultAzureCredentialOptions options = new DefaultAzureCredentialOptions() { AuthorityHost = AzureAuthorityHosts.AzureChina };
//Setting your AZURE_TENANT_ID/AZURE_CLIENT_ID/AZURE_CLIENT_SECRET in system environments
var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential(options));
##2:或者是通过代码直接传递AAD信息, 则可以使用 ClientSecretCredential
string tenantId = "xxxxxxxx-xxxx-xxxx-xxxx- xxxxxxxxxxxx";
string clientId= " xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
string clientSecret= "***************";
DefaultAzureCredentialOptions options = new DefaultAzureCredentialOptions() { AuthorityHost = AzureAuthorityHosts.AzureChina };
var client = new SecretClient(new Uri(kvUri), new ClientSecretCredential(tenantId, clientId, clientSecret, options));
参考资料
适用于 .NET 的 Azure 密钥保管库机密客户端库:https://docs.azure.cn/zh-cn/key-vault/secrets/quick-create-net?tabs=azure-cli
DefaultAzureCredential :https://learn.microsoft.com/en-us/dotnet/api/azure.identity.defaultazurecredential?view=azure-dotnet#definition
DefaultAzureCredentialOptions :https://learn.microsoft.com/en-us/dotnet/api/azure.identity.defaultazurecredentialoptions?view=azure-dotnet
当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!