客戶端數字證書與基本身份驗證(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 類,因而在程序中處理也更為方便一些。
新聞熱點
疑難解答
圖片精選