gpt4 book ai didi

azure - Azure Key Vault 的 MSI 身份验证无法在本地使用 VS 2017 和 IISExpress

转载 作者:行者123 更新时间:2023-12-02 23:18:41 24 4
gpt4 key购买 nike

我已经实现了一个使用 Azure Key Vault 作为加密 key 的解决方案。我已遵循 https://learn.microsoft.com/en-us/azure/app-service/app-service-managed-service-identity 文档中的建议了解如何使用托管服务标识向 Azure Key Vault 验证我的应用服务。我的应用服务是一个 asp.net core 2.1 应用程序。

当我将应用程序服务发布到我的 Azure 订阅时,这是有效的,因此我确信实现是正确的。问题是在本地运行代码并尝试使用 MSI 连接到 Azure Key Vault 似乎并不像宣传的那样对我有用。

我正在运行 Visual Studio 2017 版本 15.8.5。我使用 Azure Active Directory 的企业身份登录 VS(即 sbraswell@myemployer.com)。不过,我正在使用的 Azure 订阅是我的 MSDN 合作伙伴权益的一部分,并且与我的 Microsoft 帐户 (MSA)(即 something@hotmail.com)相关联。我已向我的公司 AAD 身份“所有者”角色授予我的订阅权限。我能够以我的企业身份登录 Azure 门户,并访问与我的 MSA 帐户关联的 Azure 订阅的所有方面。

获取 Azure Key Vault 的访问 token 时,以下代码不会引发异常:

var tokenProvider = new 
Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProvider();
var token = await tokenProvider.GetAccessTokenAsync(resource);
return token;

当我尝试从保管库解析特定加密 key 时,此代码引发异常:

var keyEncryptionKey = await cloudResolver.ResolveKeyAsync(keyId, CancellationToken.None)

抛出的异常是:

Microsoft.Azure.KeyVault.Models.KeyVaultErrorException: Operation returned an invalid status code 'Unauthorized'
at Microsoft.Azure.KeyVault.KeyVaultClient.GetKeyWithHttpMessagesAsync(String vaultBaseUrl, String keyName, String keyVersion, Dictionary`2 customHeaders, CancellationToken cancellationToken)
at Microsoft.Azure.KeyVault.KeyVaultClientExtensions.GetKeyAsync(IKeyVaultClient operations, String keyIdentifier, CancellationToken cancellationToken)

我希望能够使用 MSI 进行身份验证来部署解决方案,这样我们就不必创建充当应用服务和 Key Vault 之间中介的 Active Directory 应用程序。我们最终必须将应用程序 ID 和应用程序 key 放入我们的应用程序服务配置中,并且通过 MSI,我们无需管理这两个额外的敏感数据。

预先感谢您提出的任何建议。

更新

我已确认,如果我使用属于与我的公司 AAD 帐户关联的订阅的 Key Vault,则 VS 的 MSI 身份验证可以正常工作,不会出现异常。我的配置一定有问题。还有其他人在使用 Microsoft 合作伙伴网络 Visual Studio Enterprise 订阅 Azure 权益时遇到此问题吗? MS 的身份管理是 MesS :(

最佳答案

使用 Azure Key Vault 服务在 Visual Studio 中进行本地开发取决于“Azure 服务身份验证扩展”https://marketplace.visualstudio.com/items?itemName=chrismann.MicrosoftVisualStudioAsalExtension#overview从 15.6 版开始就集成到 Visual Studio 中,无需单独安装。

检查 Visual Studio/Tools/Options/Azure Services Authentication 以查看您使用哪个帐户在 Azure 服务中进行身份验证并进行适当的设置。

此外,在应用程序中安装 NuGet 数据包 Microsoft.Azure.Services.AppAuthentication。

关于azure - Azure Key Vault 的 MSI 身份验证无法在本地使用 VS 2017 和 IISExpress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52482798/

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