gpt4 book ai didi

azure - 无法从 Azure Web App 连接到 Azure Key Vault

转载 作者:行者123 更新时间:2023-12-02 08:31:06 27 4
gpt4 key购买 nike

我正在尝试从我的 Azure 应用服务访问 Azure Key Vault。我按照本文档中概述的步骤进行操作:https://learn.microsoft.com/en-us/azure/key-vault/managed-identity (为应用程序服务打开系统分配的标识,更新 key 保管库的访问策略以包含具有 Get、List secret 权限的应用程序)。

但是,当我运行 Web 应用程序时,它无法从 key 保管库获取 key ,并且我的 Web 服务遇到以下错误:
502 - Web 服务器在充当网关或代理服务器时收到无效响应。您要查找的页面有问题,无法显示。当 Web 服务器(充当网关或代理)联系上游内容服务器时,它从内容服务器收到无效响应。

这就是我的代码的样子:

AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
var secret = keyVaultClient.GetSecretAsync(KeyVaultUrl);
authenticationKey = secret.Result.Value;

服务卡在 Secret.Result.Value 行上。我还需要做些什么吗?

最佳答案

使用新包(例如 Azure.Security.KeyVault.Secrets),这要容易得多。与 Azure.Identity 一起,您只需传递一个 DefaultAzureCredential ,就像我们的 samples 中那样。 .

var client = new SecretClient(
new Uri("https://myvault.vault.azure.net"),
new DefaultAzureCredential());
KeyVaultSecret secret = await client.GetSecretAsync("secret-name");
string authenticationKey = secret.Value;

DefaultAzureCredential 经过优化,适用于托管身份、环境中的服务主体以及交互式登录,以支持在生产和开发人员计算机上运行的相同代码。新库速度更快,分配更少,并且具有更好的诊断功能 - 使用 Azure 应用程序监视器时默认为打开状态。

它们的目标是 netstandard2.0,因此应该与这些替换的旧软件包兼容。你能升级吗?我们仅对旧版软件包进行关键修复,并建议人们升级到 Azure.* 软件包,而不是旧版 Microosft.Azure.* 软件包。

至于问题本身,如果不知道您何时在应用程序中调用它,就很难说。启动期间? .NET 是什么版本?您的 ASP.NET 应用程序框架使用什么?

虽然这可能不是问题的原因,但很难忽视您正在同步调用异步方法,这也可能会导致问题。如果您使用异步方法,则应该像这样编写代码:

var secret = await keyVaultClient.GetSecretAsync(KeyVaultUrl);
authenticationKey = secret.Value;

如果没有,请调用:

var secret = keyVaultClient.GetSecretAsnc(KeyVaultUrl).GetAwaiter().GetResult();

不过,不建议这样做。在我上面提到的新包中,我们有同步和异步版本,它们在整个调用堆栈中都是同步或异步的,并且使用起来更安全。不过,一般来说,您应该使用异步调用 - 特别是对于访问 Key Vault 之类的网络流量,因为根据您调用的线程,它可能会挂起您的 UI。

关于azure - 无法从 Azure Web App 连接到 Azure Key Vault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60962137/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com