3

いくつかのサービスを提供する複雑な.NETRemotingサーバーアプリがあります。クライアントは現在、tcpおよびhttpチャネルを使用してサーバーに接続できます。

ここで、いくつかの新しい管理サービスを実装する必要がありますが、それらの可用性をローカルマシンに制限したい、つまり、これらの新しいサービスを使用できる管理ツールを作成したいが、機密データがサーバーから物理的に離れないようにしたい、そのため、同じサーバーコンピューターでの管理ツールの実行を制限する必要があります。

新しいサービスを追加し、管理ツールで使用するためにipcチャネルをサーバーに登録することも考えました。ここで問題が発生します。リモートクライアントがtcpまたはhttpチャネルを使用してこれらの新しい管理サービスに接続するのを防ぐにはどうすればよいですか。app.configで「アセンブリAのクラスCによって実装されたレジスタサービスx、ipc経由でのみ使用可能」、「アセンブリAのクラスDによって実装されたレジスタサービスy、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 に答える