我正在尝试调试传入请求从未附加客户端证书的问题。
我相当确定请求有一个客户端证书,我有针对两个可能的端点(一个是我们的,一个是第三方服务)运行的测试代码,运行通用代码以将证书附加到请求和SSL 协商适用于第三方服务。
我在使用 IISExpress (VS2010) 以及 IIS 8 时遇到了同样的问题。
证书已在两台机器上安装并受信任。
我已经尝试了这里的步骤:http://www.asp.net/web-api/overview/security/working-with-ssl-in-web-api没有运气。
我已经在自定义 ActionFilter 中尝试了这两种方式来访问证书
var cert = HttpContext.Current.Request.ClientCertificate;
var certificate = actionContext.Request.GetClientCertificate();
是否可能是 ActionFilter 与 DelegatingHandler 的上下文导致了这个问题?
最佳答案
您的客户端代码是什么样的?您是否将客户端证书附加到您的 WebRequestHandler
?
使用 ActionFilter 还是 DelegatingHanlder 并不重要,但我建议使用 DelegatingHandler
,因为它发生在 Controller 上下文创建之前并且性能更高(会更早地拒绝未经授权的请求).
关于C# WebApi 传入客户端证书始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23064439/