明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

在ASP/ASP.NET 中處理客戶端數(shù)字證書

[摘要]客戶端數(shù)字證書與基本身份驗(yàn)證(Basic)、域服務(wù)器的摘要式身份驗(yàn)證、集成 Windows 身份認(rèn)證或自定義的 Form 認(rèn)證等方式相比,雖然部署和管理方面稍微復(fù)雜一些,但安全性也更好一些,應(yīng)用上也較為靈活。 在 ASP 和 ASP.NET 中處理和識別客戶端數(shù)字證書是非常容易的,代碼如下: A...

    客戶端數(shù)字證書與基本身份驗(yàn)證(Basic)、域服務(wù)器的摘要式身份驗(yàn)證、集成 Windows 身份認(rèn)證或自定義的 Form 認(rèn)證等方式相比,雖然部署和管理方面稍微復(fù)雜一些,但安全性也更好一些,應(yīng)用上也較為靈活。

 在 ASP 和 ASP.NET 中處理和識別客戶端數(shù)字證書是非常容易的,代碼如下:

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 值(可能不止一個(gè) CN),這個(gè)值是用戶的 Common Name ,即“常規(guī)名稱”,一般就是用戶的姓名或 ID。

    拿到數(shù)字證書中的 CN 后,就可以做進(jìn)一步的處理了,如對用戶進(jìn)行授權(quán)等。我認(rèn)為比較有效的一種做法是在客戶端同時(shí)啟用數(shù)字證書和 Form 認(rèn)證,可以通過比較 CN 和 Form 中輸入的用戶名的值是否匹配來做到多因子身份認(rèn)證。

    相對來說,ASP.NET 中提供了專門的處理客戶端數(shù)字證書的 HttpClientCertificate 類,因而在程序中處理也更為方便一些。