e-Commerceにおけるユーザ認証のながれ
|
|
e-Commerceにおけるユーザ認証のながれ
従来のユーザ認証は、サイト毎に行うものである。しかしながらユーザの立場にたてば、その都度ユーザ名とパスワードを入力するのはわずらわしい。サイト毎にパスワードが異なる場合も多い。ブラウザ側でこれに対応してはいるが、PCにこの情報を蓄積するので、セキュリティの問題があろう。更にはサイト毎にユーザ登録の際、勤務先や年齢などの情報の入力が要求される。そのようなログイン手続きを一箇所でやってくれれば、ユーザとしてはただ一度のログインで多くのサイトで買い物をしたりできるようになる。サーバ側でも、認証のための設定が単純化される。
マイクロソフト社のPassportのSingle Sign-in(SSI)サービスは、そのような問題のひとつのソリューションである。この様な認証手順は、今後拡大するものと思われる。MicrosoftはIISベースのサーバとASPを対象にしており、サーブレットやJSPとは馴染まない。しかしASPを介してサーブレットをコールさせることは可能である。Sunの首脳によればSun陣営は対抗馬を用意している模様である。そうなれば、個々に認証するアプリケーションよりも、このようなメカニズムを利用した認証やユーザ管理のアプリケーションの開発が今後重要となってこよう。従って、ここではJSP対応のSSIの到来を期待して、まずMicrosoftのSSIの概要を理解することにする。
MicrosoftのSSI(シングル・サイン・イン)とは
マイクロソフト社のPassportのSingle Sign-in(SSI)サービスは、Passportのユーザがただ一回のサイン・イン(ログイン)のネームとパスワードを入力するだけで、これに参加している全てのウェブ・サイトに参加できる仕組みである。メンバーが選択して、基本的な統計情報(生年月日、都道府県、ニックネームなど)をベースとしたサイン・イン時のプロファイル・データを構築すると、これが参加サイトにこの情報が共有されるので、ユーザが各サイト毎にこの様なデータをその都度入力する必要がなくなり、時間が節約できる。Passportのサイン・イン・ネームはメンバー個人に対応しているので、メンバーはPassportの参加サイトにいつでもどのような種類の端末からでもアクセスできる。PassportのURLをアクセスして実際に体験したほうが、より理解が早い。
Passportは、識別、認証、通知、スキーム化された蓄積といった一連のサービスにより、Passportのユーザはただひとつのサイン・イン・ネームとパスワードで、あるサービスから他のサービスへ、あるアプリケーションから他のアプリケーションへ、あるいはある環境から別の環境へ移動することが出来る。
Passportは、Single Sign-inサービスを実現するのに、セキュア・ソケット層(SSL)、HTTPリダイレクション、クッキー、Javaスクリプト、および強力な対称鍵暗号(トリプルDES)といった標準のウェブ・テクノロジーと技法を使っている。従ってメンバー側の端末はその為のソフトウエアをダウンロードする必要はない。Passportはマイクロソフト社のInternet Explorerのバージョン4.0以降とNetscape Navigatorのバージョン4.0以降とコンパチブルである。PassportのSingle Sign-inサービスを参加サイト側のサーバに実装するには、Passportクッキーに含まれているサイン・インとプロファイルに関する情報の暗号解除のためのソフトウエア(「Passport Manager」と呼ばれるサーバー・サイドCOMオブジェクト)をインストールする必要がある。
以下にPassportの認証の仕組みを簡単に説明する。Passportは認証のためのSSIプロトコルと、クレジット・カードなど商品購入のための情報を入力する財布(Wallet)プロトコルがあるが、ともに類似したメカニズムを使っている。
2,3: 参加サイトのWebサーバがユーザのブラウザをウェル・ノウンのPassportサーバにリダイレクトする。
4,5: PassportサーバがSSL接続を使ってサイン・イン・ページを送信、ユーザはこれに入力して送信する。(ユーザがすでにサイン・イン済みであれば、このステップはスキップされる)
6,7: Passportサーバはこれをリダイレクトにより、もとの参加サイトのサーバに戻す。
8: 参加サイトのサーバは要求されているウェブ・ページとともにそのサイトの為の認証とプロファイルのクッキーをブラウザにかえす。
というものである。
認証情報は、リダイレクトされるHTTPメッセージのクエリ文字列にトリプルDESで暗号化される。
財布プロトコルもこれに類似していて、ユーザは認証情報だけでなくクレジット・カード番号など個人情報を登録できる。
云ってみればSSIはPassportの認証サイトとの往復を最短で済ませるようにして、ユーザからはあたかもPassportが参加サイトに組み込まれているように見せている。ユーザはPassportのサイトを訪問してそこでサイン・インする必要がなく、その代り参加サイトのページにあるログイン用のロゴをクリックする。これがあたかもPassportサーバのサイン・インのページへのリンクのように機能する。
サイン・インが正常に終わると、Passportはセッション・クッキーをユーザのディスクに書きこんで、HTTPリダイレクト・メッセージでもとのウェブ・サイトのページに戻す。このメッセージのクエリ文字列には暗号化されたタイムスタンプつきのそのユーザの認証チケットとプロファイル情報が含まれている。このプロファイルにはユーザの64ビットからなるPUID(Passport Unique ID)が入っている。これがユーザの識別情報になるが、そのユーザのパスワードではない。その他のプロファイル情報としては国/地域、州(米国のみ)の必須項目以外に前記の名前、ニックネームなどがある。
各参加サイトのサーバにインストールされているPassportマネージャは、この認証チケットとプロファイルをそのサイトのためのクッキーとしてユーザのディスクに書き込む。勿論これは先ほどのクッキーや他のサイトのクッキーとは隔離されている。
別の参加サイトにこのユーザが訪問したときは、同様Passportサイン・インのロゴが表示されているが、そのロゴをクリックするとPassportサーバは現在のPassportセッション・クッキーが存在することが判るので、今度はサイン・インのページを表示することなくもとのサイトに戻す。これを「サイレント認証(silent authentication)」という。結果としてそのサイト固有のそのユーザのクッキーが書き込まれる。ユーザはこの間の推移は一切感知しない。最終的に二つの参加サイトにこのユーザがサイン・インし、各参加サイトはそのサイトのためのクッキーをそのユーザのディスクに書き込む。参加サイトは、このメカニズムをオーバライドして、所謂ハード・サイン・イン(そのサイトでパスワードを入力する)を毎回させることも可能である。
ユーザがサイン・イン済みのサイトを再度訪問したときは、Passportのロゴをクリックする必要はなくなるようにすることもできる。またログアウトのロゴを表示させ、ログイン時と同じようにPassportサーバがログアウトのページを表示させ、それによりユーザがログアウトを終了させると、それまで登録した全てのサイトのクッキーを消去させる。Passportのセッション・クッキーにはそのユーザがサイン・インしたサイトの一覧がリストアップされているので、Passportサーバはそのサイトのサイン・アウト用のURLを呼び出し、セッション・クッキーの消去をさせる。
プロファイル・データは暗号化されているが、Passportマネージャの属性呼出操作、例えばoMgr.Profile("Nickname")でそのユーザのニックネームのストリングを取り出すことができる。