Azure API管理服务不会将标头中的客户端证书传递给后端

时间:2017-08-11 20:38:13

标签: azure http https azure-api-management

我遇到的问题是,在使用Azure API Management Service进行客户端证书身份验证时,我无法看到客户端证书被传递到后端。

我创建了一个https后端,我在其中验证证书并放置日志以查看标题和通过的值。

在我的API管理网关中,我在"所有操作"中应用了以下策略。我的api



<policies>
    <inbound>
        <base/>
        <authentication-certificate thumbprint="AB4495609DEEE612E9DF25CBC9EB4D7064D6EA97"/>
    </inbound>
    <backend>
        <forward-request/>
    </backend>
    <outbound>
        <base/>
    </outbound>
    <on-error>
        <base/>
    </on-error>
</policies>
&#13;
&#13;
&#13;

在API调用中,我有以下策略定义

<policies>
<inbound>
    <base/>
</inbound>
<backend>
    <base/>
</backend>
<outbound>
    <base/>
</outbound>

现在,当我调用API时,我可以从后端看到我收到以下消息

8/12/2017 6:24:57 AMOcp-Apim-Subscription-Key:dbxxxx991a3b4b8aa19a4fxxxxxxx 8/12/2017 6:24:57缺少AMX-ARR-ClientCert标头

如果我将该标头添加为API网关中的策略并设置cert的base 64编码值,则可以正常工作。我想要使​​用配置的证书,而不是在标题中设置证书,如果我可以避免它。

我尝试将后端设置为http以及https。两者似乎都给出了相同的结果。

只是一些额外的信息,我的后端是一个运行在docker容器中的aspnet核心web api项目(托管在azure ubuntu机器中)。我已尝试在没有API管理网关的情况下直接访问URL,方法是在标头中传入客户端证书,这也可以毫无问题地工作。

0 个答案:

没有答案