▼セキュリティ保護された アプリケーションの構築 認証、認定、および通信のセキュリティ保護
▼NET リモート処理のセキュリティ
セキュリティで保護された .NET リモート処理のソリューションを実装する方法を説明します。
.NET Framework はリモート処理インフラストラクチャとして、 クライアントがリモートのアプリケーション ドメインおよびプロセスでホストされるオブジェクトや、 リモート コンピュータのオブジェクトと通信することを可能にします。

▼NET リモート処理のアーキテクチャ
下記の図 は、リモート オブジェクトが ASP.NET 内でホストされるときの基本的な .NET リモート処理のアーキテクチャを示しています。通信用の HTTP チャネルを組み合わせた ASP.NET ホストの使用は、セキュリティが重要な考慮事項である場合に推奨される方法です。これは、ASP.NET ホストを使用すると、リモート オブジェクトは ASP.NET と IIS に用意されている基本的なセキュリティ サービスを利用できるようになるためです。

▼NET リモート処理のアーキテクチャ
クライアントは、イン プロセスのプロキシ オブジェクトと通信します。認証のための資格情報 (ユーザー名、パスワード、証明書など) は、リモート オブジェクトのプロキシを通じて設定されます。メソッドの呼び出しは、シンク チェインを通過して進み、ネットワークを通じてデータを送信する役割を持つトランスポート シンクに達します (シンク チェインには、データの暗号化などを実行するために、独自のカスタム シンクを実装することができます)。サーバー側では、呼び出しは同じパイプラインを通過してから、オブジェクトにディスパッチされます。
全体で使用している プロキシという用語は、クライアント側のプロセス内のプロキシ オブジェクトを指しており、これを通じてクライアントはリモート オブジェクトと通信します。プロキシ サーバーという用語とは違いますのでご注意ください
▼リモート処理のシンク
NET リモート処理では、クライアントがリモート オブジェクトのメソッド呼び出しを実行すると、トランスポート チャネル シンク、カスタム チャネル シンク、およびフォーマッタ チャネル シンクが使用されます。
▼トランスポート チャネル シンク
トランスポート チャネル シンクは、クライアントとサーバー間でネットワークを通じてメソッド呼び出しを渡します。.NET には HttpChannel クラスと TcpChannel クラスが用意されていますが、このアーキテクチャは拡張性が高いので、独自のカスタム実装を組み込むことができます。
▼HttpChannel
このチャネルは、ASP.NET 内でリモート オブジェクトをホストするときに使用するように設計されています。このチャネルは HTTP プロトコルを使用して、クライアントとサーバー間でメッセージを送信します。
▼TcpChannel
Microsoft® Windows® オペレーティング システムのサービスまたはその他の実行可能ファイル内でリモート オブジェクトをホストするときに使用するように設計されています。このチャネルは TCP ソケットを使用して、クライアントとサーバー間でメッセージを送信します。
▼カスタム チャネル
カスタム トランスポート チャネルは、任意の基本トランスポート
プロトコルを使用して、クライアントとサーバー間でメッセージを送信することができます。たとえば、カスタム チャネルは名前付きパイプやメール
スロットを使用できます。
トランスポート チャネル シンクの比較
次の表は、2 つの主要なトランスポート チャネル
シンクを比較したものです。
表 TcpChannel と HttpChannel の比較
| 機能 | TCP チャネル | HTTP チャネル | コメント |
| 認証 | いいえ | はい | HTTP チャネルは IIS および ASP.NET に用意されている認証機能を使用しますが、Passport 認証とフォーム認証はサポートしていません。 |
| 認証 | いいえ | はい | HTTP チャネルは IIS および ASP.NET に用意されている認定機能をサポートしています。これには、NTFS アクセス権、URL 認定、およびファイル認定が含まれます。 |
| 通信のセキュリティ保護 | はい | はい | TCP チャネルは IPSec と共に使用します。HTTP チャネルは、SSL と IPSec の両方またはいずれかと共に使用します。 |
▼カスタム シンク
カスタム チャネル シンクは、クライアントとサーバー間で送信されるメッセージを修正するために、チャネル シンクのパイプライン内のさまざまな場所で使用することができます。暗号化および解読を行うチャネル シンクは、カスタム チャネル シンクの一例です。
▼フォーマッタ シンク
フォーマッタ シンクは、メソッド呼び出しを取得およびシリアル化して、ネットワークを通じて送信することが可能なストリームにします。.NET には、2 つのフォーマッタ シンクがあります。
▼バイナリ フォーマッタ
BinaryFormatter
クラスを使用し、メソッド呼び出しをパッケージ化して、シリアル化されたバイナリ ストリームにします。バイナリ
ストリームは、データをサーバーに送信するために、後で HTTP POST を使用してポストされます。バイナリ フォーマッタは、HTTP 要求の
Content-Type を "application/octet-stream" に設定します。
バイナリ
フォーマッタのパフォーマンスは、SOAP フォーマッタよりも優れています。
▼SOAP フォーマッタ
SoapFormatter クラスを使用し、メソッド呼び出しをパッケージ化して SOAP メッセージにします。HTTP 要求では、コンテンツ タイプが "text/xml" に設定され、HTTP POST を使用してサーバーにポストされます。