我在 .Net Core 2.1 中开发了一个简单的 WEB API 服务。
我正在尝试实现客户端证书认证,以便只授予具有特定证书安装在其机器上的客户端访问API的权限。
客户端使用浏览器(Chrome、Edge、IE11或Firefox)访问API。
我已在API方法中添加了请求证书的代码:
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
X509Certificate2 cert = Request.HttpContext.Connection.ClientCertificate;
if (cert!=null && cert.Verify())
{
//more verification here...
return Content("....", "application/json");
}
else
{
return Content("....", "application/json");
}
}
然后我安装了自签名证书并添加到受信任的根证书中,以启用客户端身份验证。
但是变量cert始终为空,并且浏览器甚至没有提示我在请求页面时使用证书。
我想这是因为我必须在某个地方设置Web服务器必须要求客户端证书,正如在IIS中可以设置的那样,但在我的开发环境中,我使用的是IIS Express。
我该如何强制IIS Express请求客户端证书?