我知道这个问题已被询问很多次,但我的问题是不同的。我正在开发一个启用了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不支持它。) –