代码之家  ›  专栏  ›  技术社区  ›  MGSoto

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

  •  3
  • MGSoto  · 技术社区  · 16 年前

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

    2 回复  |  直到 16 年前
        1
  •  5
  •   Yvo    16 年前

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

    • 红色药丸 :尝试使两个跃点身份验证工作。确保至少有一个Windows Server 2003域,所有计算机之间的时间都正确同步,并为特定用户/计算机帐户设置正确的委派。如果您真的“幸运”,那么必须使用setspn配置SPN。

    • 吃蓝色药丸 :忽略两个跃点身份验证,在权限刚刚足够的帐户下模拟WCF服务,并在前面的步骤中检查授权。

    请原谅我的挫折,但我确实认为我在这个话题上的短暂经历已经让我花费了至少10年的生命。我不想看到别人发生这种事。无论如何,如果你觉得勇敢的话,这篇文章应该给你足够的谷歌关键词。

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

        2
  •  1
  •   tvanfosson    16 年前

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