2

我正在使用模拟用于访问 UNC 共享上的文件,如下所示。

  var ctx = ((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate();
  string level = WindowsIdentity.GetCurrent().ImpersonationLevel);

在使用 IIS6 的两台 Windows 2003 服务器上,我得到了不同的模拟级别:一台服务器上的委派和另一台服务器上的模拟

这会导致我无法以“模拟”级别访问服务器上的 UNC 共享。

什么可能导致这种差异?我搜索了应用程序池、站点和虚拟目录的 machine.config 和 IIS 设置 - 但无法找到此问题的原因。

4

3 回答 3

7

听起来您的 Active Directory 信任其中一台计算机进行委派,但另一台计算机不是。如果应用程序池标识是网络服务,请确保计算机帐户在 AD 中标记为“信任委派”。

您可能需要让您的 AD 管理员强制进行复制,然后注销/登录到您的工作站以刷新您的 Kerberos 票证缓存。

于 2010-04-28T03:40:02.080 回答
2

如果您使用 localhost 作为网络服务器进行测试并且它可以正常工作,但在部署时您收到错误,您可能会遇到双跳问题......在这篇博文中概述

于 2009-04-29T05:24:37.760 回答
1

对于我们执行 Impersonate() 的应用程序之一,我们发现我们必须修改应用程序池所有者的本地安全策略,并将该帐户添加到以下策略/组:

  1. 作为操作系统特权的一部分。
  2. 身份验证后模拟客户端。

在服务器上,运行开始 > 所有程序 > 管理工具 > 本地安全策略,然后导航到本地安全策略 > 用户权限分配并查找上述两个策略。

于 2011-03-25T16:33:06.490 回答