我有一个复杂的.NET Remoting服务器应用程序,它提供了一些服务.客户端当前可以使用tcp和http通道连接到服务器.
现在,我需要实现一些新的管理服务,但是我想将它们的可用性限制在本地计算机上,即,我想创建一个可以使用这些新服务的管理工具,但是我不希望敏感数据从物理上离开服务器,因此,我需要限制在同一台服务器计算机上运行管理工具.
我考虑添加新服务,并向服务器注册ipc通道以供管理工具使用.现在出现了问题:如何防止远程客户端使用tcp或http通道连接到这些新的管理服务?我可以说一下app.config中的“注册服务x,由程序集A中的类C实现,只能通过ipc使用”,“注册服务y,由程序集A中的类D实现,可以通过tcp / http使用”在app.config中(或使用远程处理基础结构类)?
是“只能通过ipc使用”部分使我感到困惑. (不,现在不可以移植到WCF.)
解决方法:
没有RegisterWellKnownServiceType的重载,它允许您指定要在哪个通道上进行注册,也没有IPCServerChannel上的任何方法来注册服务,因此这些都不起作用.
我能想到的最好的办法就是编写一个ChannelSink来过滤您的消息或提供安全性.可以将它们添加到TcpChannel和HttpChannel的构造函数中,以过滤掉仅管理员调用.