Web技術勉強会 第18回
   ~WebAPI認証の実装~


                           2009/03/21
                        Ryuichi Tanaka
       http:...
WebAPIとは
WebAPIとは?
 REST(GET,POST)形式で提供されるのが一般的
 レスポンスはXML、JSON/JSONP、Javascriptコード、
 画像を返すなどさまざま
  ‫ ى‬今回はJSON/JSONPベース
 ...
認証をしよう
WebAPIには認証がかかっているタイプがある
 ex: Yahoo!、楽天、Amazon、Google etc.
自作したWebAPIをセキュアにしよう
 もろにアクセスされるのはちょっと嫌
どのような仕様が一般的?
 「API...
認証の仕様
APIキーを作る
 SHA2(Secure Hash Algorithm)を利用
  ‫ ى‬MD5、SHA1よりSHA2(SHA-224、SHA-256、SHA-384、
    SHA-512)のほうがよりセキュア
  ‫ ى‬...
認証の仕様
リファラを見る
 リファラを使って、使用を許可するページを制限
 ‫ ى‬今回の仕様では、ドメイン単位で許可
タイムスタンプを使う
 リファラ+タイムスタンプでSHA2ハッシュを作る
 ‫ ى‬リファラとハッシュが一致したときに認証...
実装
   APIキー認証を実装
                                            API
          レスポンス
                              認証OK

     ...
実装
APIキー登録処理はPHPで実装
 diarysys4の管理画面に組み込み
 ApiKeyクラスの実装、テンプレートファイルの作成を新規作成、
 入力データのバリデーションはCommonクラスの処理のそのまま
 継承
APIキー認証処理は...
サンプル
http://team2.de.c.dendai.ac.jp/study/20090321/apiauth.html




        認証失敗時                                      認証成...
登録画面




       9
Todo(★は優先度)
★★Diarysys4関連(進捗95%、データ移行中)
 Widgetリファクタリング
 WidgetのAPIキー認証対応
 iGoogleウィジェット対応?(公開する予定なし)
 WidgetのShindig化
★TM...
Todo(★は優先度)
★インフラ関連(進捗80%)
 UTF-8移行プロジェクト(完了)
 Trac導入(未定)
 Subversionコミットメール(未定)
 Toritton(未定)
★★ドキュメント作成(進捗90%)
 自宅サーバセット...
Upcoming SlideShare
Loading in …5
×

Web技術勉強会 第18回

2,010 views
1,913 views

Published on

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

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,010
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
10
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

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

×