2014-07-17 44 views
0

我們有一個Web應用程序,將文件複製到我們的域名(OurDomain)中的遠程服務器。用戶使用另一個域登錄到其筆記本電腦,然後使用OurDomain登錄到Web應用程序時,會出現以下問題。使用OurDomain \ User登錄筆記本電腦和Web應用程序的用戶不存在此問題。使用ASP.Net模擬瓦特/ Windows身份驗證

我們有兩個web表單:

首屆網絡表格檢索使用System.Security.Principal.WindowsIdentity.GetCurrent()用戶的ID,然後用這個用戶ID發送電子郵件。只有當我們將Windows Authentication設置爲EnabledASP.Net Impersonation也設置爲Enabled時,此代碼纔會檢索用戶的ID。如果ASP.Net Impersonation設置爲Disabled,則用戶將是Network Service。所以我將這兩個設置爲啓用,這裏的一切都很好。

第二個webform將一些文件複製到遠程服務器,同樣在域OurDomain。隨着Windows Authentication設置爲EnabledASP.Net Impersonation設置爲Disabled,然後Network Service用於將文件複製到遠程服務器,並且正確地複製。另一方面,如果ASP.Net Impersonation設置爲Enabled,它似乎繞過Network Service,甚至OurDomain \用戶並試圖複製顯然,用於登錄到筆記本電腦(另一個域)的憑據。該文件不復制,我得到錯誤訪問被拒絕

我發現的唯一的解決辦法是OurDomain \用戶添加到文件夾的路徑,這真的不是什麼大不了的事,但我想知道爲什麼會發生這種情況。

謝謝。

回答

0

我相信OurDomain \ User是從Web瀏覽器登錄系統的用戶。將服務器文件夾訪問權限授予該組用戶不是一種好的安全做法。如果您允許訪問這些用戶,他們甚至可以在沒有您的Web應用程序的情況下瀏覽遠程文件夾

NetworkService是在創建它的系統中具有角色的用戶。

更好地創造用戶的asp.net應用程序池用戶OruDomain \ webappuser即誰運行的w3wp工作進程的用戶。讓密碼爲admin.Give OurDomain \ webappuser遠程文件夾的權限。運行沒有模擬的Web表單。

現在,它們通過文件上傳對話框收到webform2可以複製到該文件夾​​安全地在OurDomain \的背景下,asp.net應用程序運行webappuser

+0

我不能創建/修改或以任何方式改變的文件OurDomain中的用戶。 – vmgmail

+0

如果您無法擁有網絡服務以外的應用程序池用戶,則可能需要模擬。即,asp.net應用程序將執行,就好像登錄瀏覽器的用戶在Web服務器中執行程序一樣。在這種情況下,如果登錄瀏覽器的用戶對遠程文件夾具有權限,則文件副本將起作用。 –

相關問題