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

问题描述 投票:1回答:2

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

在Azure门户中,只能使用私钥和密码上载客户端证书。但是,客户端永远不会使用其密码发送其证书的私钥部分。

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

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

azure api certificate azure-api-management azureportal
2个回答
1
投票

这两件事是不同的功能。如果要使用该证书对APIM对后端进行的调用进行身份验证,则可以将客户端证书(带私钥的pfx)上载到APIM。

如果你想验证证书客户端发送到APIM你可以很简单,只需检查context.Request.ClientCertificates政策中choose的指纹,或者如果它有完整的链,你可以在证书上调用VerifyVerifyNoRevocation。您可以将自己的CA证书上传到APIM以实现此目的。


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>
© www.soinside.com 2019 - 2024. All rights reserved.