如何从 Azure 应用服务中托管的 .Net Framework Asp.Net 应用程序访问 Azure Key Vault?
How do I access an Azure KeyValut from an .Net Framework Asp.Net application hosted in an Azure App Service?
我对 Azure 比较陌生,我正在努力弄清楚如何将使用集成到我们的遗留应用程序中。没有计划 rewrite/migrate 这些应用程序到 .Net Core。
我有一个 .Net Framework(非核心)Asp.Net Web 应用程序。我将其托管在 Azure 应用服务中。我已经创建了一个 Azure Key Vault 服务和机密。使用应用服务的系统定义标识,我添加了对 Key Vault 实例的访问权限。
如何从 Asp.Net 应用程序访问 Key Vault 和包含的机密?
我见过的几乎所有 examples/samples 都是基于 .Net Core 的。
类似的方法是否适用于 .Net Framework 控制台应用程序?
- ASP.NET 中的配置生成器提供了一种使用
Key Vault
. 修改和覆盖 web.config
文件中的值的方法
实施步骤
将机密添加到 Key Vault - Steps to create Key Vault
重要的是,机密必须与您要替换的应用设置同名。
例如,如果您的 Web.config
文件中有一个带有密钥 MyConnStr
的应用程序设置,则您必须在 Key Vault 中创建一个具有相同名称和相同值的机密。
将您的 Web 应用程序的访问权限授予存储在 Key Vault 中的机密。使用 Web App 的托管身份功能。
一个。在 Web 应用程序上启用系统管理的标识:
b。使用相关权限授予对 Key Vault 上的 Web 应用程序的访问权限
转到您的密钥保管库并导航到左侧导航中的访问策略:
- Select 所需的权限。
- 将以下 NuGet 包添加到您的项目中:
_Microsoft.Azure.KeyVault_
_Microsoft.Azure.KeyVault.WebKey_
_Microsoft.Azure.Services.AppAuthentication_
_Microsoft.Configuration.ConfigurationBuilders.Azure_
_Microsoft.Configuration.ConfigurationBuilders.Base_
_Microsoft.IdentityModel.Clients.ActiveDirectory_
_Microsoft.Rest.ClientRuntime_
_Microsoft.Rest.ClientRuntime.Azure_
- 在
Web.config
中修改 appsettings
和 connectionstrings
标签
<appSettings configBuilders="AzureKeyVault">
<add key="KEY_VAULT_NAME" value="from key vault" />
</appSettings>
<configBuilders>
<builders>
<add name="AzureKeyVault" vaultName="${KEY_VAULT_NAME}" type="Microsoft.Configuration.ConfigurationBuilders.AzureKeyVaultConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Azure, Version=2.0.0.0, Culture=neutral" />
</builders>
</configBuilders>
- 在你的.cs文件中添加,
var MyKey=ConfigurationManger.AppSettings["KEY_VAULT_NAME"];
- 在配置值上添加一个断点,您可以看到应用程序正在从 Azure Key Vault 读取而不是配置文件中提供的值。
更多信息请参考MS Doc。
当我运行在 Azure 应用服务中部署 Web 应用程序时,上述解决方案效果很好。当我尝试在本地 运行 时,出现异常..
Configuration Error Description: An error occurred during the
processing of a configuration file required to service this request.
Please review the specific error details below and modify your
configuration file appropriately.
Parser Error Message: The configBuilder 'AzureKeyVault' failed while
processing the configuration section 'appSettings'.: Error in
Configuration Builder 'AzureKeyVault'::GetValue(AppName)
我对 Azure 比较陌生,我正在努力弄清楚如何将使用集成到我们的遗留应用程序中。没有计划 rewrite/migrate 这些应用程序到 .Net Core。
我有一个 .Net Framework(非核心)Asp.Net Web 应用程序。我将其托管在 Azure 应用服务中。我已经创建了一个 Azure Key Vault 服务和机密。使用应用服务的系统定义标识,我添加了对 Key Vault 实例的访问权限。
如何从 Asp.Net 应用程序访问 Key Vault 和包含的机密? 我见过的几乎所有 examples/samples 都是基于 .Net Core 的。
类似的方法是否适用于 .Net Framework 控制台应用程序?
- ASP.NET 中的配置生成器提供了一种使用
Key Vault
. 修改和覆盖
web.config
文件中的值的方法
实施步骤
将机密添加到 Key Vault - Steps to create Key Vault
重要的是,机密必须与您要替换的应用设置同名。 例如,如果您的
Web.config
文件中有一个带有密钥MyConnStr
的应用程序设置,则您必须在 Key Vault 中创建一个具有相同名称和相同值的机密。将您的 Web 应用程序的访问权限授予存储在 Key Vault 中的机密。使用 Web App 的托管身份功能。
一个。在 Web 应用程序上启用系统管理的标识:
b。使用相关权限授予对 Key Vault 上的 Web 应用程序的访问权限
转到您的密钥保管库并导航到左侧导航中的访问策略:
- Select 所需的权限。
- 将以下 NuGet 包添加到您的项目中:
_Microsoft.Azure.KeyVault_
_Microsoft.Azure.KeyVault.WebKey_
_Microsoft.Azure.Services.AppAuthentication_
_Microsoft.Configuration.ConfigurationBuilders.Azure_
_Microsoft.Configuration.ConfigurationBuilders.Base_
_Microsoft.IdentityModel.Clients.ActiveDirectory_
_Microsoft.Rest.ClientRuntime_
_Microsoft.Rest.ClientRuntime.Azure_
- 在
Web.config
中修改
appsettings
和 connectionstrings
标签
<appSettings configBuilders="AzureKeyVault">
<add key="KEY_VAULT_NAME" value="from key vault" />
</appSettings>
<configBuilders>
<builders>
<add name="AzureKeyVault" vaultName="${KEY_VAULT_NAME}" type="Microsoft.Configuration.ConfigurationBuilders.AzureKeyVaultConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Azure, Version=2.0.0.0, Culture=neutral" />
</builders>
</configBuilders>
- 在你的.cs文件中添加,
var MyKey=ConfigurationManger.AppSettings["KEY_VAULT_NAME"];
- 在配置值上添加一个断点,您可以看到应用程序正在从 Azure Key Vault 读取而不是配置文件中提供的值。
更多信息请参考MS Doc。
当我运行在 Azure 应用服务中部署 Web 应用程序时,上述解决方案效果很好。当我尝试在本地 运行 时,出现异常..
Configuration Error Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.
Parser Error Message: The configBuilder 'AzureKeyVault' failed while processing the configuration section 'appSettings'.: Error in Configuration Builder 'AzureKeyVault'::GetValue(AppName)