Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Web技術勉強会 第18回

WebAPIにAPIキー認証を実装する方法

  • Soyez le premier à commenter

Web技術勉強会 第18回

  1. 1. Web技術勉強会 第18回 ~WebAPI認証の実装~ 2009/03/21 Ryuichi Tanaka http://blog.livedoor.jp/mapserver2007/ 1
  2. 2. WebAPIとは WebAPIとは? REST(GET,POST)形式で提供されるのが一般的 レスポンスはXML、JSON/JSONP、Javascriptコード、 画像を返すなどさまざま ‫ ى‬今回はJSON/JSONPベース WebAPIを実装しよう ‫ ى‬今回の話はWebAPIがすでに作れるor作ったが前提 2
  3. 3. 認証をしよう WebAPIには認証がかかっているタイプがある ex: Yahoo!、楽天、Amazon、Google etc. 自作したWebAPIをセキュアにしよう もろにアクセスされるのはちょっと嫌 どのような仕様が一般的? 「APIキー」を作って認証がほとんど 3
  4. 4. 認証の仕様 APIキーを作る SHA2(Secure Hash Algorithm)を利用 ‫ ى‬MD5、SHA1よりSHA2(SHA-224、SHA-256、SHA-384、 SHA-512)のほうがよりセキュア ‫ ى‬どんな文字列からでも固定長のハッシュを生成 Perl実装のDigest::SHAを利用 ‫ ى‬自作WebAPIはPerlなので。 ‫ ى‬PHPではSHA2関数はない(mhashを使うといける) 4
  5. 5. 認証の仕様 リファラを見る リファラを使って、使用を許可するページを制限 ‫ ى‬今回の仕様では、ドメイン単位で許可 タイムスタンプを使う リファラ+タイムスタンプでSHA2ハッシュを作る ‫ ى‬リファラとハッシュが一致したときに認証が成功とみなす ‫ ى‬リファラが仮に偽装された場合でも、ハッシュ値が分からない 限りアクセスはできない 5
  6. 6. 実装 APIキー認証を実装 API レスポンス 認証OK ・APIを許可するURL 認証 ・タイムスタンプ リクエスト 認証処理 認証NG APIキー登録画面 API APIを適用するページ キー認証 DB 6
  7. 7. 実装 APIキー登録処理はPHPで実装 diarysys4の管理画面に組み込み ApiKeyクラスの実装、テンプレートファイルの作成を新規作成、 入力データのバリデーションはCommonクラスの処理のそのまま 継承 APIキー認証処理はPerlで実装 どのプロジェクトに属するAPIでも認証がかけられるようにするよ うにモジュールを配置(FindBin::libs) リクエストパラメータに「apikey」属性を追加 リファラはCGIのreferer()で取得 7
  8. 8. サンプル http://team2.de.c.dendai.ac.jp/study/20090321/apiauth.html 認証失敗時 認証成功時 8
  9. 9. 登録画面 9
  10. 10. Todo(★は優先度) ★★Diarysys4関連(進捗95%、データ移行中) Widgetリファクタリング WidgetのAPIキー認証対応 iGoogleウィジェット対応?(公開する予定なし) WidgetのShindig化 ★TMAP関連(進捗99%) バグフィックス(いくつかバグを確認) ★★★ChocoLab関連(進捗1%) Ruby on Railsで構築予定 開発環境・サーバ環境構築(RadRails設定完了) 10
  11. 11. Todo(★は優先度) ★インフラ関連(進捗80%) UTF-8移行プロジェクト(完了) Trac導入(未定) Subversionコミットメール(未定) Toritton(未定) ★★ドキュメント作成(進捗90%) 自宅サーバセットアップマニュアル(1版完成) 開発環境セットアップマニュアル(未定) はてなグループ更新 ★ 障害対応(随時) 11

×