Pet*_*orf 12 iis ntlm webclient
我试图在WinForms应用程序中使用System.Net.WebClient将文件上传到具有Windows身份验证的IIS6服务器,因为它只是"身份验证"方法.
WebClient myWebClient = new WebClient();
myWebClient.Credentials = new System.Net.NetworkCredential(@"boxname\peter", "mypassword");
byte[] responseArray = myWebClient.UploadFile("http://localhost/upload.aspx", fileName);
Run Code Online (Sandbox Code Playgroud)
我得到一个'远程服务器返回错误:(401)未授权',实际上它是401.2
客户端和IIS都在同一台Windows Server 2003 Dev计算机上.
当我尝试在Firefox中打开页面并输入与代码中相同的正确凭据时,页面出现.但是,当使用IE8时,我得到相同的401.2错误.
试过Chrome和Opera,他们都工作.
我在IE Internet选项中启用了"启用集成Windows身份验证".
安全事件日志具有失败审核:
Logon Failure:
Reason: An error occurred during logon
User Name: peter
Domain: boxname
Logon Type: 3
Logon Process: ÈùÄ
Authentication Package: NTLM
Workstation Name: boxname
Status code: 0xC000006D
Substatus code: 0x0
Caller User Name: -
Caller Domain: -
Caller Logon ID: -
Caller Process ID: -
Transited Services: -
Source Network Address: 127.0.0.1
Source Port: 1476
Run Code Online (Sandbox Code Playgroud)
我使用Process Monitor和Fiddler进行调查但无济于事.
为什么这适用于第三方浏览器,但不适用于IE或System.Net.WebClient?
Goy*_*uix 19
我见过类似的问题,只有在按机器名或localhost访问主机时,Integrated/NTLM安全性才有效.事实上,它是Windows中一个[不良]文档功能,旨在防止"反射攻击".
基本上,您需要在尝试访问服务器的计算机上创建一个注册表项,并将您尝试访问的域列入白名单.每个主机名/ FQDN都需要在它自己的行上 - 没有通配符,名称必须完全匹配.来自KB文章:
http://support.microsoft.com/kb/956158/en-us
| 归档时间: |
|
| 查看次数: |
19079 次 |
| 最近记录: |