使って広がるOpenIDの輪
第1回:2行で簡単Identifierをはじめよう
著者:はてな 水野 貴明
公開日:2007/12/6(木)
ログインIDはURL
あるサービスにログインするためには「自分はこういう情報を使ってログインをしたい」といった何らかのID情報をログイン対象となるサービスに伝える必要があります。
OpenIDではID情報として「URL」を利用します。これは「OpenIDを使ってログインを行う場合には、自分のアイデンティティをあらわすURLを入力欄に入力する」という意味です。筆者がサービスにログインする場合、はてなでは「http://www.hatena.ne.jp/mizuno_takaaki/」、livedoorでは「http://profile.livedoor.com/mizuno_takaaki/」というURLを使用します。
例えば、OpenIDに対応しているWebサイトを集めるプロジェクト「OpenID Directory(http://openiddirectory.com/)」で「login」ボタンを押すと、URLを入力するための入力欄が表示されます。ここに、上記のような自分のIDをあらわすURLを入力すると、ログイン処理が行われます。
通常は入力したURLによって、はてなやlivedoorなど、もともとアカウントを登録しているWebサイトが一度表示され「OpenID DirectoryというWebサイトにログインする、という事になってるが大丈夫か」というような確認がなされます。
そして、そこでOKをクリックすれば、OpenID Directoryにリダイレクトされると同時にログイン情報の受け渡しが行われ、OpenID Directory側でもログインした状態になります。
2つのWebサイトを行き来するため、通常のログイン作業とはちょっと異なるプロセスを踏みますが、ユーザ名の代わりにURLを入力することでログインを実現しています。
図2:OpenIDでログインを行うまでの流れ
(画像をクリックすると別ウィンドウに拡大図を表示します)
なおOpenIDでは、OpenIDのアカウントを提供する側(上記の例でははてなやlivedoor)を「Identity Provider(IdP)」、OpenIDを利用してログインを行わせる側(上記の例ではOpenID Directory)を「Consumer」と呼び、さらにログインに使われるURLを「Identifier」と呼びます。以後は、この言葉を使って解説を進めていきます。
IdentifierとなるURLは、実は単なるURLではありません。そのURLを使ってアクセスできるページのHTMLを見てみると、ヘッダ部分に「<link rel="openid.server" href="http://www.hatena.ne.jp/openid/server">」のような記述があることがわかるでしょう。
これは「このURLはどこのIdPを利用して認証を行うIdentifierなのか」を意味しており、そこに書かれているURLは認証の処理を行うIdPのものになっています。
OpenIDでは、まずConsumerにユーザが自分のIdentifierであるURLを入力します。するとConsumerはそのURLにアクセスし、ヘッダから上記のIdPのURLを取得します。そして、今度はそのURLに対してアクセスを行って「このIdentifierでログインしたいって言っている人がいるんですけれどOKですか?」と問い合わせるわけです。
その際、Webブラウザはリダイレクトを利用して、一度IdPの用意したページにアクセスすることになります。そこでIdP側は、そのIdPへの現在のログイン状態とIdentifierのURLをチェックして同じユーザかどうかの確認を行います。
そして最後にIdPは「このIdentifierは、確かにうちのサービスで許可したものであり、現在アクセスしている人です」というメッセージをConsumerに送ります。より正確に言うと、その情報をクエリ文字列としてつけたConsumerのWebサイトのURLにリダイレクトします。
Consumer側で「その情報は正しい」という確認が取れれば、あとは通常のログイン処理と同様にセッション情報をクッキーで渡すなどして、ユーザのログイン状態を保持することになります。
これをあらわしたものが図2です。実際には、もう少しConsumerとIdPの間ではやりとりを行う必要があります。
具体的なやりとりについては、今後の連載の中で触れていく予定ですが、とりあえずログインを行うユーザーから見ると、このような手順でログインをすることができる、と理解してください。また、OpenIDの認証方法には、いくつかの方法があり、IdPのページへのリダイレクトを行わずに認証を行うこともできるようになっています。
基本的にユーザはIdentifierを指定し、ConsumerとIdPという2つのサービスを行き来します。そして最終的にはConsumerにおいて、IdPで登録しておいたアカウントが使えるようになる、という仕組みなのです。
ではいよいよOpenIDのより具体的な仕組みや、Consumer、IdPの実装方法について解説していきます。 次のページ