如何发送用户凭证以便在使用WCF的远程计算机上使用?

问题描述:

我有两台机器,我们将它们称为机器A和机器B.机器B正在运行用C#.net编写的Windows服务作为本地系统帐户。机器A告诉机器B的服务(使用WCF)打开位于网络上的文件。由于本地系统不是网络用户,因此它无法访问网络文件,并且无法打开文件。目前,我正在读取机器A中的文件,并将它们作为字符串序列化为机器B,然后将它们本地写入B.我考虑为机器B制作通用网络帐户,以便它可以访问网络,但是,是不可取的。有什么方法可以让机器B使用机器A的用户帐户打开文件?我看了一下系统安全负责人的身份类别,是否可以使用它们?如何发送用户凭证以便在使用WCF的远程计算机上使用?

MSDN - How to: Impersonate a Client on a Service

在Windows 通讯基础(WCF)服务 模拟客户端使服务代表客户执行操作 。对于行动 受访问控制列表(ACL) 检查,如进入目录 和文件一台机器或访问 SQL Server数据库,通过ACL检查是 对客户端用户帐户

另外不要忘记配置您的服务以使用Windows身份验证并使用受支持的绑定。

+0

好吧,看起来像我主要工作,但是当我检查client.ClientCredentials.Windows.ClientCredentials.UserName它看起来是空的。它看起来像没有从Active Directory获得我的凭据,但其他一切似乎都应该如此。 – MGSoto 2009-08-11 16:43:25

+0

@MGSoto,ClientCredentials.Windows.ClientCredentials.UserName不用于检索客户端凭据,而是用于在必要时提供一组不同的Windows凭据(基本上只设置一个属性),以获取当前用户使用Environment.UserName或System.Windows .Forms.SystemInformation.UserName ...但也有其他方法 – 2009-08-11 17:04:45

+0

好的,这是有道理的。我希望它能告诉我它会认为是登录用户。任何想法,为什么我仍然可能获得访问被拒绝的错误?我几乎一直跟随MSDN,唯一的区别是不是添加数字,而是打开一个文件。 – MGSoto 2009-08-11 17:08:07