如何在 .NET Framework 4.7.1 中使用 Azure KeyVault 覆盖 Web.config 值

2024-04-08

如何在 ASP.NET Framework 4.7.1 WebForms 应用程序中实现 Microsoft 的 Azure KeyVault 以覆盖中的值web.config使用 KeyVault 中的值?我确实看到参考资料表明我们需要最低版本的 .NET Framework 4.7.1 才能做到这一点,但 Microsoft 提供的示例适用于 .NET Core。我的配置为web.config文件而不是appsettings.json。我也有Global.asax.cs文件而不是Startup.cs and Program.cs.


要在 ASP.NET Framework 4.7.1 WebForms 应用程序中实现 Microsoft 的 Azure KeyVault,首先需要创建一个 Azure Key Vault。

  • 您需要提供一个资源组、唯一名称和位置,然后 单击“查看+创建”。
  • 可以参考创建Azure keyvault的步骤 这里>>(https://learn.microsoft.com/en-us/azure/key-vault/quick-create-portal https://learn.microsoft.com/en-us/azure/key-vault/quick-create-portal)
  • 接下来选择 Secrets 边栏选项卡并添加您的应用程序设置和 可以在 web.config 文件中访问的连接字符串。你可以 单击生成/导入按钮并选择上传选项 手动的。然后配置您的应用程序设置和连接字符串 - 名称和值选项的键和值。并保留其他选项 作为默认值。

ASP.NET 中的配置生成器提供了一种修改和/或覆盖来自配置文件 (Web.config 在 ASP.NET 的情况下)通过使用不同的源(环境 变量、Key Vault 等)。

连接到 Azure 密钥保管库:

  • To connect to Azure Key Vault from Visual Studio, you need to right click on the project and select Add > Connected Service menu. enter image description here

  • 从选项中,选择“使用 Azure Key Vault 保护机密”选项。

  • Now you may need to sign in if not already signed in to your account and then select rquired key vault from the list. enter image description here

  • 然后单击“添加”按钮将密钥保管库引用添加到您的 应用。这将添加 NuGet 包的引用 Microsoft.Configuration.ConfigurationBuilders.Azure 到项目。

它还会在 Web.Config 文件中添加一些配置。

(OR)

  • 在“解决方案资源管理器”中,右键单击您的项目,然后选择“管理” NuGet 包。在“浏览”选项卡中,找到并安装 Microsoft.Configuration.ConfigurationBuilders.Azure

打开你的网络配置文件,并写入以下代码:

a) 使用您的 keyvault 名称添加 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"];
    }

通过这种方式,如果您运行的应用程序使用 .NET Framework 4.7 或更高版本,则可以在经典 ASP.NET MVC 应用程序中连接和使用 Azure Key Vault。

您可以参考以下文档以获得相同的详细解释:

  • https://learn.microsoft.com/en-us/azure/key-vault/general/vs-key-vault-add-connected-service#added-references-for-aspnet-framework https://learn.microsoft.com/en-us/azure/key-vault/general/vs-key-vault-add-connected-service#added-references-for-aspnet-framework
  • https://dotnetthoughts.net/azure-key-vault-in-aspnet-mvc/ https://dotnetthoughts.net/azure-key-vault-in-aspnet-mvc/帮助您如何在 ASP.NET MVC 应用程序中连接和使用 Azure Key Vault。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 .NET Framework 4.7.1 中使用 Azure KeyVault 覆盖 Web.config 值 的相关文章

随机推荐