ゆーたんのつぶやき

株式会社ノークリサーチにてIT関連のシニアアナリストとして活動しています。

XMLHttpProxy



ちょっと前のエントリですが、SunでAjaxに注力されているGreg Murray氏が
Ajaxで複数ドメインに渡ってデータを取得したい場合の対処としてプロクシ
を用いる方法を紹介しています。
http://weblogs.java.net/blog/gmurray71/archive/2006/07/the_xmlhttpprox.html


ドメインとデータをやりとりしたい場合はJSONPが一般的かなという感じがします。
FireFox限定で構わなければgreasemonkeyを使うという手もありますし、Flashなら
crossdomain.xmlで対処するのが通例かと思います。
ですが、JSONPのようにクライアント側のスクリプトで対処する場合にはセキュリティ
上の不安もありますし、ブラウザがバージョンアップしてJavaScriptの実行に関する
セキュリティを強くした場合に動作しなくなるという心配もあります。


ここで紹介されているプロクシを用いる方法は下記のようなメリットがあるかと思います。
1. プロクシがセキュリティ上のクッションの役割を果たす
2. コンテンツの変換やキャッシュを行うことができる
3. 認証処理を自動化させることができる
一方で、
A. パフォーマンス上のオーバーヘッドが生じる
B. 高負荷なサイトではクラスタ構成などをちゃんと考えないといけない
C. システムの構成要素が増える
といったデメリットはありますが、メリットとのバランスをしっかり考慮すれば
有効な選択肢の一つではないかと考えています。


特に今後重要ではないかと考えているのは2.と3.のポイントです。セキュリティ上
の事情や商的な理由などで認証のかかった複数のWebサービスからデータを取得して
マッシュアップするということがこれからは行われるようになるだろうと思います。
その際にまず課題になるのは認証の制御です。さらに、サービス提供元のアクセス
権限よりもさらに細かいレベルでコンテンツの部分的な閲覧の可否を制御したいと
いうことも出てくるでしょう。そうした場合には2.の特性がとても役に立ちます。


実はこのXMLHttpProxyがボクの所属するTommorroWEB事業部の『セーフラウザ』の
構成要素である「セーフラウザプロクシ」ととても良く似ているので驚きました。
(勿論こうした発想は以前からありましたので、至極オーソドックスだと思います)
セーフラウザプロクシは
・アカウント代替機能
  プロクシがログイン処理を代替することで、クライアント側では
  より強固なアカウントを利用できる(利用期間制限や文字数制限など)
・ファイアーウォール機能
  SQLインジェクションCSRFを防止するWAFとしての役割
・コンテンツフィルタリング機能
  コンテンツの中に個人情報が含まれる欄は「******」するなど
といったようにセキュリティという観点で見たときのプロクシのメリットに注目
した作りになっています(ちょっと手前味噌気味ですみません......)
XMLHttpProxyも認証への対応を今後のステップとして挙げているようですし、
Googleシングルサインオン関連の技術投資にはかなり積極的だそうなので
認証の管理は今後重要なポイントになってくるだろうと思います。


外部のWebサービスを利用するということは当然セキュリティのリスクも高まります。
そうした際に認証管理や各種のセキュリティといったことが重要ポイントになって
くるわけですが、プロクシという考え方がカバレッジの広さという点で一つの有力な
解決策になっていくかも知れないなと今回のブログを見て思いました。


ちなみにGreg Murray氏は昨年のJavaOneでお会いしましたが、日本語がとても上手です。
以前、インタビューの映像を観た時にはデスクの上にポケモン系ないしはジブリ系と
思しきフィギュアもチラリと見えたので、日本のアニメがお好きなのかも知れません。