如何使用托管在本地 IIS 上的 Web 应用从 Azure 密钥保管库访问 web.config 中的应用设置和连接字符串等机密

Posted

技术标签:

【中文标题】如何使用托管在本地 IIS 上的 Web 应用从 Azure 密钥保管库访问 web.config 中的应用设置和连接字符串等机密【英文标题】:How can access secrets like app-settings and connection-strings in web.config, from Azure key Vault using a Web-app hosted at on-premise IIS 【发布时间】:2021-11-30 08:55:37 【问题描述】:

我遵循的步骤:

已创建 Azure 云保管库。 在 VS2019 中为项目添加了使用连接服务选项的依赖项以及所需的包和配置。 将 ConfigBuilder 添加到 Web.config 将 ConfigBuilders 应用于 appsettings <configBuilders><builders><add name="AzureKeyVault" ... omitted <appSettings configBuilders="AzureKeyVault"> 将我的用户的权限添加到 Azure Key Vault 的访问策略中

现在它在我的本地 VS2019 iis-express 中运行良好,但是当我将它部署到本地 iis 服务器时它无法运行。

我觉得这可能是由于 Key Vault 的访问策略限制而发生的。现在我不确定它如何与本地 IIS Web 应用程序一起使用。

【问题讨论】:

【参考方案1】:

我假设您使用的是 DefaultCredentials 身份验证代码。当你在 VS2019 中访问 Key Vault 时,它会使用你的 Azure 凭据。当您部署到 IIS 时,您没有 MSI 也没有任何 Azure 凭据,因此它需要一个明确的应用程序 ID/客户端密码。

编辑: AKV 需要证书身份验证才能完成这项工作: https://docs.microsoft.com/en-us/aspnet/core/security/key-vault-configuration?view=aspnetcore-5.0#use-application-id-and-x509-certificate-for-non-azure-hosted-apps

【讨论】:

以上是关于如何使用托管在本地 IIS 上的 Web 应用从 Azure 密钥保管库访问 web.config 中的应用设置和连接字符串等机密的主要内容,如果未能解决你的问题,请参考以下文章

如何为托管在 Azure 上的 Web 应用程序和托管在窗口的 IIS 服务器上的 Web 应用程序使用相同的自定义域?

如何从服务“内部”的代码访问托管在 IIS 中的 WCF 服务的 web.config

如何使用 HTTP 连接通过托管在 IIS 上的 ASP.NET 成员身份保护 ASP.NET Web API [重复]

我无法从 Windows 托管的 Web API 上的 IIS 访问 wkhtmltopdf

从 Windows 应用程序访问托管在 IIS 上的 WCF 服务时出现问题

如何将 Web 服务从 Visual Studio 发布到 IIS?