Account Chooserそのものは標準仕様であり、その実装は複数存在しますが、ここではOpenID Foundation自身が提供するAccount Chooser実装、「Central Account Chooser」について紹介します。
Central Account Chooserでは、ユーザーが自身の使っているアカウントリストをブラウザのlocalStorageに保存し、任意のサイトでそのリストを使えるようにするために、「www.accountchooser.com」というドメインと「ac.js」というJSファイルを提供しています。プライバシー上の懸念から、ユーザーのアカウントリストは、www.accountchooser.comのサーバサイドには保存されません。Central Account Chooserはすべてクライアントサイドで動作するようになっています。
ここでは、筆者がAccount Chooserのデモ用に用意したRPを使って、実際にAccount Chooserの動きを見ていきましょう。
デモサイトにアクセスすると、以下のように3つのメニューが表示されます。まずは[Signup]のアイコンを押し、サインアップをしてください。
サインアップが完了すると、自動的にwww.accountchooser.comにリダイレクトされ、デモサイトに登録したアカウント情報をCentral Account Chooserに保存するかどうかを尋ねられます。これによりブラウザのlocalStorageに、いま登録したアカウントが保存されます(厳密には、登録した電子メールアドレスと名前が保存されます)。
ひとたびアカウント情報をCentral Account Chooserに登録すれば、それ以降再びデモサイトにAccount Chooser経由でログイン(ac/demo-top.pngの "Login (Accout Chooser)" をクリック)すると、ブラウザが自動的にwww.accountchooser.comにリダイレクトされ、保存されたアカウントが候補として表示されます。
また、利用したアカウントはデモサイトのドメインではなく、www.accountchooser.comというドメインとひも付けられたlocalStorageに保存されます。従ってこれ以降はAccount Chooserを利用しているその他のサイトでも、いま保存したアカウントが候補として表示されることになります。
ここまでのデモではID&パスワードベースのログインフローでCentral Account Chooserを使ってみました。
ここでは詳細については述べませんが、Central Account Chooserは、ID&パスワードベースのログインフロー以外に、(現状ではRP側にそれなりに設定が必要ですが)OpenIDやOAuthベースのログインフローでも利用できます。
デモサイトでは、OpenID ConnectのDiscoveryに対応しているため、OpenID Connectに対応したドメインのメールアドレス(例:<WHATEVER-YOU-LIKE>@connect-op.heroku.com)で一度アカウントを登録すれば、次回ログイン時からはOpenID Connectのフローを見ることができます。
前章で紹介したデモサイトでCentral Account Chooserを利用してみた方は薄々お気づきかもしれませんが、Central Account Chooserは、まだ決して使いやすいとはいえない状態です。
デモサイトのソースコードを読んでみると分かるのですが、Central Account Chooserを使ったからといって、RP開発者にとって何か楽になるというものではありません。OpenIDやOAuthベースのIdPと連携させるには、RP側にも、それぞれのプロトコルに関する知識がそれなりに必要になります。
この大きな要因は、Central Account Chooserがすべてをクライアントサイドで完結しているというところに起因しています。OpenIDやOAuthベースのIdPと連携させるには、少なからずサーバサイドでのやりとりが必要となるのです。
これらの複雑性を解消するために、中央集権的なサーバを用意して、OpenIDやOAuthの処理をある程度肩代わりし、ログイン周りの実装にかかるRP開発者の手間を軽減するようなプロダクトも複数存在します。
「Janrain」や「Gigya」などのプロダクトは、多くのサービスで実際にログイン連携に使われている良い例です(両者ともAccount Chooser WGのコントリビュータです)。またGoogleは、JanrainやGigyaほどメジャーではないですが、類似のプロダクトとして「Google Identity Toolkit」というサービスを提供しています。Account Chooserは、こういった製品と併用することでより使いやすいものとなります。
Googleが提供するGoogle Identity Toolkitは、つい先日リリースされたversion 2.0より、Central Account Chooserを利用するようになりました。
そこでここでは、Google Identity Toolkitを経由してCentral Account Chooserを利用するケースについても紹介します。利用するデモサイトは前節と同じです。
すでに前節の指示に従ってCentral Account Chooserにアカウントが保存されている場合には、一度、www.accountchooser.comドメインのlocalStorageをクリアしてください。その後、“Login (Google Identity Toolkit)”をクリックして、Google Identity Toolkitを使ったログインフローを開始しましょう。
Central Account Chooserに何もアカウントが登録されていない場合には、以下のように、Google Identity ToolkitがサポートしているIdPのリストが表示されます。このページは一見Central Account Chooserに見えますが、実際にはデモサイトのドメイン上に、Google Identity ToolkitのJSによってレンダリングされています。
ここでIdPを選択したり、メールアドレス欄にGmailやGoogle Appsのメールアドレスを入力すると、OpenID 2.0のフローが開始されます。このときRP側では、OpenID 2.0のための処理を行う必要は一切ありません。
Discoveryや鍵交換など、OpenID 2.0のログインフローを開始するために必要な処理はすべて、Google Identity Toolkitが行ってくれます(OpenID 2.0が利用できない場合は、該当メールアドレスがデモサイトに登録済みかどうかによって、適宜ログインページもしくは新規登録ページにリダイレクトされます)。
IdPから戻ってきた際にもGoogle Identity Toolkitが間に入って、署名検証などを肩代わりしてくれるため、RP側はGoogle Identity Toolkitが指定するエンドポイントにレスポンスをPOSTすることで、検証済みのユーザー情報を得ることができます。
ログインが成功すると、最後にCentral Account Chooser側にそのアカウントを登録するよう促されます。ひとたびアカウントをCentral Account Chooserに登録すれば、以降はGoogle Identity Toolkit経由のログインでもCentral Account Chooser上でアカウントを選ぶことができます。
Copyright © ITmedia, Inc. All Rights Reserved.