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 的网络与访问策略决定。

相关文章