Mas*_*son 9 c# asp.net security x509 mutual-authentication
我正在尝试从HTTP请求访问我的Web API中的客户端证书.我附上证书如下:
X509Certificate2 clientCert = GetClientCertificate();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://localhost:44366/test");
request.KeepAlive = true;
request.Method = "GET";
request.Accept = "application/json";
request.ClientCertificates.Clear();
request.ClientCertificates.Add(clientCert);
var response = (HttpWebResponse) request.GetResponse();
Run Code Online (Sandbox Code Playgroud)
在哪里GetClientCertificate()访问本地安装的证书.从我的WebApi内部,我有以下路线:
[HttpGet]
[Route("test")]
public HttpResponseMessage TestNoAuth()
{
X509Certificate2 cert = Request.GetClientCertificate();
return cert == null ? Request.CreateResponse(HttpStatusCode.BadRequest, "No cert") : Request.CreateResponse(HttpStatusCode.OK, "Cert attached");
}
Run Code Online (Sandbox Code Playgroud)
无论我尝试什么,cert总会回来null.我是否错误地附加了证书,或者尝试错误地访问它?我已经用这条测试路线创建了一个全新的WebAPI,以确保我们的开发API中没有可能存在冲突的设置.任何帮助将不胜感激.
确保您的 web.config 正确设置sslFlags为SslNegotiateCert:
<system.webServer>
<security>
<access sslFlags="SslNegotiateCert" />
</security>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
如果没有此设置,附加到请求的任何证书都将被忽略,请参阅此了解详细信息。
Andras Nemes 撰写了一系列有关在 .NET 中使用客户端证书的精彩文章。在这一章中,详细描述了如何设置客户端证书以供本地测试使用。
| 归档时间: |
|
| 查看次数: |
1800 次 |
| 最近记录: |