azure - 要上传到 Azure APIM 的客户端证书类型?
问题描述
我有一个 HTTP 触发的 Azure 函数,前面带有 Azure API 管理 (APIM)。
- 客户端证书设置为
Require
Azure函数级别:
- 在APIM级别:
我需要将客户端证书(公共客户端证书)添加到某种“信任库”中。APIM 的“客户端证书”页面似乎等同于信任库。
问题是:APIM 在这里寻找什么类型的客户端证书?
- 应该只是客户的公共证书,对吧?
- 我不应该将这些存储在 Azure Key Vault 中,因为它们不包含私钥
- 我只需要检查请求中的客户端证书是否来自“受信任的来源”,以防止请求在未知客户端时到达我的应用程序代码。
解决方案
我认为这个文档对在 azure apim 中启用客户端证书身份验证有一个生动的解释。总结一下,您不必上传证书文件,因为您可以Thumbprint
在策略中设置类似的值
<when condition="@(context.Request.Certificate == null
|| context.Request.Certificate.Thumbprint != "456AAB1833DF842152605DF6C2B1DB2BBA29380D"
|| context.Request.Certificate.NotAfter<DateTime.Now)">
如果您上传证书,您可以像这样设置策略:
<when condition="@(context.Request.Certificate == null
|| !context.Deployment.Certificates.Any(c => c.Value.Thumbprint == context.Request.Certificate.Thumbprint)
|| context.Request.Certificate.NotAfter<DateTime.Now)">
这是有关apim 客户端证书的相关官方文档。
推荐阅读
- mysql - 将数据从本地 MSSQL 服务器移动到远程 MYSQL DB
- html - col-md-4 在移动设备上重叠
- c# - NLog 适用于 ASP.NET Core 应用程序,但不适用于 .NET Core xUnit 测试项目
- python - pytorch / numpy 中的部分切片,具有任意和可变的维数
- java - 我有一个用 C/C++ 编写的应用程序,每次系统启动/重新启动时都需要运行。实现这一目标的最简单方法是什么?
- java - spring boot web binding时如何拦截报错信息?
- c# - 使用 Linq to XML 遍历 XML 文件未按预期工作
- function - 是否可以在 ZSH 中动态定义函数?
- typescript - 如何模拟外部模块
- python - 在 python 中打印循环时如何获得唯一的随机输出?