两个网络服务之间的命名管道通信

时间:2015-10-05 16:35:01

标签: c# security service named-pipes

我有一个(.NET 4.0)Windows服务(在" NT AUTHORITY \ Network Service"凭证下运行)在不同的机器上运行,这些服务正试图通过命名管道相互通信。 这两台机器都是WORKGROUP的一部分,而不是域名。

这是命名管道客户端的创建方式:

   ClientStream = new NamedPipeClientStream(%ServerName%, PipeName, PipeDirection.InOut, PipeOptions.Asynchronous);

这是命名管道服务器的创建方式:

ServerStream = new NamedPipeServerStream(PipeName, PipeDirection.InOut, 254, PipeTransmissionMode.Message, PipeOptions.Asynchronous);

当客户端尝试连接到服务器时(通过调用ClientStream.Connect()),抛出以下异常(在客户端):

  

System.IO.IOException:登录失败:未知的用户名或错误   密码

在安全事件日志(服务器端)中发现以下安全审核失败:

  

登录失败:原因:未知用户名或密码错误用户   名称:%ClientName%$域:工作组登录类型:3登录过程:   NtLmSsp身份验证包:MICROSOFT_AUTHENTICATION_PACKAGE_V1_0   工作站名称:%ClientName%

     

登录尝试者:MICROSOFT_AUTHENTICATION_PACKAGE_V1_0登录帐户:   %ClientName%$ Source Workstation:%ClientName%错误代码:0xC0000064

我尝试了以下(没有成功):

  • 将PipeAccessRights.FullControl授予" NT AUTHORITY \ NETWORK 服务",在ServerStream上
  • 向ServerStream上的" Everyone",授予PipeAccessRights.FullControl
  • 使用TokenImpersonationLevel = Impersonation创建ClientStream(因此服务器可以冒充客户端的安全性) context [NetworkService]在其本地系统上)

客户端似乎显示其计算机帐户(%ClientName%$ )凭据以连接到服务器,但服务器拒绝这些凭据(由上面的安全审核失败证明)

有没有办法在这两个网络服务之间建立命名管道连接?

0 个答案:

没有答案