gpt4 book ai didi

asp.net-mvc-3 - 在IIS上运行时,ASP.NET Web应用程序中的模拟不起作用

转载 作者:行者123 更新时间:2023-12-04 18:12:18 24 4
gpt4 key购买 nike

我正在Intranet环境中工作的ASP.NET 4.0 MVC3 Web应用程序上工作。该应用程序使用Windows身份验证。它的应用程序池由在域 Controller 上设置了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和fiddler检查了 header ),并且看到了以下内容:
Authorization: Negotiate YIIFpQYGKwYBBQUCoIIFmTCCBZWgJDAiBgkqhkiC9x...

有什么想法为什么在IIS服务器上运行时模拟不起作用?

最佳答案

我在这里找到了答案:

http://support.microsoft.com/kb/810572

“Kerberos无法在负载平衡的体系结构中工作,并且IIS退回到NTLM身份验证。因为您不能使用NTLM进行委派,所以任何需要委派的应用程序或服务都无法工作。有关更多信息,请单击下面的文章编号,以查看微软中的文章”

确实是这样。我现在尝试使用另一台没有负载平衡的机器,它可以正常工作。

唯一令我惊讶的是身份的ImpersonationLevel仍然是Impersonate而不是Delegate ...

关于asp.net-mvc-3 - 在IIS上运行时,ASP.NET Web应用程序中的模拟不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11079651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com