“バインド” .NET Remotingサーバーの特定のチャネル(tcp、http、ipc)へのサービス?

StackOverflow https://stackoverflow.com/questions/234067

  •  04-07-2019
  •  | 
  •  

質問

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

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

新しいサービスを追加し、管理ツールで使用するためにサーバーにipcチャネルを登録することも考えました。ここで問題が発生します。tcpまたはhttpチャネルを使用してこれらの新しい管理サービスに接続するリモートクライアントをどのように防ぐことができますか? 「登録サービスx、アセンブリAのクラスCによって実装され、ipcを介してのみ使用可能」、「登録サービスy、アセンブリAのクラスDによって実装され、tcp / httpを介して使用可能」のように言えますか? app.configで(またはリモートインフラストラクチャクラスを使用して)?

「ipc経由でのみ使用可能」です私を困惑させる部分。 (いいえ、現在、WCFへの移植はオプションではありません。)

役に立ちましたか?

解決

RegisterWellKnownServiceTypeには、登録するチャネルを指定できるオーバーロードはなく、IPCServerChannelにサービスを登録するメソッドもないため、いずれも機能しません。

考えられる最善の方法は、メッセージをフィルタリングするか、セキュリティを提供するChannelSinkを作成することです。これらをTcpChannelおよびHttpChannelのコンストラクタに追加して、管理者のみの呼び出しを除外できます。

他のヒント

呼び出し元のサービスのIPAddressを取得します。 127.0.0.1以外の場合は、呼び出しを拒否します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top