3

我有一个复杂的 .NET Remoting 服务器应用程序,它提供了一些服务。客户端目前可以使用 tcp 和 http 通道连接到服务器。

现在我需要实现一些新的管理服务,但我想限制它们对本地机器的可用性,即我想创建一个可以使用这些新服务的管理工具,但我不希望敏感数据物理离开服务器,所以我需要限制在同一台服务器计算机上运行管理工具。

我考虑添加新服务并在服务器上注册 ipc 通道以供管理工具使用。现在问题来了:如何防止远程客户端使用 tcp 或 http 通道连接到这些新的管理服务?我可以在 app.config 中说类似“注册服务 x,由程序集 A 中的 C 类实现,只能通过 ipc 使用”,“注册服务 y,由程序集 A 中的 D 类实现,可通过 tcp/http 使用”之类的话(或使用远程基础设施类)?

令我困惑的是“只能通过 ipc 使用”部分。(不,现在不能移植到 WCF。)

4

2 回答 2

3

RegisterWellKnownServiceType 没有允许您指定要在哪个通道上注册的重载,IPCServerChannel 上也没有任何方法来注册服务,因此这些都不起作用。

我能想到的最好的方法是编写一个 ChannelSink 来过滤您的消息或提供安全性。这些可以添加到 TcpChannel 和 HttpChannel 的构造函数中,以过滤掉仅管理员调用。

于 2008-10-24T16:00:37.247 回答
1

获取调用它的服务的 IPAddress。如果不是 127.0.0.1 则拒绝呼叫。

于 2008-10-24T15:49:42.477 回答