はてな技術発表会で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