問題描述
使用 .NET Azure.Identity 中的 DefaultAzureCredential 認(rèn)證并連接到Azure Key Vault中尖奔, 在Key Vault 的示例中,并沒有介紹如何在代碼中設(shè)置連接到中國區(qū)Azure中讶泰。
如果直接運(yùn)行DefaultAzureCredential,會(huì)默認(rèn)連接到Global Azure困檩,那需要如何修改才能連接到China Azure中呢绳锅?
問題解答
查看DefaultAzureCredential方法,它可以通過DefaultAzureCredentialOptions來設(shè)置 AuthorityHost 典奉, 用于指定認(rèn)證所連接的云環(huán)境躺翻。
所以,正確的代碼應(yīng)該是:
##1: AAD 認(rèn)證信息配置為系統(tǒng)環(huán)境變量
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 密鑰保管庫機(jī)密客戶端庫: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
當(dāng)在復(fù)雜的環(huán)境中面臨問題公你,格物之道需:濁而靜之徐清,安以動(dòng)之徐生假瞬。 云中陕靠,恰是如此!