【问题标题】:How to Override Web.config values with Azure KeyVault in .NET Framework 4.7.1如何在 .NET Framework 4.7.1 中使用 Azure KeyVault 覆盖 Web.config 值
【发布时间】:2021-06-23 23:59:05
【问题描述】:

如何在 ASP.NET Framework 4.7.1 WebForms 应用程序中实现 Microsoft 的 Azure KeyVault,以使用来自 KeyVault 的值覆盖 web.config 中的值?我确实看到了我们需要最低版本的 .NET Framework 4.7.1 才能执行此操作的参考资料,但 Microsoft 提供的示例适用于 .NET Core。我的配置是web.config 文件而不是appsettings.json。我也有Global.asax.cs 文件而不是Startup.csProgram.cs

【问题讨论】:

    标签: c# .net-4.0 azure-keyvault .net-4.7.1


    【解决方案1】:

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

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

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

    连接到 Azure Key Vault:

    • 要从 Visual Studio 连接到 Azure Key Vault,您需要正确 单击项目并选择 Add > Connected Service 菜单。

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

    • 如果您尚未登录您的帐户,现在您可能需要登录 然后从列表中选择所需的密钥保管库。

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

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

    (或)

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

    打开您的 web.config 文件,并编写以下代码:

    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。

    您可以参考以下文档进行详细说明:

    【讨论】:

    • 您好,感谢您提供的信息。但是,当web.config 中的键名具有“。”时,如何从 keyvault 获取配置设置?特点?像这样:&lt;add key="DB.StorageConnectionString" value="from key vault" /&gt;。 KeyVault 不支持句点字符,因此我已将其替换为破折号。有没有办法转换来自 KeyVault 的秘密名称,使其与 web.config 中的内容匹配?
    • 参考这个链接stackoverflow.com/questions/59098513/… >这个问题和你问的类似吗?
    • 嗨。我不需要在 KeyVault 中重命名它们。在我获取秘密后需要重命名它们。我基本上需要KeyVaultSecretManager 的等效项,如下所示:docs.microsoft.com/en-us/aspnet/core/security/…。不同之处在于,我需要不传递前缀的选项,而不是 appsettings.json 我有一个 web.config 文件。
    • 所以说在 keyvault 中我有一个名为 DB-StorageConnectionString 的秘密。当我加载该密钥时,我需要将名称转换为 DB.StorageConnectionString 以便找到我的配置文件中的密钥。
    • 你可能想看看这个>>c-sharpcorner.com/article/…
    猜你喜欢
    • 1970-01-01
    • 2023-04-02
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 2020-08-31
    • 2010-12-31
    相关资源
    最近更新 更多