Upload
shogo-kawahara
View
3.585
Download
1
Embed Size (px)
Citation preview
OpenPNE3 と OAuthそして、その他諸々
手嶋屋開発部勉強会Shogo Kawahara
2009/08/17
Tejimaya
8 月もまさかの
後半戦ですなレポートも卒論も進めてない川原です orz
Tejimaya
今日はOpenPNE3
における
OAuth とか
Tejimaya
研究しますよ☆
目次• OAuth って何だっけ?–復習など
• OpenPNE における OAuth• OAuth 認証つきページ開発(概要) • opOpenSocialPlugin• まとめとこれからの展望
Tejimaya
Tejimaya
注意2009年8月16日
現在の状況でおはなしします
いわゆる「画面は開発中のものです」
ってやつです。
ちなみに、最近は自転車がほしいと思っている
Tejimaya
さらに注意
今回の研究ではコンシューマ
での実装はどうやったらいいのかとかは、やりません。
ごめんなさい。
Tejimaya
そもそもOAuth って何だっけ?
回想• http://www.slideshare.net/ebihara/oa
uth-1618214• 海老原さんの勉強会資料参考
Tejimaya
何ができるの• 公開されている API を利用するサイト上
で、 API を公開しているサイトの ID とかパスワードを入力しなくても OK になる
Tejimaya
Tejimaya
どいうこと?
OAuth を使わない API アクセス• 例
Tejimaya
API 利用側
部長 SNSの ID とパスワードとか
教えちゃいなさい
プロフィール情報とかほしいんだよね
API 提供側
部長 SNS
ID とパスワードでその人のプロフィール情報
とか投げるよ
ここに部長 SNS のID とパスワードが保存されちゃう?
なにそれ怖い
OAuth を使った世界• 例
Tejimaya
API 提供側
部長 SNS
OAuthServer
API 利用側Consumer
部長 SNS に API利用登録済み
部長 SNS からConsumer Key
とConsumer Secret
をもらってる
② リクエストトークンくれ
③ ほらよ
①API を利用する展開になる
④ リクエストトークン使って認証ページへリダイレクトゥ
⑤ 認証 OKでコールバック
⑥ アクセストークンよこせ
* Web アプリでの利用を想定
⑦ アイヨー
⑧ アクセストークン使ってAPI アクセス
Tejimaya
OpenPNEは?
Tejimaya
OpenPNE3.1.x(trunk)
では実装中
概要• 管理画面側でもユーザ側でも
利用登録ができる• どの API を利用できるかを細かく設定可
能• OAuth を利用すべきモジュールは
filter を使って保護する
Tejimaya
Consumer 登録をやってみる• OAuth を利用するには事前の Consumer
登録が必要である
Tejimaya
Consumer 登録をやってみる• 例として http://sns.example.com/
で、 OpenPNE3(trunk) のホーム画面が出ているものとする。
• opWebAPIPlugin の最新版を github から plugins ディレクトリにチェックアウトする必要がある。
Tejimaya
Consumer 登録をやってみる• 管理画面での登録をやってみます。
• http://sns.example.com/pc_backend.php/connection
• 上が OAuth アプリケーション登録ページ
Tejimaya
Tejimaya
開発中の OpenPNE3 Core + Github にある opWebAPIPluginmasterで右のように Using apisが選択できる
Tejimaya
←登録されると左の画面がでてくる
Consumer Key とConsumer Secret はOAuth アクセスに使う大事な物です漏らさないように
Request token URLAccess token URLAuthorize URLは各種トークン生成や認証ページの URL です
←これは非公開なサーバのものなのでご安心を
メンバー側は?• http://sns.example.com/connection
で同様の登録ができるようです
Tejimaya
Tejimaya
ちなみに、 OpenPNE3 はOAuth rev.A での新仕様
である、RequestToken 取得時に
callback_url を渡すっていう形式を採用している
Tejimaya
って海老原さんが
言ってた
Tejimaya
さて、どうやったら OAuth認証付きページ( API) がOpenPNE3 で作れるのか
すごくおおざっぱにやります
Tejimaya
1 .filter
Tejimaya
モジュールの configの
filter.yml でopCheckOAuthAccessTokenFilter
を追加しましょう。
↓ 例
Tejimaya
2.Routing
Tejimaya
参考opWebAPI
Tejimaya
opAPIRouteInterface(Core 側)を実装したRoute クラスでAPI をルーティングルールに追加する。
Consumer 登録時に許可するAPI一覧にgetAPIName() & getAPICaption()で取得された内容が出るようになる
opWebAPIPlugin ではopWebAPIRouteがいる
Tejimaya
3.Security
• opCheckOAuthAccessTokenFilter はOAuth アクセスキーが正当であると、上のような処理をします。
• また、その Consumer が許可された API名を Credential に登録します。
• 適切な security.yml の設定が必要
Tejimaya
Tejimaya
という感じでOAuth での認証必須モジュールが
できあがるわけです
Tejimaya
OAuth 実装にともないopOpenSocialPlugin
の API でも、 OAuth を使えるようにしてみました
( Restful API)
Tejimaya
githubにある奴なら多分動く
http://github.com/kawahara/opOpenSocialPlugin
Tejimaya
おそらく近日中に
新バージョン出します(Doctrine対応もようやくできた )
今の要改善点とか• 認可画面をもっと詳しくしないと– http://www.itmedia.co.jp/news/articles/0
908/10/news015.html–こうならないために
• 管理側で認可したか、メンバー側で認可したか簡単にもっと簡単に取得できる仕組みが必要?
Tejimaya
展望とか• 携帯版 OpenSocial ほしいなぁ–mixi は API 利用時に認可画面なしの
2-legged OAuth で OpenSocial API にアクセスするっぽい(もちろん事前にユーザ認可した上)
Tejimaya
Tejimaya
というわけでOpenPNE3 + OAuth
是非ともよろしくお願いします