在ASP.NET Framework 4.7.1 WebForms应用程序中实施Microsoft的Azure KeyVault,首先您需要创建一个Azure Key Vault。
ASP.NET中的配置构建器提供了一种通过使用不同的来源(环境变量、密钥保管库等)来修改和/或覆盖来自配置文件(在ASP.NET的情况下是Web.config)的值的方法。
连接到Azure Key Vault:
要从Visual Studio连接到Azure Key Vault,您需要右键单击项目,然后选择“添加”>“连接服务”菜单。
![enter image description here](https://istack.dev59.com/qet3F.webp)
在选项中,选择“使用Azure Key Vault安全保护秘密”的选项。
![enter image description here](https://istack.dev59.com/vF39t.webp)
现在,如果您尚未登录到您的帐户,请先登录,然后从列表中选择所需的密钥保管库。
![enter image description here](https://istack.dev59.com/sXHWb.webp)
然后,点击“添加”按钮将密钥保管库引用添加到您的应用程序中。这将在项目中添加对NuGet包Microsoft.Configuration.ConfigurationBuilders.Azure的引用。
同时,它还会在Web.Config文件中添加一些配置。
或者,
在解决方案资源管理器中,右键单击您的项目,然后选择管理NuGet包。在浏览选项卡中,找到并安装Microsoft.Configuration.ConfigurationBuilders.Azure。
打开您的web.config文件,并编写以下代码:
a) 使用您的密钥保管库名称,按照下面的方式添加configSections和configBuilders。
<configSections>
<section
name="configBuilders"
type="System.Configuration.ConfigurationBuildersSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
restartOnExternalChanges="false"
requirePermission="false" />
</configSections>
<configBuilders>
<builders>
<add
name="AzureKeyVault"
vaultName="vaultname"
type="Microsoft.Configuration.ConfigurationBuilders.AzureKeyVaultConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Azure, Version=1.0.0.0, Culture=neutral"
vaultUri="https://vaultname.vault.azure.net" />
</builders>
</configBuilders>
b) 找到appSettings标签,添加一个属性configBuilders="AzureKeyVault",并添加以下行:
<appSettings configBuilders="AzureKeyVault">
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="TextAnalyticsKey" value="from key vault" />
</appSettings>
<connectionStrings configBuilders="AzureKeyVault">
<add name="DefaultConnection" connectionString="from key vault" providerName="System.Data.SqlClient" />
<add key="StorageConnectionString" value="from key vault" />
</connectionStrings>
c)编辑HomeController.cs中的About方法,以显示确认的值。
public ActionResult About()
{
ViewBag.Message = "Key vault value = " + ConfigurationManager.AppSettings["TextAnalyticsKey"];
}
这样,您可以在经典的ASP.NET MVC应用程序中连接和使用Azure Key Vault,如果您的应用程序运行时使用的是.NET Framework 4.7或更高版本。
以下文件可以详细解释相同的内容:
- [链接1](https://learn.microsoft.com/en-us/azure/key-vault/general/vs-key-vault-add-connected-service#added-references-for-aspnet-framework)
- [链接2](https://dotnetthoughts.net/azure-key-vault-in-aspnet-mvc/) 可以帮助您在ASP.NET MVC应用程序中连接和使用Azure Key Vault。
web.config
中的密钥名称包含'.'字符时,如何从键库中获取配置设置呢?例如:<add key="DB.StorageConnectionString" value="from key vault" />
。KeyVault不支持句点字符,因此我已将其替换为破折号。是否有一种方法可以转换来自KeyVault的密钥名称,使其与web.config
中的内容相匹配? - BmoeKeyVaultSecretManager
的等效物:https://learn.microsoft.com/en-us/aspnet/core/security/key-vault-configuration?view=aspnetcore-3.1#use-a-key-name-prefix。不同之处在于,我需要选项来不传递前缀,而是使用web.config
文件代替appsettings.json
。 - Bmoe