2015-05-28 138 views
0

Web認證,我想用三個元素來驗證Web應用程序的登錄:安裝用戶的PC上與客戶端認證

  • web應用程序的用戶ID
  • Web應用程序的密碼
  • 客戶端證書。我將客戶端或機器證書視爲存儲在Windows註冊表中的長字符串或密鑰。

我打算把這三個元素放在一張表中,所以當用戶想要登錄時,它會將這三個元素髮送到服務器端,並且它們將被檢查。

例如,如果用戶在未分配給他的PC中加載web應用,則服務器將驗證該用戶ID和密碼是否正確,但客戶端證書不屬於用戶,並且將拒絕登錄。

我還沒有在每臺客戶端PC上安裝客戶端或機器證書,也沒有在IIS中安裝CA.但根據Microsoft,一個asp.net web應用程序會自動發送一個客戶端或機器證書給服務器,而asp.net可以得到它。我還發現另一個program example這樣做。

這怎麼可能?我總是認爲一個asp.net web應用程序無法讀取客戶端資源,如果你想讀取客戶端資源,那麼你應該使用像ActiveX一樣的東西,但它的所有複雜性。

回答

2

你說得對,ASP.NET無法讀取任何客戶端資源。 ASP.NET與從用戶的PC獲取客戶端證書無關。

你要做的是告訴你的Web服務器(IIS)請求或需要客戶端證書。服務器正在添加一個特殊的http頭部來告訴瀏覽器發送客戶端證書。瀏覽器要求Windows提供一個,或者使用自己的商店(Firefox)。然後瀏覽器將客戶端證書的公共部分發送到服務器。

ASP.NET可以詢問IIS瀏覽器是否發送了證書並訪問該信息以進行身份​​驗證。

+0

感謝您的回答。現在對我來說更清楚了。 – Delmonte