Azure Key Vault .NET: シークレットとトークン要求のプロキシ設定
どちらの要求経路を開始する前でも、同じ Azure Core トランスポートを SecretClientOptions と ClientSecretCredentialOptions に割り当てます。
var handler = new System.Net.Http.HttpClientHandler
{
UseProxy = true,
Proxy = new System.Net.WebProxy(
"http://proxy.example.net:8080")
};
var transport = new Azure.Core.Pipeline.HttpClientTransport(handler);
var credential = new Azure.Identity.ClientSecretCredential(
tenantId, clientId, clientSecret,
new Azure.Identity.ClientSecretCredentialOptions
{
Transport = transport
});
var vault = new Azure.Security.KeyVault.Secrets.SecretClient(
new Uri(vaultUrl),
credential,
new Azure.Security.KeyVault.Secrets.SecretClientOptions
{
Transport = transport
});アプリケーションの実際の vaultUrl、tenantId、clientId、clientSecret を使用します。二つの Transport = transport の代入は意図的です。一方がトークン取得を、もう一方が Key Vault のシークレット要求を経路指定します。
vaultUrl は実際の保管庫エンドポイントのままにします。ハンドラーの WebProxy が中間プロキシを保持し、保管庫のネットワークポリシーがその経路を許可する場合、公開 HTTP 候補がHTTP プロキシ一覧で利用できます。ネットワークが要求する場合は、クライアントを構築する前にその Credentials を構成してください。
クライアントのワークロードにはトランスポートを再利用し、シャットダウン時に所有リソースを破棄します。プロキシ接続が成功しても経路が確立されるだけで、アプリケーションがシークレットを読めるかどうかは Key Vault のネットワークポリシーとアクセスポリシーが決めます。