joh*_*paz 2 asp.net azure-keyvault visual-studio-2019
我们正在尝试保护内部 ASP.NET Framework Web 应用程序中的应用程序机密。向我提供的最初计划是使用 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 获取密钥。
2.获取登录值并创建新的应用程序密钥。
3.导航到门户中的密钥保管库 -> Access policies-> 为服务主体添加正确的秘密权限。
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3372 次 |
| 最近记录: |