我正在研究在Intranet环境中工作的ASP.NET 4.0 MVC3 Web应用程序.该应用程序使用Windows身份验证.其应用程序池由在域控制器上设置了spn的域用户运行.身份验证使用Kerberos(在一些其他配置后在IE和Firefox上).
@H_502_2@现在我想将文件上传到sharepoint,但是对我来说,以用户当前登录到应用程序的方式上传文件非常重要(因此文件是在Sharepoint上用他/她的凭据创建的).
@H_502_2@我在ResourceExists(Uri uri)函数中有以下代码:
'... Dim identity As System.Security.Principal.WindowsIdentity = HttpContext.User.Identity Dim impersonationContext = identity.Impersonate() response = request.GetResponse() impersonationContext.Undo() '...@H_502_2@这在本地运行时有效,但是当我部署到服务器时,我得到异常:
System.Net.WebException: The remote server returned an error: (401) Unauthorized.\r\n at WebDav.WebDavClient.ResourceExists(Uri uri)\r\n at Website.Website.WebdavController.Upload(HttpPostedFileBase file,Uploadviewmodel vm)@H_502_2@我读了一些关于传递凭据的内容,这是NTLM无法实现的,但我确信我使用的是Kerberos(我使用wireshark和fiddler检查了标头),我看到以下内容:
Authorization: Negotiate YIIFpQYGKwYBBQUCoIIFmTCCBZWgJDAiBgkqhkiC9x...@H_502_2@在IIS服务器上运行时模拟为什么不起作用的任何想法?