即使从 APIM 中删除客户端证书后,它们似乎仍可访问
client certs appear to be accessible even after removing them from APIM
我一直在使用 Azure 的 API 管理服务,遇到了一些意外行为。具体来说,我一直在阅读有关使用证书进行客户端身份验证的文章 here。我有兴趣根据已经上传到 API 管理的证书检查传入的指纹。 Azure 示例为您提供了以下实现此目的的示例:
<choose>
<when condition="@(context.Request.Certificate == null || !context.Deployment.Certificates.Any(c => c.Value.Thumbprint == context.Request.Certificate.Thumbprint))" >
<return-response>
<set-status code="403" reason="Invalid client certificate" />
</return-response>
</when>
使用 Postman 和 API 端的一些模拟响应,这按预期工作。具有证书工作的传入消息和其他 return 403。奇怪的是,我随后从 Azure API 管理门户的客户端证书页面中删除了证书,而我来自 Postman 的请求仍然通过.我原以为他们会被拒绝,因为证书不见了。
从 Azure 中删除证书是成功的,至少根据门户中显示给我的通知是这样。我也在一个小时左右后再次尝试,认为它可能需要一些时间来处理。
谢谢大家的宝贵时间!
这是一个已知问题,很快就会得到解决。例如,现在您必须更改策略以强制 APIM 从运行时丢弃证书。
我一直在使用 Azure 的 API 管理服务,遇到了一些意外行为。具体来说,我一直在阅读有关使用证书进行客户端身份验证的文章 here。我有兴趣根据已经上传到 API 管理的证书检查传入的指纹。 Azure 示例为您提供了以下实现此目的的示例:
<choose>
<when condition="@(context.Request.Certificate == null || !context.Deployment.Certificates.Any(c => c.Value.Thumbprint == context.Request.Certificate.Thumbprint))" >
<return-response>
<set-status code="403" reason="Invalid client certificate" />
</return-response>
</when>
使用 Postman 和 API 端的一些模拟响应,这按预期工作。具有证书工作的传入消息和其他 return 403。奇怪的是,我随后从 Azure API 管理门户的客户端证书页面中删除了证书,而我来自 Postman 的请求仍然通过.我原以为他们会被拒绝,因为证书不见了。
从 Azure 中删除证书是成功的,至少根据门户中显示给我的通知是这样。我也在一个小时左右后再次尝试,认为它可能需要一些时间来处理。
谢谢大家的宝贵时间!
这是一个已知问题,很快就会得到解决。例如,现在您必须更改策略以强制 APIM 从运行时丢弃证书。