C# 为什么可以';我不能在远程计算机上使用模拟打开文件吗?
我有一个用C#编写的WCF服务,托管在远程机器上,作为本地管理员帐户运行。从以active directory用户身份登录的计算机上,我发送了一个命令,该命令只告诉它在网络上打开一个文件。我有权访问该文件,但主机上的管理员帐户没有权限。我正在需要模拟的方法上使用[OperationBehavior(Impersonation=ImpersonationOption.Required)]元标记,并且已正确设置凭据类型和安全模式。我可以通过比较Windows标识来验证帐户是否确实试图被模拟,但我仍然得到一个访问被拒绝的异常。我认为这与active directory没有对模拟用户进行身份验证有关。我缺少什么吗?您可能还需要设置从web服务器到文件服务器的委派。这将允许文件服务器信任web服务器已验证的凭据。有关如何为应用程序设置委派的信息,请参阅本节,特别是有关配置AD的部分。您正在进入Kerberos安全和两跳身份验证的域。C# 为什么可以';我不能在远程计算机上使用模拟打开文件吗?,c#,.net,wcf,security,impersonation,C#,.net,Wcf,Security,Impersonation,我有一个用C#编写的WCF服务,托管在远程机器上,作为本地管理员帐户运行。从以active directory用户身份登录的计算机上,我发送了一个命令,该命令只告诉它在网络上打开一个文件。我有权访问该文件,但主机上的管理员帐户没有权限。我正在需要模拟的方法上使用[OperationBehavior(Impersonation=ImpersonationOption.Required)]元标记,并且已正确设置凭据类型和安全模式。我可以通过比较Windows标识来验证帐户是否确实试图被模拟,但我仍然
您有两个选择:
- 服用红色药丸:试着让两个啤酒花的身份验证生效。确保您至少有一个Windows Server 2003域,所有计算机之间的时间正确同步,并为特定用户/计算机帐户设置正确的委派。如果你真的“幸运”,你就必须用SetSPN配置spn
- 服用蓝色药丸:忘记两次跃点身份验证,在具有足够权限的帐户下模拟WCF服务,并在前面的步骤中检查授权
事件日志和网络监视器对于调试非常有用…只是一个想法。。。模拟就足以做到这一点吗?我真的希望是这样,我能想到的另一种让文件传播开来的方法是序列化它们。我可能能够获得一个虚拟帐户,它可以运行,但是…这实际上是一个托管应用程序场景,尽管我认为可能AD服务器不允许模拟?@MGS您的web服务器必须得到AD的信任,才能代表用户进行委托。如果它不可信,它就不会工作。我使用委托建立WebDAV,没有太多麻烦。可能是因为我们已经在服务器2003域中,我有一大群Windows管理员来进行实际配置。这已经变得比必须的麻烦多了,我同意,我不想处理Kerberos身份验证。看起来我们正在采取简单的方法,创建一个具有有限访问权限的特定于应用程序的用户。