[.NET Framework 3.5 セキュリティ/認証あれこれ] 部分信頼アプリケーションからの WCF の利用


環境:
Visual Studio 2008

.NET Framework 3.5 セキュリティ / 認証あれこれ

こんにちは。

メインタイトルの前に余計な帯をつけたのは、この切り口でいくつかノウハウを掲載しようと思ったためです。今日は、.NET Framework 3.5 におけるセキュリティ/認証系の拡張機能 (3.0 からの進化) の1つである掲題について記載します。

まずは、以下のサンプルをダウンロードしてください。

Windows Communication Foundation (WCF), Windows Workflow Foundation (WF) and Windows CardSpace Samples :
http://www.microsoft.com/downloads/details.aspx?FamilyId=2611A6FF-FD2D-4F5B-A672-C002F1C09CCD&displaylang=en

今日の説明は、このサンプルの中にある WCFScenarioPartialTrust というフォルダのデモについてエッセンスを記載します。 

一般ユーザ(家庭ユーザ) 向けサービスや、取引先へのサービスなど、インターネット上でおこなわれるサービス事業で高度な機能を提供したい場合、ベストプラクティスとしては AJAX や Silverlight などを使用するケースが考えられますが、それでももっと高度な表現を提供したいというケースがあるでしょう。この場合、ClickOnce 展開された WPF アプリケーションや XBAP のアプリケーション (XBAP も内部的には ClickOnce テクノロジーがベース) の採用を検討されると思います。
こうしたインターネットゾーンのアプリケーションシナリオでは、部分信頼の仕組みを使用することになりますが、.NET Framework 3.5 の WCF では、この部分信頼されたアプリケーションからの WCF の呼び出しが可能となっています。

では実際に、上記のダウンロードしたサンプルを動かしてみましょう。

まず、ClickOnce を使いますので、あらかじめ、IIS 7 のコンポーネントである [IIS 6 メタベース および IIS 6 構成互換性] をインストールしておいてください。(ClickOnce に関する こちらのブログ を参照)

  1. まずは、サービス側 (WCF 側) を設定します。
  • WCFScenarioPartialTrustBasicHttpXBAPCSservice を %SystemDrive%inetpubwwwrootservicemodelsamples にコピーし、IIS7 のマネージャを使用し、
    このフォルダを servicemodelsamples という名前のアプリケーションに変換します
  • WCFScenarioPartialTrustBasicHttpXBAPCSservice をリビルドします (この際、ビルドされた dll などが上記フォルダ内にコピーされます)
  • つぎにクライアントの XBAP アプリケーションを配置します。
    Visual Studio 2008 を管理者として実行し、WCFScenarioPartialTrustBasicHttpXBAPCSclient のプロジェクトを開き、発行してください (ビルドは、発行時に自動でおこなわれます)
  • これで準備は完了です。 

    この発行された XBAP を動かすと、足し算や引き算などのアプリケーションが動作します。この演算処理は、上記でインストールした WCF サービスが使われています。
    これは、サーバ to サーバの接続ではないという点は、セキュリティを考察する上で重要です。つまり、XBAP アプリケーションがブラウザ上にダウンロードされ、ユーザが参照しているブラウザ上から WCF サービスに接続をおこなっています (Java でいうところの、大昔のアプレットのアプリのようなものです)。無論、このシナリオでは、制限されたセキュリティで動作せざるを得ません。クライアントのプロジェクトのプロジェクトプロパティ ([セキュリティ] のタブ) をみて頂くとわかりますが、部分信頼の設定がおこなわれています。
    また余談ですが、ユーザがこのブラウザアプリケーション(XBAP)に接続したときのホストを元に、そのホスト上のサービスに接続する、といった処理も XBAP 上でコーディングされています。 (例:マシン名が myhost1 でも、ユーザは myhost1.domain.co.jp という名前で名前解決しているかもしれません。あるいは、IP アドレスかもしれません。)

    さて、この方式で呼び出される WCF サービスですが、「.NET Framework 3.5 からセキュリティが脆弱になった」ということではありません。あらゆる処理ができるわけではありませんので注意してください。
    この WCF サービスでは、ASP.NET の Medium Trust (Medium 信頼レベル) が使用されます。ASP.NET 2.0 の Medium Trust (Medium 信頼レベル) については、以下を参照してください。

    http://www.microsoft.com/japan/serviceproviders/technical/060718_2.mspx

    サービス事業者がサービスを提供するようなこうしたシナリオでは、この制限はむしろ自然な仕様であることをご理解いただけると思いますが、それ故に、一点注意があります。
    実はワークフローサービスを使うには Full Trust である必要があるという点です。つまり、結果として、このシナリオでワークフロー サービス ホスト (WorkflowServiceHost) を使用することはできませんのでこの点はご注意ください。

    関連ドキュメント
    http://msdn2.microsoft.com/en-us/library/bb412175.aspx
    http://msdn2.microsoft.com/en-us/library/bb943470.aspx

    で、明日以降ですが、実は米国出張のため、またしばらく投稿は空いてしまうと思います。御容赦ください、、、

     

    Comments (2)

    1. 環境: Visual Studio 2008 こんにちは。 メインタイトルの前に余計な帯をつけたのは、この切り口でいくつかノウハウを掲載しようと思ったためです。今日は、.NET Framework 3

    Skip to main content