はてなの認証 API リリース
はてなから認証 APIがリリースされた。 ざっとヘルプを読んでみたけど、2月の日記に書いたように Flickr 方式になってる。 下記は、去年の日記に書いた Flickr API の図。
- perm を削除して代わりに api_sig を追加する(はてな認証APIでは、まだはてなのサービスへはアクセスできないので、権限 (perm) は不要)
- frob を cert に置き換える(単に用語が違うだけ)
- トークンをユーザ情報に置き換える(はてな認証APIはユーザ情報を取ってくるだけなので、再利用可能なトークンではなくダイレクトにユーザ情報を返している)
これだけで、Flickr の図がはてな認証 API の図になる。
また、 api_key も、 Flickr と同じく偽サービスの防止のために使われている。
はてなAPIでは、この図のトークンやメソッドを cert に置き換えて考えればいい。
SECRET (秘密鍵) を知らない限り署名 (api_sig) が作れないので、偽サービスがサービスになりすましてはてなAPIにアクセスすることはできない、と。
追記 (2006/5/7)
上記の記述を訂正します。 現状の方式では、ある条件を満たせば SECRET を知らなくても署名値を推測することができるそうです。 独自の方式ではなく、 HMAC を使うべきでしょう。
注意点
結城さんも指摘されているけど、はてなでの認証画面にコールバック先のURLが表示されないのは問題かな。
具体的には…
上記のリンクをクリックすると、はてな認証APIを使ったログイン画面が表示される(リンクをクリックするだけでは認証されないのでご安心を)。 ログイン画面では、以下のようなメッセージが表示される。
サンプルアプリが kmachuさんのアカウント情報の読み取り許可を要求しています。この要求を承諾すると、サンプルアプリ が kmachu さんのアカウント情報の一部を扱えるようになります。
あわせて、下記の情報も表示される。
- サンプルアプリの情報 URL http://www.google.com/
- 開発者 id:kmachu
もちろん、僕が Google のアプリを作っているわけが無い。 このURLは任意のアドレスが入れられるようになっているので、適当に Google のアドレスを入れてみただけ。 実際のコールバック先は http://www.machu.jp/sample/auth/ になっているが、ログイン画面を見ただけでは利用者には分からない。
この URL はコールバック先と違うドメインは指定できないようにするべきだろうね。
追記 (2006/4/29)
ログイン画面(アカウント読み取り許可画面)にて、コールバックURLも表示されるようになった。