これならわかる!OpenIDの仕組み
OpenIDの発想とは?
OpenIDの具体的な内容や仕様がわからなくても、名前から推測すると、その裏にある発想が見えてきます。そのまま訳すとオープンなIDですので、閉じていないIDということでしょう。つまり、サービスごとに閉じているIDではなく、1つ1つのサービスからオープンになっていて、どこでも共通に使えるIDということです。
現実世界で自分の身元を証明するIDには、例えば運転免許証や健康保険証、警察手帳があります。サービスによって、確実に身元確認として利用できるIDは異なりますが、運転免許書を提示すればだいたいこと足りるでしょう。こうした発想を、Webの世界でも取り入れようとしているのがOpenIDと言えます。
Webにおいては、いろいろなサービスで認証が必要ですが、そのサービスごとにIDとパスワードを登録し、認証で要求されるたびに入力するのがこれまで一般的でした。
筆者は新しいサービスが登場すると、とりあえず新規登録するという行動習性を持っているために、現在持っているIDとパスワードが数百にもなっています。セキュリティーの観点から、なるべく異なるパスワードを使うようにしているため、すべてを自分の頭では記憶しきれないですし、いざサービスにログインする際には、がんばってそのIDとパスワードを探さなければいけません。自宅と会社など利用している環境が違うと、すぐに使いたいIDとパスワードが調べられないために、なかなかログインできないことも多々あります。
OpenIDは利用フェーズに
こうした問題を解決するための1つの方法が、OpenIDです。つまり、「1つ1つのサービスからオープンになっていて、どこでも共通に使えるID」をユーザーが1つ持つことによって、そのIDさえ覚えておけば、いろんなサービスに簡単にログインすることができるのです(図1)。
OpenID 2.0の仕様書(http://openid.net/specs/openid-authentication-2_0.html)を読むと、以下のような文章があります。
「OpenIDは分散型のシステムで、中央で仕切る官庁のような存在はない。これは、つまり、ユーザーが自由にOpenIDのプロバイダーを選べるということを意味している」「OpenID は、ユーザーが自分のアイデンティティーを、誰からも管理されない形で自由に持って運べるようにデザインされている」
こうした文章を読むと、すばらしいコンセプトのように感じますが、一般的なサービスや発明、共通仕様などと同じように、コンセプトの適用フェーズというものがあります。実際のサービスにおけるOpenIDの適用に関しては、それぞれのサービスの利害関係やユーザーの認知/利用スピードと複雑に絡みながら前進しています。
では、現在OpenIDがどの程度の適用フェーズにいるのでしょうか。実はこれがOpenIDが注目されてきている理由とも言えます。つまり、現在OpenIDが、一般的に利用されるべく、テークオフしようとしているということです。
その証拠が、数多くのビッグネームがOpenIDを適用し始めているという事実です。2007年から2008年にかけて、livedoor、Yahoo! JAPAN、mixi(ミクシィ)などの国内のサービスがOpenIDを発行するようになっています。ニュースを見ていると以下のような見出しが躍っています。
「Yahoo! JAPANは2008年1月30日にOpenID Providerとして、OpenIDの発行を開始」
「ミクシィは2月28日、「OpenID」に対応した認証サービスを始めると発表」
このようなビッグネームが、OpenID対応サービスを作ることにより、例えばmixiであれば、潜在的には1,500万以上のユーザーが別のサービスに同じIDでログインできるようになります。よって、自らサービスを提供している企業にとっては、多くのユーザーに自分たちのサービスを利用してもらえるチャンスととらえられるのです。
もちろんアメリカでは、日本よりも以前から利用が進んでいます。例えば「mixi OpenIDとは」(http://mixi.jp/openid.pl)という説明ページには、「既に全米で1万以上のウェブサービスがOpenIDに対応し、2億5千万件を超えるOpenID対応IDが提供されています。(2008年2月7日時点:米OpenID Foundation推計)」という説明が記載されています。
しかし、なぜYahoo! JAPANやmixiは、OpenIDを発行するのでしょうか。その点について次ページで考えてみましょう。
なぜOpenIDを発行するのか
「OpenIDを使えば別のサービスのログインが簡単になる」というだけでは、OpenIDを発行する側のメリットはよくわからないでしょう。OpenIDを発行する背景として見落としてはいけないのが、Webにおけるオープン化の流れです。
GoogleのオープンソーシャルやFacebookのフレンドコネクトという言葉を聞いたことがあると思いますが、ビッグネームは現在、こぞってオープン化を進めています。
FacebookやmixiのようなSNSは、ユーザーにコンテンツを入力してもらうことや、それを通じてユーザー同士の人間関係を根づかせることによって、ユーザーを囲い込むことを競争の主眼に置いています。それによって、トラフィックやコンテンツを得るだけでなく、ユーザーの個人情報なども取得することができるのです。
本来なら、なるべくユーザーを囲い込んでおきたいというのが心情だと思います。しかし、こうしたサービス側の事情とは関係なしに、雨後のたけのこのように多くのサービスが出現して、ユーザーがいろいろなサービスを利用し始めると、ユーザーの個人情報や入力したコンテンツ、人間関係が分散して存在するようになりました。ユーザーとしては、自分の情報は自分のものなので、いろいろなところに持って歩きたいでしょうし、その利便性も容易に想像できます。
そうした環境の下で、ユーザー中心という考えをつきつめていくと、一見ユーザーを外に逃がすように見えるサービスでも、ユーザーにとって使いやすいものであれば、サービス全体の価値を高め、ブランドとしてより強固な地盤を作ることができます。こうしてサービス提供各社は、サービスをオープン化するという判断をしているのです。
OpenIDも個別のサービス側の発想ではなく、ユーザー中心で発想されたオープンなものです。オープン化の大きな流れの1つにOpenIDは位置づけられると考えると、その意味合いが見えてくるでしょう。
OpenID 1.1から、OpenID 2.0に
また、OpenIDが注目される背景として、OpenIDの仕様がOpenID 1.1からOpenID 2.0への移行したという要因もあります。Yahoo! JAPANは、セキュリティーの観点から、OpenID 2.0になってから対応しています。簡単に言うと、仕様自体がアップグレードし、ユーザーにとっての利便性、安全性の面が向上したことによって、発行サイトや利用サービスが対応しやすくなったと理解するとよいでしょう。
具体的には、OpenID 1.1までは、Claimed Identifier、つまりURL形式のユーザーのIDを利用サービスに入力することによって認証を行っていました。OpenID 2.0になってからは、yahoo.co.jpといったOpenIDを発行するサイトのアドレス(OP Identifier)を入れるだけでよくなりました。これはとても大きな変更点だと思います。
つまりユーザーが、長いURL形式のIDを覚えておくことが必要なくなったとともに、自分のIDを入力する必要がないということで、サービス利用サイトに自分のIDを教える必要もなくなったわけです。
さらには、Yahoo! JAPANであればyahoo.co.jp、mixiであれば、mixi.jpといったリンク先さえわかればよいため、サイト側はボタンを設置すればよくなったのです。ユーザーにとっても、テキストのフォームにわざわざyahoo.co.jpと入力する代わりに、yahooのボタンをクリックするだけで、yahooで認証することができるようになったのです。
たとえ、ユーザーがOpenIDの仕組みはわからなくとも、直観的に何ができるかわかるのではないでしょうか。単純に聞こえますが、一般化という意味では、非常に大きなステップだと思います。
OpenIDを使った認証の流れ
大きな背景がわかったと思いますので、OpenIDを使った認証の流れを確認しておきます。ここでは、イメージしやすいように以下の例えを使って紹介します。
スモークガラスの車が、駐車場の入り口に入ってくる。車の中から係員に話しかける。
「駐車場を利用したいんだけど」
「通行証を見せて」
「Aの通行証でも大丈夫だよね」
「大丈夫だよ。じゃあ、Aのゲートがあるからそこで許可とってきて。案内するから」
「わかった」
係員は、Aゲートに電話してから、Aゲートの場所まで車を誘導し、車はそのままAゲートに入っていく。
Aゲートの中はよく見えないが、Aゲートの中にも係員がいて、通行証の確認をしているのだろう。そのAゲートの中から程なく車が出てきて、また元の入り口にいる係員のところに戻ってきた。車の中からまた係員に話しかける。
「AゲートでOKもらったよ。証拠もあるよ」
「それならオッケーだ。中に入っていいよ」
「じゃあ、遠慮なく」
スモークガラスの車、駐車場、係員の例えを使った説明はここまでです。かなり簡略化していますが、大きな流れはつかめるのではないでしょうか。
役割ごとに見るOpenIDを使った認証の処理
上記の例えでは、スモークガラスの車の中の人物がユーザーで、乗ってきたスモークガラスの車は、ブラウザをイメージしています。
駐車場は、ユーザーが利用したいサービスで、OpenID 2.0の仕様によるとRelying Party(PR)と呼びます。OpenID 1.1の仕様では、Consumerと呼ばれます。日本語にうまく訳せないですが、要するに任意の発行サイトによるOpenIDを利用してログインできるサービスのことです。
通行証を見せる入り口の係員は、RPの認証システムです。そしてご想像のとおり、Aの通行証がAというサイトが発行したOpenIDそれ自体です。また、通行証を見て身元を確認してくれるAゲートが、OpenID発行サイト(OP)です。
その上で、ユーザーから見たOpenIDを使った認証の流れを説明しなおすと図3のようになります。
まず、ユーザーがブラウザ(ユーザーエージェント)を使ってあるサービス(RP)にログインしようとします(図3の1)。
サービス(RP)の認証システムによってユーザーが持っているOpenIDを利用することができるとわかります(図3の2)。
そのサービスは、そのOpenIDがどこから発行されたものかを知り、そのサイトと事前に情報交換した上で、ユーザーをそのOpenID発行サイトにリダイレクトします(図3の3)。
OpenID発行サイトで認証されたユーザーは、元のサービスに逆リダイレクトされます。発行サイトから許可されているので、元のサービスはログインを許可します(図3の4)。
さて今回は、OpenIDが注目される理由と基本的な利用の流れを簡単に説明しましたが、いかがでしたでしょうか。「これならわかる!OpenIDの仕組み」というタイトルにあるように、なるべくわかりやすいようにあえて平たい言葉で説明したつもりです。
何に対しても言えることですが、技術や流れを理解するためには、自分でやってみることが一番です。Yahoo! JAPANやmixiなどでOpenIDをまず作ってみてください。ウィキペディア(http://ja.wikipedia.org/wiki/OpenID)にOpenIDの発行サイト、対応サービスの一覧が掲載されていますので、興味のあるものを探して実際の認証を試してみてください。OpenIDの流れがよくわかると思います。
次回からは、OpenIDのセキュリティーという観点でのチェックポイント、実装の方法などについて具体的に見ていきたいと思います。
[参考文献]
livedoor(http://www.livedoor.com/)(アクセス:2009年1月)
mixi(ミクシィ)(http://mixi.jp/)(アクセス:2009年1月)
Yahoo! JAPAN(http://www.yahoo.co.jp/)(アクセス:2009年1月)
ウィキペディア(OpenID)(http://ja.wikipedia.org/wiki/OpenID)(アクセス:2009年1月)