Azure门户:API管理检查客户端证书

时间:2019-03-07 16:52:34

标签: azure api certificate azure-api-management azureportal

是否可以根据API Manager客户端证书存储区中的证书检查通过GET https API调用发送的客户端证书?

在Azure门户中,只能上载带有私钥和密码的客户端证书。 但是,客户绝不会使用密码将证书的私钥部分发送出去。

当我尝试仅使用公共密钥上载客户端证书时,Azure出现错误。

根据Azure Portal API管理文档,应该有可能: https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-mutual-certificates-for-clients

2 个答案:

答案 0 :(得分:1)

这两件事是独立的功能。当您要使用该证书来验证APIM向后端发出的调用时,可以将客户端证书(带有私钥的pfx)上载到APIM。

如果您想验证证书客户端发送到APIM,只需检查python3策略中context.Request.ClientCertificates的指纹即可非常简单,也可以致电choose或{如果证书具有完整的链,请在证书上使用{1}}。您可以将自己的CA证书上传到APIM中。

答案 1 :(得分:1)

当前无法仅使用公共密钥上传客户端证书。

您可以使用自定义策略(如您提供的链接中所示)验证用于调用API的客户端证书,例如检查证书指纹(这样就不需要实际上传任何证书)。

例如像这样:

<policies>
    <inbound>
        <base />
        <choose>
            <when condition="@(context.Request.Certificate == null || context.Request.Certificate.Thumbprint != "F81E3171FA085BC04C83B6644B9F229F0CBA8E57")">
                <return-response>
                    <set-status code="403" reason="Invalid client certificate" />
                </return-response>
            </when>
        </choose>
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>