为什么我不能在远程计算机上使用模拟打开文件?

时间:2009-08-11 18:53:12

标签: c# .net wcf security impersonation

我有一个用C#编写的WCF服务托管在远程计算机上,作为本地管理员帐户运行。从我作为活动目录用户登录的计算机,我发送的命令只是告诉它在网络上打开一个文件。我有权访问该文件,但主机上的管理员帐户却没有。我在需要模拟的方法上使用[OperationBehavior(Impersonation = ImpersonationOption.Required)]元标记,并且我正确设置了凭据类型和安全模式。我可以通过比较Windows身份来验证帐户确实是在冒充,但我仍然会获得访问被拒绝的异常。我认为这与活动目录有关,而不是对模拟用户进行身份验证。有什么我想念的吗?

2 个答案:

答案 0 :(得分:5)

您正在进入Kerberos安全域和两次跃点身份验证 您有两种选择:

  • 拿红色药丸:尝试让两个啤酒花认证工作。确保您至少拥有一个Windows Server 2003域,在所有计算机之间正确同步的时间,并为特定用户/计算机帐户设置正确的委派。如果您真的“幸运”,则必须使用SetSPN配置SPN。

  • 拿蓝色药丸:忘记两次跳转身份验证,在具有足够权限的帐户下模拟WCF服务,并在之前的步骤中检查授权。

    < / LI>

原谅我的沮丧,但我认为我对这个话题的简短经验至少花了我10年的生命。我讨厌看到发生在其他任何人身上。无论如何,如果你感到勇敢,这篇文章应该会给你足够的谷歌关键词。

事件日志和网络监视器对调试很有用......

答案 1 :(得分:1)

您可能还需要设置从Web服务器到文件服务器的委派。这将允许文件服务器信任Web服务器已验证的凭据。有关如何为应用程序设置委派的信息,请参阅此MSDN article,特别是有关配置AD的部分。