39
OpenPNE3 と OAuth ととと ととととと 手手手手手手手手手 Shogo Kawahara 2009/08/17

OAuth with OpenPNE3

Embed Size (px)

Citation preview

Page 1: OAuth with OpenPNE3

OpenPNE3 と OAuthそして、その他諸々

手嶋屋開発部勉強会Shogo Kawahara

2009/08/17

Page 2: OAuth with OpenPNE3

Tejimaya

8 月もまさかの

後半戦ですなレポートも卒論も進めてない川原です orz

Page 3: OAuth with OpenPNE3

Tejimaya

今日はOpenPNE3

における

OAuth とか

Page 4: OAuth with OpenPNE3

Tejimaya

研究しますよ☆

Page 5: OAuth with OpenPNE3

目次• OAuth って何だっけ?–復習など

• OpenPNE における OAuth• OAuth 認証つきページ開発(概要) • opOpenSocialPlugin• まとめとこれからの展望

Tejimaya

Page 6: OAuth with OpenPNE3

Tejimaya

注意2009年8月16日

現在の状況でおはなしします

いわゆる「画面は開発中のものです」

ってやつです。

ちなみに、最近は自転車がほしいと思っている

Page 7: OAuth with OpenPNE3

Tejimaya

さらに注意

今回の研究ではコンシューマ

での実装はどうやったらいいのかとかは、やりません。

ごめんなさい。

Page 8: OAuth with OpenPNE3

Tejimaya

そもそもOAuth って何だっけ?

Page 9: OAuth with OpenPNE3

回想• http://www.slideshare.net/ebihara/oa

uth-1618214• 海老原さんの勉強会資料参考

Tejimaya

Page 10: OAuth with OpenPNE3

何ができるの• 公開されている API を利用するサイト上

で、 API を公開しているサイトの ID とかパスワードを入力しなくても OK になる

Tejimaya

Page 11: OAuth with OpenPNE3

Tejimaya

どいうこと?

Page 12: OAuth with OpenPNE3

OAuth を使わない API アクセス• 例

Tejimaya

API 利用側

部長 SNSの ID とパスワードとか

教えちゃいなさい

プロフィール情報とかほしいんだよね

API 提供側

部長 SNS

ID とパスワードでその人のプロフィール情報

とか投げるよ

ここに部長 SNS のID とパスワードが保存されちゃう?

なにそれ怖い

Page 13: OAuth with OpenPNE3

OAuth を使った世界• 例

Tejimaya

API 提供側

部長 SNS

OAuthServer

API 利用側Consumer

部長 SNS に API利用登録済み

部長 SNS からConsumer Key

とConsumer Secret

をもらってる

② リクエストトークンくれ

③ ほらよ

①API を利用する展開になる

④ リクエストトークン使って認証ページへリダイレクトゥ

⑤ 認証 OKでコールバック

⑥ アクセストークンよこせ

* Web アプリでの利用を想定

⑦ アイヨー

⑧ アクセストークン使ってAPI アクセス

Page 14: OAuth with OpenPNE3

Tejimaya

OpenPNEは?

Page 15: OAuth with OpenPNE3

Tejimaya

OpenPNE3.1.x(trunk)

では実装中

Page 16: OAuth with OpenPNE3

概要• 管理画面側でもユーザ側でも

利用登録ができる• どの API を利用できるかを細かく設定可

能• OAuth を利用すべきモジュールは

filter を使って保護する

Tejimaya

Page 17: OAuth with OpenPNE3

Consumer 登録をやってみる• OAuth を利用するには事前の Consumer

登録が必要である

Tejimaya

Page 18: OAuth with OpenPNE3

Consumer 登録をやってみる• 例として http://sns.example.com/

で、 OpenPNE3(trunk) のホーム画面が出ているものとする。

• opWebAPIPlugin の最新版を github から plugins ディレクトリにチェックアウトする必要がある。

Tejimaya

