基于Service Fabric无状态api认证的身份验证

时间:2018-12-13 22:10:40

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

我被要求使用基于证书的身份验证来保护我的无状态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。

1 个答案:

答案 0 :(得分:1)

我不确定您要完成什么...

在相互证书身份验证中,浏览器处理身份验证\证书交换,并且当用户尝试访问受客户端证书保护的端点时,服务器告诉客户端(浏览器)它需要证书才能接受连接,并且浏览器会弹出一条消息,提示用户使用证书,here上面写着一个很好的文字。

如果计划要实现自动化,则邮递员博客上有article关于如何为此场景设置客户端证书的信息。另一个选项是尝试使用here中所述的CURL发送证书。

第二,您正在重新发明轮子,已经有一些现成的可以使用HttpsConnectionAdapterOptions.ClientCertificateMode = RequireCertificate在kestrel中使用的实现以及一些授权中间件herehere

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

相关问题