はてな技術発表会でOpenIDを学ぶ
はてな技術発表会日記(http://hatena.g.hatena.ne.jp/hatenatech/)にてOpenIDなる技術の勉強会を発見したのでちょいと見てみる。どうやら、OpenIDというのはTypeKeyと同じでオープンな仕様でシングルサインオンを実現する技術のようだ。
ただ、肝心の認証の流れがいまいちわかりにくい。せめて流れを図解した絵が欲しいです…。と思いきや!はてなおやさんがスクリーン(代わりのホワイトボードか?)にがりがりと図を書きはじめたよ。そうそう、こういう図がないと理解がすすまんよね。図重要。
えーとなんだ、
- 認証のIDはURL
- そのURLにあるHTMLファイルには認証サーバの場所が埋めこまれている
- 認証を使いたいサービスは、ID(URL)を入力してもらって認証サーバをみつける
- サービスが認証サーバに(固有のIDに対応する?)1timeなキーを問いあわせておく。
- クライアント側も認証サービスで認証してもらう(ブログへのサインオンとか)。このときに1timeなキーの結果に左右されるクッキーがブラウザに返される(?)
- その結果のクッキーをサービスがチェックして、期待どおりであれば認証OK。
ふむ。要は、認証サーバしか知らない「1timeキー」を、クライアント側が間接的に取得するのがキモか。それによって、認証サーバがそのクライアントを認証したことが保証されて、「認証サーバさんがそういうなら私も信頼しましょう」ということで、そのサービスでも認証される、と。認証サーバが嘘つきまくると意味ないけどな。あと、1timeなキーが他に漏れないように、(サービス側が発行する)固有のキーに対応するものじゃないと駄目だろうな。んー、なんだか穴がある気がするけど、これ以上はちゃんと仕様を読まないと駄目か。
で、なんかこの勉強会のノリを聞いていると、はてなidによるSSOが実装される日も遠くないようだ。はてなidによるSSO希望!希望!*1