客户端身份验证 - 处理客户端证书
问题描述:
我有一个ASP.net Web应用程序,我的客户端需要使用客户端v3证书对我的网站进行身份验证。客户端身份验证 - 处理客户端证书
所有我需要检查的是: 1-证书有效期 2-“印发给CN”具有特定值
我做我的MVC行动如下:
var req = Request.ClientCertificate;
req
有一个名为IsValid
的属性,这对于要求(1)是足够的。现在,问题在于我无法检查CN,因为我认为它存储在类型byte[0]
的另一个属性Certificate
中。
我想读这样的证书:
var x509 = new X509Certificate(req.Certificate);
,但我得到两个例外:
'x509.Issuer' threw an exception of type 'System.Security.Cryptography.CryptographicException'
'x509.Subject' threw an exception of type 'System.Security.Cryptography.CryptographicException'
我如何读取证书?
答
典型的方法是将证书属性(例如Subject或CN)映射到一个或多个用户。这通过IIS configuration完成。
完成后,所有MVC必须做的是check the current user。请参阅this article。