Silverlight 2をApacheで使うためのイロハ--Silverlight 2の通信機能

dragan10
2008-06-04 16:39:01
  • このエントリーをはてなブックマークに追加

Webアプリケーションの認証

 Webアプリケーションでは、様々な形で認証が行われる。大きく分けて、2つの認証の方法があるといえるだろう。1つはHTTPのプロトコルレベルでの認証で、もう1つは通信内容による認証だ。

 HTTPのプロトコルレベルでの認証は、いわゆるBasic認証やDigest認証のことだ。Webサーバにアクセスしたときに認証ダイアログが出てくるタイプの認証がこれである(図1)。認証の仕組みについては、RFCできっちりと仕様が決められている。

図1 HTTPでの認証 図1 HTTPでの認証

 Apacheの場合、.htaccessやhttpd.confといった設定ファイルでこの種の認証を設定することができる。アクセス対象のリソースに対して直接的に制限を掛けることができるので、自分が書いたプログラムのバグでアクセス権の処理を誤るなどのリスクは少ないだろう。一方、ユーザに対する細かな配慮はできない(ブラウザのアクセス認証ダイアログが出てくるだけで、パニックになってしまうユーザだってたくさんいる)ため、不特定多数がアクセスしてくるようなサービスの場合は、この認証方式単体ですませるのは難しいかも知れない。

 通信内容を使う認証は、基本的にはサイトごとに作り込むものなので、実装はケースバイケースになる(例外は最近はやり始めたOpenIDで、通信内容を使う認証で広く仕様が受け入れられた初めてのケースになるだろう)。ログインのフォームもWebページとして作ることになるため、ユーザから見てわかりやすいものにできる。

 通信内容による認証でよく使われるのは、Cookieを使うやり方だ。ログインフォームで入力されたユーザ情報が正しければ、認証情報を含んだCookieを生成し、以降のページではそのCookieをサーバサイドのスクリプトが読み出してアクセス権の処理を行う。この手法をとるならば、Silverlight 2がCookieをどう扱うかを理解する必要がある。

 また、最近のWebアプリケーションでは、ログインの際にリダイレクトが使われるようになってきている。OpenIDでのログインや、Google App Engineが該当する。これらの技術では、Webアプリケーションそのものはログインの処理を扱わず、ログインの処理をするページやサイトへリダイレクトで処理を依頼するテクニックが使われる。Silverlight 2でこれらのログイン処理にどう対処すべきかを考える上で、リダイレクトヘッダがどう処理されるかを知っておく必要があるだろう。

Silverlight 2の実装

 実は、Silverlight 2は自分自身ではHTTPの通信を行っていない。ブラウザが提供するプラグインのAPIを通じて、いわばブラウザに通信して「もらって」いるのだ。

 この方法にはメリットもデメリットもある。大きなメリットは、ブラウザが持っている、プロトコルレベルでの認証情報やCookieをそのまま使えるということだ。Silverlight 2のプログラムからアクセスできるサーバは、デフォルトではもともと自分がいたサーバに限定されているが、これもブラウザ側で制限されていることであり、Silverlight 2のアプリケーションからあちこちのサーバをたたいて回るようなプログラムを書くことはできない(他のサーバへのアクセスも、サーバ側に設定ファイルをおくことで可能になるが、これについては別の回で触れよう)。

 デメリットとしては、HTTPのPUTとDELETEが使えないことがある。これらは、いわゆるRestfulなAPIを使う場合に必要なので、現状のSilverlight 2はRestful APIのクライアントにはなれないことになる。ただし、これについてはむしろサーバサイドでの対応が進むとマイクロソフトでは判断しているようだ。Flashなどでも同様の制限があるため、post tunneling(HTTPとしてはPOSTリクエストを使いながら、その中に擬似的なリクエストヘッダをおき、「実はPUTリクエストをやりたい」と知らせる)といった技術が一般的になっていくだろう。

さて──

 次回からは、いよいよSilverlight 2でプログラムを走らせ、実際に認証やCookieをどのように扱っていけばいいか試していこう。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]