我尝试使用来自.net应用程序的客户端证书对网站进行身份验证。
使用相同的证书我可以使用chrome和IE访问该网站。在同一台机器上,我得到错误状态码401.2。
这是我使用的代码:
X509Certificate2 cert2 = new X509Certificate2(x509Cert);
cert2.PrivateKey = algorithm;
if (cert2.Verify() && cert2.HasPrivateKey)
{
WebRequestHandler handler = new WebRequestHandler();
handler.ClientCertificates.Add(cert2);
HttpClient client = new HttpClient(handler);
string result = await client.GetStringAsync("https://localhost:8443/");
}
编辑:
我现在尝试从证书存储中提取浏览器使用的相同证书,但我仍然得到相同的错误,并且我已经切换到使用旧的WebClient,我再次得到相同的错误。
任何线索都会受到赞赏!
由于
罗斯
答案 0 :(得分:0)
问题不在于我的代码,而是IIS配置问题。
浏览器正在运行,因为他们也在发送我的Windows凭据 - 我的应用程序没有这样做,这就是它失败的原因。
我必须启用将客户端证书映射到AD:http://www.iis.net/configreference/system.webserver/security/authentication/clientcertificatemappingauthentication
然后我不得不在网站上禁用Windows身份验证。然后该应用程序按预期工作。