CodeZine(コードジン)

特集ページ一覧

企業システムでも使われるウィジェット技術
第2回 「OpenAjax Hub 2.0 による安全なマッシュアップ」

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/11/24 14:00

目次

管理されないハブによるpublish/subscribeの例

 前述のように、信頼度の異なるウィジェットを単純にマッシュアップすることによるセキュリティ的な脅威が発生するため,管理されたハブのセキュリティ機能が重要になってきます。ただし信頼できるウィジェットを組み合わせてマッシュアップを行う場合(たとえば自分の作成したウィジェットを組み合わせる場合)には、管理されないハブを使用することができます。管理されないハブはプログラムの大きさやパフォーマンスの点で、管理されたハブよりメリットがあります。

 管理されないハブに対してメッセージを発行 (publish) するコードの例を以下に示します。

var myData = { x: 12.3, y: 45.6 };
OpenAjax.hub.publish("org.example.myTopic", myData);

 ここで“org.example.myTopic”はメッセージを発行するトピックの名前、myData は任意のJavaScriptオブジェクトです。

 メッセージを受信する場合は、購読のためのコールバック関数を定義し、トピック名を指定して購読(subscribe) します。

function myCallbackOnDataReceive(topic, data){
    alert(“Received data! x = ” + data.x +”, y = ” + data.y);
}
        var subscription = OpenAjax.hub.subscribe(“org.example.myTopic”
                                                  , myCallbackOnDataReceive);

 subscribe関数は、復帰値として subscription というオブジェクトを返します。購読を中止するときにはこの subscription オブジェクトを指定して、unsubscribe 関数を呼び出します。

OpenAjax.hub.unsubscribe(subscription);

管理されたハブによる publish/subscribe の例

 管理されたハブ (ManagedHub) では、個々のウィジェットをサンドボックス内で実行することにより、ウィジェットを安全にマッシュアップすることができます。管理されたハブはセキュリティを実現するために、より複雑な構造を持っています。(図3)

図3. 管理されたハブの仕組み
図3. 管理されたハブの仕組み

 管理されたハブを使ってウィジェットのマッシュアップを行う手順のおおまかな流れは以下のとおりです。

  1. まず、ホストアプリケーションはOpenAjax Hubのライブラリをロードし、管理されたハブのインスタンス ManagedHub を生成し、保持します。
  2. また,ホストアプリケーションは個々のウィジェットをコンテナの中にロードします。コンテナとはウィジェットのコードをカプセル化するための仕組みの総称ですが、管理されたハブの場合には、サンドボックスを実現するために、HTMLのIFRAME要素がコンテナとして使用されます。
  3. それぞれのコンテナでは、ハブの機能を使用するためのHubClient の機能が提供されます。ウィジェット内のコードはHubClientを使用し、ManagedHub経由でホストアプリケーションや他のウィジェットと通信を行います。
  4. また、ホストアプリケーションはセキュリティ・マネージャ機能をコールバック関数として提供する必要があります。ウィジェットがメッセージの publish / subscribe を行った場合に、このコールバック関数が呼び出され、この中でセキュリティポリシーに応じて、処理を中断するか継続するかといった制御を行うことが可能です。

 以下に、管理されたハブによるウィジェットのマッシュアップ例を見てみましょう。

準備

 管理されたハブではウィジェットをサンドボックス実行するために、各ウィジェットを(少なくとも見た目上)異なるサーバから IFRAMEの中にロードします。一台のマシン上にホストアプリケーションとウィジェットを両方配置するためには、あらかじめ仮想ホストなどの仕組みを使って、同じサーバに異なるサーバ名でアクセスできるようにします.

 以下の例では、ホストアプリケーションを mashup.example.com というサーバから、2つのウィジェットをそれぞれ widget1.example.com、widget2.example.com というサーバからダウンロードしています。自分のパソコン上で簡単に試す場合には、たとえば hosts ファイルに

127.0.0.1        mashup.example.com
127.0.0.1        widget1.example.com
127.0.0.1        widget2.example.com

 のように記述しておくといいでしょう。

 また、OpenAjax Hub 2.0のライブラリをWebサーバ上に展開して、アクセスできるようにしておく必要があります。

 以下の例では、http://mashup.example.com/hub20 というURLの下に、公開されているOpenAjax Hub 2.0のリファレンス実装が展開されていることを前提としています。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

あなたにオススメ

著者プロフィール

  • 吉濱 佐知子(ヨシハマ サチコ)

    IBM 東京基礎研究所 専任研究員 日本アイ・ビー・エム(株)東京基礎研究所で、情報セキュリティ関係の研究に従事しています。特にWeb 2.0/SaaSのセキュリティ、情報フロー制御や情報漏えい対策技術に興味を持っています。

バックナンバー

連載:developerWorks Liaison

もっと読む

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5