asp.net - 具有 Azure Key Vault 的本地 ASP.NET Framework Web 应用程序

标签 asp.net visual-studio-2019 azure-keyvault

我们正在尝试保护内部 ASP.NET Framework Web 应用程序中的应用程序 secret 。向我提供的最初计划是使用 Azure Key Vault。我开始使用 Visual Studio Enterprise 订阅进行开发工作,这在本地似乎运行良好。

我们在公司的生产环境中创建了第二个 Key Vault,而且我可以在本地使用它,因为我自己的 AAD 帐户可以访问该保管库。然而,在这个项目(4.7.2 Web Forms Web 应用程序)中,我没有看到任何指定我们为应用程序创建的访问策略主体的方法。

我的 google-fu 失败了:是否有任何文档解释如何执行此操作?这种情况(Azure 环境之外的本地 ASP.NET Framework 应用程序访问 Key Vault 以获取配置值)是否可能?

谢谢。

更新:我无法找到允许我在“添加连接服务”对话框中使用访问策略主体的解决方案。我有点惊讶它不在那里,或者隐藏得足以让我躲避。所以我最终编写了自己的 Key Vault Secret-Reader 函数,类似于标记的答案。希望这对某人有帮助...

最佳答案

在这种情况下,您的选择是使用服务主体来访问 keyvault,请按照以下步骤操作,我的示例从 keyvault 获取 key 。

1. Register an application with Azure AD and create a service principal .

2. Get values for signing increate a new application secret .

3.导航至门户中的 key 保管库 -> Access policies -> 为服务主体添加正确的 secret 权限。

4.然后使用下面的代码,替换<client-id> , <tenant-id> , <client-secret>与之前获得的值。

using System;
using Microsoft.Azure.KeyVault;
using Microsoft.Azure.Services.AppAuthentication;

namespace test1
{
    class Program
    {
        static void Main(string[] args)
        {
            var azureServiceTokenProvider = new AzureServiceTokenProvider("RunAs=App;AppId=<client-id>;TenantId=<tenant-id>;AppKey=<client-secret>");
            var kv = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
            var secret = kv.GetSecretAsync("https://keyvaultname.vault.azure.net/", "mySecret123").GetAwaiter().GetResult();
            Console.WriteLine(secret);

        }
    }
}

enter image description here

关于asp.net - 具有 Azure Key Vault 的本地 ASP.NET Framework Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64268193/

相关文章:

c# - Html.ListBoxFor() 的 ASP.NET MVC 问题

c# - 在 C# 中删除 QueryString 变量

visual-studio - 重新加载 Web 项目时,Visual Studio 2019 值不在预期范围内

c++ - 导入 .TLB 文件给出 "cannot open source file x.tlh"

visual-studio - TFS:如何在 Visual Studio 2019 中添加撤消更改操作?

azure - 在 Visual Studio 中运行时无法访问 KeyVault

jquery - .click() 不起作用。 jQuery

c# - Web服务中的Web方法属性是什么?

azure - 无论如何,是否可以使用 Bicep 或 ARM 将 PFX SSL 证书文件作为证书导入到 Azure Key Vault

azure - 从.net core应用程序的appsetting中访问KV中的 secret 值