我已經在IIS 7.5中的網站中設置了一個虛擬目錄,用戶可以將網絡驅動器映射到該虛擬目錄。我想要做的是設置某種自定義身份驗證,用戶在映射驅動器時選擇「使用不同憑據連接」,然後我可以使用這些憑據將它們登錄到我的網站,然後讓他們查看內容的虛擬目錄。這可能嗎?映射網絡驅動器時的自定義身份驗證 - 這可能嗎?
我似乎無法找到一種方法(以編程方式)獲取映射驅動器時使用的憑據。現在我有一個HttpModule
和HttpHandler
執行虛擬目錄的每個請求,但我沒有看到一種方法來檢測憑據。有沒有人做過這樣的事情?
如果這是不可能的,那麼有人可以解釋爲什麼選擇連接不同憑據的目的是什麼?這些證書在哪裏使用,它是由IIS中的某種形式的身份驗證使用的?當然必須有使用不同憑據的某種設置?
UPDATE:
使用摘要身份驗證,我現在可以看到授權頭顯示提琴手,但我還沒有確定是否有可能以某種方式解析密碼了。我也在網上看到一些文章,提示摘要式身份驗證存在根本上的缺陷,但根據Authentication in ASP.NET: .NET Security Guidance,如果我的用戶存儲在自定義數據庫中,則不應使用基本身份驗證。
所以讓我奠定了一個簡單的場景,希望能更容易地回答:
我想實現我的網站映射網絡驅動器到虛擬目錄時使用自定義的驗證。我正在使用IIS 7.5。我需要解析出用戶名和密碼來處理自定義登錄,或者在HttpModule
或Global.asax事件中。有沒有人做過這樣的事情或者有任何建議/建議?我發現this example which seems like it could work - 但它是爲瀏覽器。我已經在我的測試網站上實現了它,但是問題在於映射驅動器時,返回了401問題(應提示登錄),但Windows卻顯示一條錯誤消息:
Windows無法訪問
Http://myServer/mySite/myFolder
檢查名稱的拼寫。否則,您的網絡可能有問題。
錯誤代碼:0x80070043網絡名稱無法找到
我想知道如果我可以格式化/建立一個基本/摘要式身份驗證式的質詢響應,因此,Windows會提示您進行登錄,而比顯示網絡無法找到?有誰知道這是否可能?
更新2:
我看到使用招,Windows身份驗證包括Negotiate
頭。因此,除了WWW-Authenticate: Basic
標題之外,我還嘗試在我的挑戰響應中包含該標題。這似乎解決了我上面描述的「網絡名稱無法找到」錯誤的問題,但不幸的是,現在沒有授權標頭包含在隨後的請求中(在我提供我的憑證後),因此我無法提取用戶名密碼。
我在這裏用盡想法,雖然似乎有很多關於身份驗證的文檔,但在映射時似乎沒有太多關於WebDAV身份驗證(或如何使用它)或自定義身份驗證驅動器。
有沒有人有任何見解或想法?
SOLUTION:
它看起來不像以前那樣我就可以做我想做什麼。我將使用Windows身份驗證的@AdamV建議進行進一步測試,因爲它看起來可能是我唯一的選擇。
因此,您試圖允許某人使用不同憑據連接到網絡驅動器。我假設這一切都是通過Active Directory完成的? – AdamV