团队,
我最近已将我的 Azure 经典门户资源迁移到 CSP 订阅。我已成功将我的 azure 云服务转换为 CSP 订阅中的 azure 应用程序网站。但有一件事我无法连接。它是第三方 API 当我们拥有云服务时,我们将 .pfx 上传到 azure,并在代码中使用我们创建一个由证书 key + 证书 key 组成的 uri。
证书 key 直接从 web.config 获取。但证书 key 是从 EncryptedSettings.Appsettings("SecretKeyName") 获取的。
这基本上是从之前完成的加密应用程序设置中获得的 https://eren.ws/2014/02/04/encrypting-the-web-config-file-of-an-azure-cloud-service/
但是我不确定我们应该在Azure网站上实现什么方式。
我尝试过实现相同的功能,但不幸的是,云服务的 key 检索技术似乎与 azure Web 应用程序服务中的不一样。
当我调试 azure 网站时,我可以看到它给出的错误为。
无法使用提供程序“CustomProvider”解密。来自提供者的错误消息:值不能为空。 参数名称:keyObject
有人可以指导我吗?
最佳答案
您可能希望将 secret 存储在 Azure KeyVault(它还为您提供 secret 管理功能等),而不是将 secret 存储在您的配置中,然后在运行时加载 secret 。
KeyVault 文档:
https://learn.microsoft.com/en-us/azure/key-vault/
具体如何将 keyvault 与 azure 网站一起使用:
https://learn.microsoft.com/en-us/azure/key-vault/key-vault-use-from-web-application
现在,不用再费心使用 keyvault 进行手动身份验证,而是使用“托管服务身份”,这里有一个教程:
https://azure.microsoft.com/en-gb/resources/samples/app-service-msi-keyvault-dotnet/
有趣的是,第二个教程确实特别提到了使用证书进行身份验证(针对 keyvault),您可能希望自己使用此技术作为直接访问证书的简化方法。
关于Azure 网站无法与第三方 API 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54276386/