Page 19: OAuth with OpenPNE3

Consumer 登録をやってみる• 管理画面での登録をやってみます。

• http://sns.example.com/pc_backend.php/connection

• 上が OAuth アプリケーション登録ページ

Tejimaya

Page 20: OAuth with OpenPNE3

Tejimaya

開発中の OpenPNE3 Core + Github にある opWebAPIPluginmasterで右のように Using apisが選択できる

Page 21: OAuth with OpenPNE3

Tejimaya

←登録されると左の画面がでてくる

Consumer Key とConsumer Secret はOAuth アクセスに使う大事な物です漏らさないように

Request token URLAccess token URLAuthorize URLは各種トークン生成や認証ページの URL です

←これは非公開なサーバのものなのでご安心を

Page 22: OAuth with OpenPNE3

メンバー側は?• http://sns.example.com/connection

で同様の登録ができるようです

Tejimaya

Page 23: OAuth with OpenPNE3

Tejimaya

ちなみに、 OpenPNE3 はOAuth rev.A での新仕様

である、RequestToken 取得時に

callback_url を渡すっていう形式を採用している

Page 24: OAuth with OpenPNE3

Tejimaya

って海老原さんが

言ってた

Page 25: OAuth with OpenPNE3

Tejimaya

さて、どうやったら OAuth認証付きページ( API) がOpenPNE3 で作れるのか

すごくおおざっぱにやります

Page 26: OAuth with OpenPNE3

Tejimaya

1 .filter

Page 27: OAuth with OpenPNE3

Tejimaya

モジュールの configの

filter.yml でopCheckOAuthAccessTokenFilter

を追加しましょう。

↓ 例

Page 28: OAuth with OpenPNE3

Tejimaya

2.Routing

Page 29: OAuth with OpenPNE3

Tejimaya

参考opWebAPI

Page 30: OAuth with OpenPNE3

Tejimaya

opAPIRouteInterface(Core 側)を実装したRoute クラスでAPI をルーティングルールに追加する。

Consumer 登録時に許可するAPI一覧にgetAPIName() & getAPICaption()で取得された内容が出るようになる

opWebAPIPlugin ではopWebAPIRouteがいる

Page 31: OAuth with OpenPNE3

Tejimaya

3.Security

Page 32: OAuth with OpenPNE3

• opCheckOAuthAccessTokenFilter はOAuth アクセスキーが正当であると、上のような処理をします。

• また、その Consumer が許可された API名を Credential に登録します。

• 適切な security.yml の設定が必要

Tejimaya

Page 33: OAuth with OpenPNE3

Tejimaya

という感じでOAuth での認証必須モジュールが

できあがるわけです

Page 34: OAuth with OpenPNE3

Tejimaya

OAuth 実装にともないopOpenSocialPlugin

の API でも、 OAuth を使えるようにしてみました

( Restful API)

Page 35: OAuth with OpenPNE3

Tejimaya

githubにある奴なら多分動く

http://github.com/kawahara/opOpenSocialPlugin

Page 36: OAuth with OpenPNE3

Tejimaya

おそらく近日中に

新バージョン出します(Doctrine対応もようやくできた )

Page 37: OAuth with OpenPNE3

今の要改善点とか• 認可画面をもっと詳しくしないと– http://www.itmedia.co.jp/news/articles/0

908/10/news015.html–こうならないために

• 管理側で認可したか、メンバー側で認可したか簡単にもっと簡単に取得できる仕組みが必要?

Tejimaya

Page 38: OAuth with OpenPNE3

展望とか• 携帯版 OpenSocial ほしいなぁ–mixi は API 利用時に認可画面なしの

2-legged OAuth で OpenSocial API にアクセスするっぽい(もちろん事前にユーザ認可した上)

Tejimaya

Page 39: OAuth with OpenPNE3

Tejimaya

というわけでOpenPNE3 + OAuth

是非ともよろしくお願いします