我有一个复杂的.NET远程处理服务器应用程序,它提供了几个服务。客户端当前可以使用tcp和http通道连接到服务器。
现在,我需要实现一些新的管理服务,但我想将它们的可用性限制在本地计算机上,即,我想创建一个可以使用这些新服务的管理工具,但我不希望敏感数据以物理方式离开服务器,因此我需要限制在同一台服务器计算机上运行管理工具。
我考虑添加新服务,并向服务器注册ipc通道,以供管理工具使用。现在问题来了:如何阻止远程客户端使用tcp或http通道连接到这些新的管理服务?我是否可以在app.config (或使用远程处理基础设施类)中说“注册服务x,由程序集A中的类C实现,只能通过ipc使用”,“注册服务y,由程序集A中的类D实现,通过tcp/http使用”?
让我困惑的是“只能通过ipc使用”这一点。(不,移植到WCF现在不是一个选择。)
发布于 2008-10-24 16:00:37
RegisterWellKnownServiceType没有允许您指定在哪个通道上注册的重载,IPCServerChannel上也没有任何用于注册服务的方法,因此这些方法都不起作用。
我能想到的最好的办法就是编写一个ChannelSink来过滤您的消息或提供安全性。可以将这些添加到您的TcpChannel和HttpChannel的构造函数中,以过滤出仅限管理员的调用。
发布于 2008-10-24 15:49:42
获取调用它的服务的IPAddress。如果不是127.0.0.1,则拒绝调用。
https://stackoverflow.com/questions/234067
复制相似问题