首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure API管理服务不会将标头中的客户端证书传递到后端

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

Stack Overflow用户
提问于 2017-08-12 04:38:13
回答 1查看 2.6K关注 0票数 2

我正面临一个问题,在使用Azure API管理服务使用客户端证书身份验证时,我无法看到客户端证书被传递到后端。

我已经创建了一个https后端,我在其中验证证书并记录日志,以查看标头和通过的值。

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

代码语言:javascript
复制
<policies>
    <inbound>
        <base/>
        <authentication-certificate thumbprint="AB4495609DEEE612E9DF25CBC9EB4D7064D6EA97"/>
    </inbound>
    <backend>
        <forward-request/>
    </backend>
    <outbound>
        <base/>
    </outbound>
    <on-error>
        <base/>
    </on-error>
</policies>

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

代码语言:javascript
复制
<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网关中,并将证书设置为base64编码值,则可以正常工作。如果可以避免,我希望使用配置的证书,而不是在头部设置证书。

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

只是一些额外的信息,我的后端是一个在docker容器(托管在azure ubuntu机器上)中运行的aspnet核心web api项目。我尝试过在没有API管理网关的情况下,通过在报头中传入客户端证书来直接访问URL,同样也没有任何问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-12 22:50:53

SSL头是在使用Microsoft ARR进行-ARR-ClientCert卸载时创建的。当API Management (APIM)使用客户端证书对后端服务器进行身份验证时,它将在TLS层提供客户端证书来执行此操作。这意味着对后端的调用需要使用HTTPS。APIM不会发送ARR报头,因为这根本不会提供安全性。任何人都可以伪造标题。

我不确定你的后端是不是在抱怨在直接提供证书时没有得到ARR头。通常,对于ASP.NET Web API安全管道来说,其中的一个就足够了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45643413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档