日記
有効範囲指定付きチケットを使ったAPIEdit

リニューアル後は、Bookeyみたいなツールからの利用がやりやすいように、ちゃんとしたAPIを作る予定。

うちの場合は、外部認証サービスを利用しているんで、自前でパスワード的なものは持っていない。けれども、API用の認証を行うならば、やっぱりそれ的なものが必要になるだろう。だから、API専用の認証キーをランダム発行(ランダム再発行可能)し、それをAPI専用に使う(非ランダムなパスワード文字列は持たない)。

うちはSSLは使わないつもりなんで、毎回認証キーを流すのは気持ち悪い。だから認証キーを使って期限が短いチケットを発行させ、そのチケットを使ってAPIへのリクエストを行う形式を採用する。

チケット発行APIに、ユーザーID、認証キー、オプションパラメータを投げると、チケットIDが返される。オプションパラメータでそのチケットの有効範囲を指定する。

有効範囲ってのは、

  • 利用回数(無制限可)
  • 有効期限(必須。デフォルト値あり)
  • 利用可能なAPI(指定した場合)
  • 環境チェック(有効な場合、チケット発行時と同一のIPアドレス、ユーザーエージェントからのリクエストのみ許可)

あたりをイメージしている。

使う側で利便性とセキュリティのバランスを考えて、チケットを発行して使ってね、って感じ。

こういうチケットの仕組みって、どこかで使っているところあるかな? Flickrはread/write権限とか持っているみたいだけど、有効期限とか呼び出し回数のコントロールも可能なんだろうか(調べてない)。あるいはチケットにあまり機能を持たせると、負荷的に不利だからあまり採用されていない、とかあるのかも。まあ試してみよう。

ちなみにこの仕組みは非Webアプリからの利用しか考えていない。Webアプリ(第3者管理サーバー)でコールバックを使った認証委譲を利用したい場合は、その部分を別途考える必要がある(けど、多分そこまで作らない)。

っつーかその場合、外部Webアプリ → うちのサーバー → 外部認証サーバー(TypeKeyとか) → うちのサーバー → 外部Webアプリ って流れになるのか。なかなかわけわからない仕組みになりそうだな。

Published At2006-06-16 00:00Updated At2006-06-16 00:00