我一直在使用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方面的一些模拟响应可以按预期工作。具有证书工作的传入消息以及其他具有证书工作的消息返回403。奇怪的是,然后我从Azure API管理门户上的“客户端证书”页面中删除了证书,而我对Postman的请求仍然可以通过。我原以为他们会因为证书消失而被拒绝。
至少根据门户中向我显示的通知,成功将证书从Azure删除。一个小时左右后,我还尝试了一次,以为可能需要一段时间才能处理。
谢谢大家的光临!
答案 0 :(得分:0)
这是一个已知问题,将很快修复。现在,您必须更改(例如)策略,以强制APIM放弃运行时的证书。