2011-04-13 98 views
4

首先,我很抱歉我的英語不好。在asp.net中實現證書授權

在過去的兩天裏我讀了很多,但沒有找到解決我的問題。

我需要實現這樣的授權: 用戶打開網頁,出現特殊表格。在這個表格上只有一個按鈕「選擇證書文件」。 當用戶點擊它 - 他必須選擇證書文件,這將用於授權。該文件必須是存儲在閃存驅動器等中的 。不在計算機硬盤上。

我讀了關於cer/pfx文件,但沒有關於這種模型。

也許這是不可能的,使這個在.NET

System.Security.Cryptography.X509Certificates.X509Certificate 
System.Security.Cryptography.X509Certificates.X509Certificate2 

使用這個類與此同時形式的授權將在本網站實現的,所以 用戶可以選擇如何授權。

更新: 我認爲這些類不能用於此模型。你能告訴我其他什麼嗎?

回答

1

首先,您需要啓用SSL的網頁。您無法使用包含的開發Web服務器(cassini)進行開發。可以使用IIS Express或本地IIS實例來開發這樣的認證模型。無法直接從您的代碼控制SSL身份驗證,並取決於IIS網頁文件夾設置。看看this article

至於GUI體驗,證書通常存儲在安全的證書存儲中,並且不能從客戶端頁面/腳本中進行控制。當Web瀏覽器通過客戶端證書協商請求獲取響應時,會顯示一個顯示所有兼容客戶端證書的瀏覽器/平臺特定對話框。在服務器端,您可以控制哪些證書可供客戶端選擇,方法是從受信任的證書頒發機構安裝適當的根證書。但是,您無法控制哪些證書(它們存儲在受支持的智能卡上的天氣或本地存儲在硬盤驅動器上)可供客戶端進一步選擇。

UPDATE

在你的情況,我想你想要什麼是不可能的web瀏覽器在客戶端身份驗證的HTTPS會話內,因爲你無法控制它如何管理它的證書存儲區。

但是,如果您開發了一個可訪問客戶端USB驅動器上的便攜式證書存儲的插件,那麼這將是可能的。我想我會用JAVA小程序在後臺運行,並創建可以從頁面的JavaScript訪問的公共API,有以下原因去:

  • 可用於多個 平臺/瀏覽器
  • 可以運行在一個啓用SSL網頁全 信任模式
  • 燦威脅PFX文件,證書 店(see

您需要實現認證/ handhake部分,例如通過讓小程序使用XMLDSIG(可以包含歌手的公鑰並在.net中支持)來簽署XML文檔/片段(也可以是附加包含用戶名和密碼哈希)。成功驗證簽名的XML後,您可以將正常的身份驗證cookie返回給客戶端。

+0

SSL現在不是問題。你寫的關於證書的所有我知道。但我需要用戶將證書保存在可移動設備上,我將寫入它們。沒有這個閃存驅動器的人不會訪問網頁。但謝謝你的回答。 – Dimka 2011-04-13 08:57:15

+0

我已根據您的評論更新了我的答案 – m0sa 2011-04-13 09:47:14

+0

謝謝!我正在考慮Java小程序,但整個項目正在研究.NET,所以我想在C#中找到解決方案,現在我正在嘗試Silverlight。 – Dimka 2011-04-13 10:00:25