首页 > 编程 > .NET > 正文

在ASP/ASP.NET 中处理客户端数字证书

2024-07-10 13:06:01
字体:
来源:转载
供稿:网友

   客户端数字证书与基本身份验证(basic)、域服务器的摘要式身份验证、集成 windows 身份认证或自定义的 form 认证等方式相比,虽然部署和管理方面稍微复杂一些,但安全性也更好一些,应用上也较为灵活。

 在 asp 和 asp.net 中处理和识别客户端数字证书是非常容易的,代码如下:

asp (vbscript)语法:

    dim subject
   subject=request.servervariables("cert_subject")

   subject=request.clientcertifate("subject")  '--适用于 subject 没有中文的证书

 asp.net(c#) 语法:

   string subject ;
   httpclientcertificate hcc = request.clientcertificate;
   if(hcc.isvalid) = hcc.subject;

    得到的 subject 字符串是以逗号分隔的子字段列表。例如,c=cn,o=boc,cn=moslem ,然后将字符串分隔处理,取最后的 cn 值(可能不止一个 cn),这个值是用户的 common name ,即“常规名称”,一般就是用户的姓名或 id。

    拿到数字证书中的 cn 后,就可以做进一步的处理了,如对用户进行授权等。我认为比较有效的一种做法是在客户端同时启用数字证书和 form 认证,可以通过比较 cn 和 form 中输入的用户名的值是否匹配来做到多因子身份认证。

    相对来说,asp.net 中提供了专门的处理客户端数字证书的 httpclientcertificate 类,因而在程序中处理也更为方便一些。

 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表