2012-12-19 93 views
10

嘗試列出特定文件夾中的目錄和文件。此文件夾將取決於當前用戶(Page.User),它由Windows身份驗證(NTLM)登錄並從Active Directory(homedirectory屬性)中檢索。訪問被拒絕冒充當前用戶訪問網絡文件夾

我正在使用域用戶訪問AD並檢索文件夾位置,這工作正常。

失敗的是使用System.IO.DirectoryInfo.GetDirectories()檢索子文件夾,即使使用模擬。

下面是我使用模擬代碼:

System.Security.Principal.WindowsImpersonationContext impersonationContext; 
impersonationContext = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate(); 

我已經檢查了正在模擬用戶訪問該文件夾。

從我發現迄今爲止,似乎我需要設置委派或Kerberos身份驗證,這是真的嗎?這是實現這一目標的唯一途徑嗎?不應該冒充足夠的?

+1

你是否檢查了此Stackoverflow上一篇文章..? http://stackoverflow.com/questions/2563724/accessing-password-protected-network-drives-in-windows-in-c/2563809#2563809 – MethodMan

回答

2

模擬允許網站服務帳戶冒充(僞裝成)該機器上的另一個用戶。因此,查詢AD以查看您(或模擬的用戶)擁有的權利是允許的。

要求訪問另一臺計算機上的UNC共享時,請求另一臺計算機接受該網站服務帳戶正在代表被模擬的用戶行事。這是委託。另一臺機器不檢查用戶憑證本身,而是將該檢查委託給網絡服務器。

如果客戶端從另一臺機器(通常是web服務器的情況下)連接網站,那麼您將從客戶端到網絡服務器到UNC文件服務器的「雙跳」。

我建議您需要配置Kerberos(通過SetSPN實用程序),併爲網站服務帳戶(相當於AD用戶和計算機)啓用代表權限。如果您在設置時遇到問題,我衷心推薦一款名爲DeleConfig的工具。