客户端证书已从 APIM 中删除但仍被接受
Client certificate deleted from APIM but still accepted
我正在 Azure API 管理中使用客户端证书 here 来保护对 API:
的访问
<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>
</choose>
到目前为止一切正常。
但是:在我上传客户端证书后,测试了使用该证书访问 API(有效),我从 APIM 中删除了证书。现在我希望我不再能够访问 API 但它仍然有效。在 APIM 的后台是否有一些缓存等,这样可能需要一段时间才能不再接受证书?
首先,请务必在 Azure API 管理门户中确认已删除的证书。问题似乎是已知的,您可以更改策略以强制从 APIM.
上的运行时删除证书
(我无法评论现有答案,因此添加新答案)
正如 Kedar Joshi 提到的,这是一个已知错误,我们计划在接下来的几周内修复它。不幸的是,更新策略的解决方法不适用于已删除的证书。
可行但不太方便的解决方法是在策略中保留指纹列表,而不是通过 context.Deployment.Certificates 进行枚举。
没有相关的错误报告。一旦问题得到解决,相应的公告将出现在 https://azure.microsoft.com/en-gb/updates/?product=api-management
我正在 Azure API 管理中使用客户端证书 here 来保护对 API:
的访问<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>
</choose>
到目前为止一切正常。
但是:在我上传客户端证书后,测试了使用该证书访问 API(有效),我从 APIM 中删除了证书。现在我希望我不再能够访问 API 但它仍然有效。在 APIM 的后台是否有一些缓存等,这样可能需要一段时间才能不再接受证书?
首先,请务必在 Azure API 管理门户中确认已删除的证书。问题似乎是已知的,您可以更改策略以强制从 APIM.
上的运行时删除证书(我无法评论现有答案,因此添加新答案)
正如 Kedar Joshi 提到的,这是一个已知错误,我们计划在接下来的几周内修复它。不幸的是,更新策略的解决方法不适用于已删除的证书。 可行但不太方便的解决方法是在策略中保留指纹列表,而不是通过 context.Deployment.Certificates 进行枚举。 没有相关的错误报告。一旦问题得到解决,相应的公告将出现在 https://azure.microsoft.com/en-gb/updates/?product=api-management