SlideShare a Scribd company logo
OpenPNE3とOAuthそして、その他諸々手嶋屋開発部勉強会Shogo Kawahara2009/08/17
Tejimaya8月もまさかの後半戦ですなレポートも卒論も進めてない川原ですorz
Tejimaya今日はOpenPNE3におけるOAuthとか
Tejimaya研究しますよ☆
目次OAuthって何だっけ?復習などOpenPNEにおけるOAuthOAuth認証つきページ開発(概要)opOpenSocialPluginまとめとこれからの展望Tejimaya
Tejimaya注意2009年8月16日現在の状況でおはなししますいわゆる「画面は開発中のものです」ってやつです。ちなみに、最近は自転車がほしいと思っている
Tejimayaさらに注意今回の研究ではコンシューマでの実装はどうやったらいいのかとかは、やりません。ごめんなさい。
TejimayaそもそもOAuthって何だっけ?
回想http://www.slideshare.net/ebihara/oauth-1618214海老原さんの勉強会資料参考Tejimaya
何ができるの公開されているAPIを利用するサイト上で、APIを公開しているサイトのIDとかパスワードを入力しなくてもOKになるTejimaya
Tejimayaどいうこと?
OAuthを使わないAPIアクセス例TejimayaAPI利用側部長SNSのIDとパスワードとか教えちゃいなさいプロフィール情報とかほしいんだよねAPI提供側部長SNSIDとパスワードでその人のプロフィール情報とか投げるよここに部長SNSのIDとパスワードが保存されちゃう?なにそれ怖い
OAuthを使った世界例Tejimaya部長SNSからConsumer KeyとConsumer Secret をもらってるAPI提供側部長SNSOAuthServerAPI利用側Consumer部長SNSにAPI利用登録済み②リクエストトークンくれ③ほらよ⑤認証OKでコールバック⑥アクセストークンよこせ⑦アイヨー⑧アクセストークン使ってAPIアクセス①APIを利用する展開になる④リクエストトークン使って認証ページへリダイレクトゥ*Webアプリでの利用を想定
TejimayaOpenPNEは?
TejimayaOpenPNE3.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で作れるのかすごくおおざっぱにやります
Tejimaya1.filter
Tejimayaモジュールのconfigのfilter.ymlでopCheckOAuthAccessTokenFilterを追加しましょう。↓例
Tejimaya2.Routing
Tejimaya参考opWebAPI
TejimayaopAPIRouteInterface(Core側)を実装したRouteクラスでAPIをルーティングルールに追加する。Consumer登録時に許可するAPI一覧にgetAPIName() & getAPICaption()で取得された内容が出るようになるopWebAPIPluginではopWebAPIRouteがいる
Tejimaya3.Security
opCheckOAuthAccessTokenFilterはOAuthアクセスキーが正当であると、上のような処理をします。また、そのConsumerが許可されたAPI名をCredentialに登録します。適切なsecurity.ymlの設定が必要Tejimaya
Tejimayaという感じでOAuthでの認証必須モジュールができあがるわけです
TejimayaOAuth実装にともないopOpenSocialPluginのAPIでも、OAuthを使えるようにしてみました(Restful API)
Tejimayagithubにある奴なら多分動くhttp://github.com/kawahara/opOpenSocialPlugin
Tejimayaおそらく近日中に新バージョン出します(Doctrine対応もようやくできた)
今の要改善点とか認可画面をもっと詳しくしないとhttp://www.itmedia.co.jp/news/articles/0908/10/news015.htmlこうならないために管理側で認可したか、メンバー側で認可したか簡単にもっと簡単に取得できる仕組みが必要?Tejimaya
展望とか携帯版OpenSocialほしいなぁmixiはAPI利用時に認可画面なしの2-legged OAuthでOpenSocial APIにアクセスするっぽい(もちろん事前にユーザ認可した上)Tejimaya
TejimayaというわけでOpenPNE3+ OAuth是非ともよろしくお願いします

More Related Content

PDF
PHP meets NodeJS
PDF
ディープラーニング入門
PDF
MacRuby を使ってみました
PDF
無料ソフト「NetCommons」で作る学校ホームページ【1限目】
PDF
東京から仙台まで歩く方法
PDF
Php非同期の技法
PDF
PHPとJavaScriptの噺
PDF
Phpmatsuri2013
PHP meets NodeJS
ディープラーニング入門
MacRuby を使ってみました
無料ソフト「NetCommons」で作る学校ホームページ【1限目】
東京から仙台まで歩く方法
Php非同期の技法
PHPとJavaScriptの噺
Phpmatsuri2013
Ad

OAuth with OpenPNE3