【问题标题】:Service Fabric Stateless api certification based authentication基于 Service Fabric Stateless api 认证的身份验证
【发布时间】:2019-05-15 04:44:53
【问题描述】:

我被要求使用基于证书的身份验证来保护我的无状态 API 端点。我阅读了该主题,并意识到我需要创建一个中间件来检查请求,然后检查 x-ARR-ClientCert 标头,以根据一些指纹检查证书是否有效。到目前为止,一切都很好。

问题是我无法测试中间件,因为我不知道如何发送这样的标头。我已经有一个自签名证书(.crt)和一个密钥(.key)。我尝试使用邮递员,但在 VS2017 上调试时看不到 x-ARR-ClientCert 正在发送。

有什么帮助吗?

编辑 1

我正在关注本教程:https://blogs.msdn.microsoft.com/kaevans/2016/04/13/azure-web-app-client-certificate-authentication-with-asp-net-core-2/

我知道它有点旧,但最后作者显示浏览器要求证书,但我无法管理浏览器要求证书。

我在这里忘记提及的一件事是,我的 API 位于本地 Service Fabric 集群上,所以这可能是问题所在

编辑 2

对于 Postman,我遵循了本教程:Postman Tutorial,但没有运气:首先我必须关闭 ssl 检查,然后将证书添加到 Postman 时,x-ARR-ClientCert 标头没有正在发送。

我也试过 curl:> curl --cert cert.crt --key client.key https://localhost/api/values --insecure 但仍然没有发送 x-ARR-ClientCert。

【问题讨论】:

    标签: azure-service-fabric asp.net-core-webapi


    【解决方案1】:

    我不确定你想要完成什么......

    在相互证书身份验证中,浏览器处理身份验证\证书交换,当用户尝试访问受客户端证书保护的端点时,服务器会告诉客户端(浏览器)它需要证书来接受连接并浏览器向用户弹出一条消息,要求使用证书,有一篇很好的文章here

    如果计划是实现自动化,邮递员博客有一个article,说明如何为这种情况设置客户端证书。另一种选择是尝试使用 CURL 发送证书,如 here 所述。

    其次,你正在重新发明轮子,在 kestrel 中已经有一些现成的使用实现,使用 HttpsConnectionAdapterOptions.ClientCertificateMode = RequireCertificate 和一些授权中间件 herehere

    最后,确保中间没有代理,或者代理或网关没有从客户端连接中删除证书。

    【讨论】:

      猜你喜欢
      • 2017-11-27
      • 2021-05-30
      • 1970-01-01
      • 2016-08-20
      • 1970-01-01
      • 2017-08-31
      • 2021-01-25
      • 2014-05-28
      • 1970-01-01
      相关资源
      最近更新 更多