- PR -

.NET Remoting 通信のセキュリティについて

1
投稿者投稿内容
セリカ
会議室デビュー日: 2006/12/18
投稿数: 12
投稿日時: 2007-05-23 14:37
.NET Remoitng を用いて、2台のマシンでリモート処理を行いたいのですが、
セキュリティを有効にすると何故か成功しません。

冗長になると焦点がずれそうなの割愛させて頂きます。

【サーバ側の構成ファイル(channelタグ)】
 <system.runtime.remoting>
  <application>
   <channels>
    <channel ref="tcp" port="8000" secure="true">
   </channels>
  </application>
 </system.runtime.remoting>

【クライアント側の構成ファイル(channelタグ)】
 <system.runtime.remoting>
  <application>
   <channels>
    <channel ref="tcp" secure="true">
   </channels>
  </application>
 </system.runtime.remoting>

上記の設定で、サーバプログラムとクライアントプログラムを1台の
マシン内で実行すると、リモート処理は成功します。
しかし、サーバプログラムとクライアントプログラムをそれぞれ別のマシンで
実行すると、以下の例外が出ます。
例外Exception:System.Security.Authentication.AuthenticationException
例外メッセージ:「リモート側のセキュリティの必要条件が認証中に満足されませんでした。
ProtectionLevel および ImpersonationLevel を増加して実行してください。」

MSDNを読む限り、secureプロパティをtrueにすると、
「tokenImpersonationLevelプロパティがIdentificationに、protectionLevelプロパティがEncryptAndSignに設定されます」
と書いてあります。
ここで、以下のように書いてみたらアクセスできるようになりました。

【サーバ側の構成ファイル(channelタグ)】
    <channel ref="tcp" port="8000" secure="true" tokenImpersonationLevel="Identification" protectionLevel="None">

【クライアント側の構成ファイル(channelタグ)】
    <channel ref="tcp" secure="true" tokenImpersonationLevel="Identification" protectionLevel="None">

protectionLevelのみをNoneにすると、例外が出なくなりました。

protectionLevelを設定して、サーバプログラムもクライアントプログラムも同一のマシンで実行したら成功します。
protectionLevelを設定して、サーバプログラムとクライアントプログラムを違うプログラムにしたら例外が発生します。

マシン間のリモート処理でprotectionLevelの設定というのは元々無理なんでしょうか?

開発環境:VS2005
サーバプログラムの実行環境:WindowsXP SP2(.NET Framework 2.0)
クライアントプログラムの実行環境:WindowsXP SP2(.NET Framework 2.0)

どなたか、ご教授願えませんでしょうか?
よろしくお願いいたします。


[ メッセージ編集済み 編集者: セリカ 編集日時 2007-05-23 14:41 ]
HAN
会議室デビュー日: 2007/05/24
投稿数: 5
投稿日時: 2007-05-25 16:07
サーバ側のTcpChannelのrejectRemoteRequestsプロパティがtrueになっているということはありませんか?

これは異なるアプリケーションドメインからの接続を禁止するものですので、外部マシンからは接続できないとしたら怪しい気がします。
1

スキルアップ/キャリアアップ(JOB@IT)