我工作的ASP.NET 4.0 MVC3 Web应用程序,在局域网环境中工作。 该应用程序使用Windows身份验证。 它的应用程序池是由已SPN在域控制器上设置的域用户运行。 使用Kerberos(在IE和Firefox之后一些额外的配置)认证工作。
现在我想将文件上传到SharePoint,但对我来说上传文件作为当前登录到应用程序(使文件在SharePoint上创建与他/她的证书)的用户是很重要的。
我在下面的代码ResourceExists(Uri uri)
功能:
'...
Dim identity As System.Security.Principal.WindowsIdentity = HttpContext.User.Identity
Dim impersonationContext = identity.Impersonate()
response = request.GetResponse()
impersonationContext.Undo()
'...
这个工程在本地运行时,但是当我部署到服务器我得到异常:
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)
我读了一些有关传递的凭据,这是不可能的使用NTLM,但我相信我使用Kerberos(我检查使用Wireshark和提琴手头),我看到以下内容:
Authorization: Negotiate YIIFpQYGKwYBBQUCoIIFmTCCBZWgJDAiBgkqhkiC9x...
任何想法,为什么在IIS服务器上运行时的模拟不起作用?