2012-10-29 43 views
3

我已經在IIS 7.5中的網站中設置了一個虛擬目錄,用戶可以將網絡驅動器映射到該虛擬目錄。我想要做的是設置某種自定義身份驗證,用戶在映射驅動器時選擇「使用不同憑據連接」,然後我可以使用這些憑據將它們登錄到我的網站,然後讓他們查看內容的虛擬目錄。這可能嗎?映射網絡驅動器時的自定義身份驗證 - 這可能嗎?

我似乎無法找到一種方法(以編程方式)獲取映射驅動器時使用的憑據。現在我有一個HttpModuleHttpHandler執行虛擬目錄的每個請求,但我沒有看到一種方法來檢測憑據。有沒有人做過這樣的事情?

如果這是不可能的,那麼有人可以解釋爲什麼選擇連接不同憑據的目的是什麼?這些證書在哪裏使用,它是由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建議進行進一步測試,因爲它看起來可能是我唯一的選擇。

+0

因此,您試圖允許某人使用不同憑據連接到網絡驅動器。我假設這一切都是通過Active Directory完成的? – AdamV

回答

3

我假設您正在嘗試將Active Directory與IIS結合使用來映射網絡驅動器。如果這個假設是正確的,我有一個想法給你。

你有你的第一個網站在http://www.mysite.com/,你可以登錄到它。然後,作爲IIS中的子文件夾和新的Web應用程序,您可以設置http://www.mysite.com/networkdrive/,它通過http://www.mysite.com/在post參數或cookie中接收他們想要使用的網絡路徑。

起腳是,這個新的應用程序將簡單地使用Windows驗證和根網站可以使用任何你喜歡的認證。這樣,用戶登錄到您的站點,然後選擇或鍵入網絡驅動器路徑,將其發送到子應用程序,並自動請求Windows憑據,並且它執行的第一個操作是使用Windows身份驗證令牌映射驅動器。您需要關閉身份模擬以及設置通過其憑據執行代碼的權限來實現此目的。

當他們想要切換驅動器,記錄他們離開/ networkdrive /應用程序,並送他們回驅動器選擇頁/表單。

有關Windows身份驗證信息:http://msdn.microsoft.com/en-us/library/907hb5w9(v=vs.100).aspx

更新:針對WebDAV的評論,這裏是一些文檔,我的配置WebDAV的發現,但它仍然使用Windows身份驗證。 http://www.iis.net/learn/install/installing-publishing-technologies/installing-and-configuring-webdav-on-iis

+0

感謝您的回覆!這是一個有趣的想法。我其實並沒有嘗試使用AD。我有一個網站,其中包含子文件夾,在您的示例中爲「networkdrive」,可以在映射驅動器時連接到該網站(在IIS中啓用WebDAV允許我執行此操作)。我想要做的是提示用戶輸入登錄憑證,然後進行一些自定義認證,最終只需獲取他們提供的憑據,將它們登錄到我的網站,並在成功添加auth cookie後,以便後續對該目錄的請求認證。希望這是有道理的! – lhan

+0

我應該指出,我的方案中的子文件夾(networkdrive)沒有安裝爲Web應用程序,而是虛擬目錄。這是你的意思嗎? – lhan

+0

是的,我不知道你將如何實現這一點,我對IIS上的Webdav的理解意味着你需要使用Windows身份驗證,除非你有一些賬戶映射到賬戶映射,比如用戶A映射到Windows賬戶A,在這種情況下會導致複雜性,我不知道你將如何僞造一個Windows標識符。 – AdamV