访问 Azure KeyVault 中的证书以获取旧版安全令牌服务

Accessing Certificates in Azure KeyVault for Legacy Security Token Service

我们有一些遗留的 Web 表单应用正在尝试迁移到 Azure 应用服务。这些 Web 窗体应用程序使用旧 Microsoft.IdentityModel 和自定义安全令牌服务 (MVC 4) 应用程序进行身份验证。 STS 应用程序使用外部身份提供者并接收 SAML 2.0 工件,构建声明,然后传递给请求应用程序。

随着迁移到 Azure 应用服务,我们自然会使用 KeyVault。但是,以下面的web.config摘录为例:

<issuerNameRegistry type="Microsoft.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
    <trustedIssuers>
      <add thumbprint="some_thumbprint" name="STSTestCert" />
    </trustedIssuers>
  </issuerNameRegistry>
  <serviceCertificate>
    <certificateReference x509FindType="FindByThumbprint" findValue="some_thumbprint" storeLocation="LocalMachine" storeName="My" />
  </serviceCertificate>

这显然会从服务器上的证书存储中读取。有什么方法可以使用 Azure KeyVault 吗?也许以编程方式提供证书而不是配置文件?无需完全重写我们的身份验证设置的任何其他替代方案?

我一直在阅读 OWIN 启动和身份验证 类,但不确定这是否能让我到达我需要的位置。

我对证​​书在 Azure 应用服务中的工作方式的初步评估是错误的。无需更改我原来 post 中的配置,您可以像在 IIS 上 运行ning 一样访问应用服务证书。我唯一需要做的就是将证书存储位置的位置更改为“CurrentUser”。然后,我必须 运行 以下 PowerShell 脚本来授予应用服务访问证书的权限:

az webapp config appsettings set --name <application_name> --resource-group <app_service_resource_group> --settings WEBSITE_LOAD_CERTIFICATES=<comma_delimited_list_of_thumbnails>

此后,应用程序可以成功访问证书。