【问题标题】:WCF Service using WindowsIdentity? Directory access permissions使用 WindowsIdentity 的 WCF 服务?目录访问权限
【发布时间】:2011-12-02 07:54:42
【问题描述】:

我有一个使用模拟的 WCF 服务。我已通过我添加到我的服务中以进行调试的以下方法验证了正在使用正确的身份。

    [OperationBehavior(Impersonation = ImpersonationOption.Required)]
    public AuthUser GetUser()
    {
        AuthUser user = new AuthUser();
        user.UserName = WindowsIdentity.GetCurrent().Name;
        return user;
    }

没有指定 [OperationBehavior] 我收到NT AUTHORITY\NETWORK SERVICE,正如我所期望的那样。使用该属性,我看到用户返回了我期望的DOMAIN\DOMAINUSER
该服务目前仍在返回一个错误,它无权执行以下行中的文件操作:

FileStream fs = new FileStream(filename, FileMode.Create,FileAccess.Write);

我已通过检查 Active Directory 组和成员身份验证该目录对域用户具有完全访问权限。

我在服务的 web.config 中定义了<identity impersonate="true" />,并在客户端代码中定义了这个:

        client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation

如果相关,这是我的服务端绑定:

        <wsHttpBinding>
            <binding name="default" maxReceivedMessageSize="200000">
                <security mode="Message">
                    <message clientCredentialType="Windows" />
                </security>
            </binding>
        </wsHttpBinding>

在 IIS 中启用匿名访问,因为我让 WCF 处理身份验证。

【问题讨论】:

  • 不是很清楚,但是你在服务方法中创建 FileStream 对吗?
  • 是的。具体来说,它位于一个私有方法中,由 [OperationContract] 定义的方法调用。
  • 该文件是否在运行 WCF 服务的同一台机器上,或者您是否尝试访问网络共享上的文件?
  • 文件位于使用 UNC 路径的网络共享上。

标签: c# wcf impersonation delegation


【解决方案1】:

由于您尝试创建的文件位于网络共享上,因此模拟尝试进行两个网络跃点。一次从客户端到 WCF 服务,下一次从 WFC 服务到网络共享。默认情况下,模拟不允许这样做。它是必须在 Active Directory 中更改的策略。尝试写入本地文件系统上 WCF 服务所在的位置,它应该可以工作。

这里是 MSDN 详细信息的链接http://msdn.microsoft.com/en-us/library/ff649252.aspx,这篇文章可能会对您有所帮助Impersonation and Delegation in ASP.NET

【讨论】:

  • 感谢您提供的链接,我已经阅读了部分内容,很快就会完成。一个问题...如果服务通过模拟以用户身份运行,它不应该使用这些凭据来访问网络,因为它实际上是以该用户身份运行的吗?
  • 它以该用户身份运行,但与您在本地登录框中的权限不同。我相信缺少的特权之一是委托,因此您的模拟线程无权将该 id 传递到另一个盒子。我认为您可以打开用户模拟委托,但必须在 Active Directory 中完成。这是为了传统的 NTLM 安全性。如果您查看 MSND 文档,那么如果您设置为使用 kerberos,那么默认情况下您会获得委托。
  • 您的链接和解释非常有帮助。非常感谢。我可能会根据我目前所读到的内容来调查使用 LogonUser API。
猜你喜欢
  • 2010-10-27
  • 2012-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多