我知道這個問題已被詢問很多次,但我的問題是不同的。我正在開發一個啓用了Windows身份驗證和模擬的Web應用程序。我登錄到我的電腦domain\user
。在這個應用程序中,我只是在網絡計算機目錄中創建一個名爲newDir
的目錄,例如\\computerName\myFolder
。我對此目錄擁有完全的訪問控制權。當我在web.config
文件中明確輸入我的用戶名和密碼<identity impersonate="true" userName="domain\user" password="pass">
並運行應用程序時,它不會提示輸入用戶名和密碼,而是按預期方式在指定的目錄中創建目錄。但是當我從identity
元素中刪除用戶名和密碼時,impersonation
打開並運行應用程序,它會提示輸入用戶名和密碼,但不會接受我從web.config
文件中的identity
元素中刪除的相同用戶名和密碼,有時它不會提示輸入用戶名和密碼,只顯示例外頁面access to the path "\\computerName\myFolder\newDir" is denied
。訪問路徑「」被拒絕
爲了測試我添加了一個線檢查,根據哪個用戶名運行代碼:
Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name + "<br/>");
它打印出來的一樣domain\user
用戶名。
有沒有人知道這裏發生了什麼?
出於安全原因,Windows身份驗證不會以純文本形式向Web服務器提供用戶的用戶名和密碼,因此Web服務器無法通過網絡以用戶身份進行身份驗證。 (理論上,可以通過Kerberos委託在域內模擬,但這更復雜,我猜ASP.NET不支持它。) –