如何从本地 asp.net 应用程序在 Azure Key Vault 中设置机密
How to set a secret in Azure Key Vault from a local asp.net application
我有一个本地 asp.net 核心 3.1 应用程序,我想在 Azure Key Vault 中设置机密。以下是我使用的微软代码:
string secretName = "xxSecret";
string keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = "https://" + keyVaultName + ".vault.azure.net";
var secretClient = new SecretClient(new Uri(kvUri), new DefaultAzureCredential());
string secretValue = "test";
secretClient.SetSecret(secretName, secretValue);
KeyVaultSecret secret = secretClient.GetSecret(secretName);
当我尝试设置机密时,我在 Postman 中收到以下错误:
Azure.Identity.AuthenticationFailedException: DefaultAzureCredential authentication failed.
---> Azure.Identity.AuthenticationFailedException: SharedTokenCacheCredential authentication failed.
---> Microsoft.Identity.Client.MsalServiceException: AADSTS70002: The client does not exist or is not
enabled for consumers. If you are the application developer, configure a new application through the
App Registrations in the Azure Portal
我不想注册这个应用程序,但我想在本地调试它。我猜问题是我没有设置正确的访问策略。如何授予我的本地应用程序访问权限?
(在我 运行 本地应用程序之前,我使用 Azure PowerShell 对我的 Azure 目录进行身份验证。)
How do I grant my local app access?
对于本地开发,AzureServiceTokenProvider
使用 Visual Studio、Azure CLI 或 Azure AD 集成身份验证获取令牌。每个选项都按顺序尝试,库使用第一个成功的选项。
使用Visual Studio进行身份验证:
登录 Visual Studio 并使用 Tools
> 选项打开 Options
。
SelectAzure Service Authentication
,选择本地开发账号,selectOK
.
在 Azure 上,您需要转到您的 Azure 密钥保管库。单击 Access Policies
并添加您的帐户,该帐户与之前使用 获取和设置权限 的密码登录相比。
然后你可以使用你的代码来获取秘密值。
您也可以使用 AzureServiceTokenProvider
来获得秘密,而无需初始化您的秘密值。
var KeyVaultUrl = "https://xxx.vault.azure.net/secrets/xxx/xxxxxxxxxxxxxx";
AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
var secret = keyVaultClient.GetSecretAsync(KeyVaultUrl).Result.Value;
我有一个本地 asp.net 核心 3.1 应用程序,我想在 Azure Key Vault 中设置机密。以下是我使用的微软代码:
string secretName = "xxSecret";
string keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = "https://" + keyVaultName + ".vault.azure.net";
var secretClient = new SecretClient(new Uri(kvUri), new DefaultAzureCredential());
string secretValue = "test";
secretClient.SetSecret(secretName, secretValue);
KeyVaultSecret secret = secretClient.GetSecret(secretName);
当我尝试设置机密时,我在 Postman 中收到以下错误:
Azure.Identity.AuthenticationFailedException: DefaultAzureCredential authentication failed.
---> Azure.Identity.AuthenticationFailedException: SharedTokenCacheCredential authentication failed.
---> Microsoft.Identity.Client.MsalServiceException: AADSTS70002: The client does not exist or is not
enabled for consumers. If you are the application developer, configure a new application through the
App Registrations in the Azure Portal
我不想注册这个应用程序,但我想在本地调试它。我猜问题是我没有设置正确的访问策略。如何授予我的本地应用程序访问权限?
(在我 运行 本地应用程序之前,我使用 Azure PowerShell 对我的 Azure 目录进行身份验证。)
How do I grant my local app access?
对于本地开发,AzureServiceTokenProvider
使用 Visual Studio、Azure CLI 或 Azure AD 集成身份验证获取令牌。每个选项都按顺序尝试,库使用第一个成功的选项。
使用Visual Studio进行身份验证:
登录 Visual Studio 并使用 Tools
> 选项打开 Options
。
SelectAzure Service Authentication
,选择本地开发账号,selectOK
.
在 Azure 上,您需要转到您的 Azure 密钥保管库。单击 Access Policies
并添加您的帐户,该帐户与之前使用 获取和设置权限 的密码登录相比。
然后你可以使用你的代码来获取秘密值。
您也可以使用 AzureServiceTokenProvider
来获得秘密,而无需初始化您的秘密值。
var KeyVaultUrl = "https://xxx.vault.azure.net/secrets/xxx/xxxxxxxxxxxxxx";
AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
var secret = keyVaultClient.GetSecretAsync(KeyVaultUrl).Result.Value;