自定义安全相关检查。调试应用程序时,request.GetClientCertificate()会为任何服务调用返回null,无论我目前已尝试过什么。测试代码:基本上,在我的服务端,我有一个这样的方法:我的单位使用request.Properties.Add(HttpPropertyKeys.ClientCertificateKey,cert)传递附加到测试请求的客户端证书(证书完全符合预期,验证工作等)。但是,当我使用HttpClient调用实际WebAPI应用程序的测试时,在服务器端在request.GetClientCertificate()行设置断点,同一行返回null。这是我尝试过的:客户端证书:(基本上,根据https://www.piotrwalat.net/client-certificate-authentication-in-asp-net-web-api-and-windows-store-apps/和类似的博客)在我使用HttpClient调用服务的测试中,客户端证书以下列方式附加(它们都不起作用):在这两种情况下,证书变量都设置为预期的X509Certificate2对象。主机:在这两种情况下,当使用网络浏览器通过httpsurl访问网络api时,我可以毫无问题地显示家庭控制器的索引视图(因此,服务器端证书是可信的)。有关您的问题的详细信息。我假设问题是附加客户端证书w/HttpClient,因为在这种情况下您无法在服务器端查看证书。所有托管和服务器端证书配置听起来都不错。我会确保您附加的X509Certificate2证书变量是本地证书存储中存在的公钥(我不确定您将其存储在哪个存储位置)(您可以使用mmc.exe检查)。还要确保公钥具有私钥,因为HttpClient需要对其进行签名。在您的代码片段中,您在其余代码之前使用(varhandler=newWebRequestHandler())。确保使用client=newHttpClient(handler)构造HttpClient,否则将处理程序。否则处理程序创建看起来很好。祝你好运!以上就是C#学习教程:WebAPI中HttpRequestMessage.GetClientCertificate()返回null的全部内容分享。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
