More Related Content
Similar to OpenSocialのアーキテクチャ
Similar to OpenSocialのアーキテクチャ (20)
OpenSocialのアーキテクチャ
- 2. 自己紹介
• 北村英志 (id: agektmr)
‒ NTTレゾナント株式会社(gooホーム)
‒ Google API Expert (OpenSocial)
‒ Shindig committer
‒ SocialWeb Japan主催
‒ ブログ: Tender Surrender
http://devlog.agektmr.com/
2
- 5. 成り立ち
• 2007年11月 Google Campfireで発表
• MySpace、hi5、orkutといった米国大手のSNS
が賛同
• Googleの先導で始まったものの、現在は
OpenSocial Foundationが取りまとめている
5
- 6. 特徴
• オープンな仕様
‒ Learn Once, Write Anywhere
• オープンな仕様作成プロセス
‒ http://groups.google.com/group/opensocial
• 豊富な関連オープンソースプロダクト
‒ Apache Shindig
‒ OpenSocial Client Libraries
‒ OpenSocial Development Environment
‒ OpenSocial‒jQuery
‒ etc. 6
- 10. OpenSocialガジェットでできること
• HTML, CSS, JavaScript, Flash等を使った、
SNS上で動作するアプリケーションの開発
• ソーシャルグラフの取得
• プロフィールの取得
• アクティビティの送信、取得
• アプリデータの保存、取得
• メッセージの送信
• 外部サーバーとの通信
• etc.
10
- 13. XMLファイルの構成
• メタ情報
‒ ガジェット名
‒ 概要
‒ 利用する機能(feature)
‒ その他設定、定義
• ガジェットの表示内容
‒ ビューごとに指定
‒ HTML, CSS, JavaScript, Flash, etc.を記述
13
- 14. OpenSocialのガジェットXML
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="タイトル" description="概要文" author="Eiji
Kitamura" author_email="eiji@example.com" >
<Require feature="opensocial-0.8" />
<Require feature="dynamic-height" />
</ModulePrefs>
<Content type="html" view="canvas">
<![CDATA[
ガジェットに表示するソースコード
]]>
</Content>
</Module>
14
- 23. OpenSocialアーキテクチャ
Database External Service
metadata
Gadget
Container Shindig XML
json-rpc proxy
opensocial gadgets
SNS Gadget
Browser
23
- 25. 1. ブラウザからSNSにアクセス
Database External Service
Gadget
Container Shindig XML
Browser
25
- 26. 2. ガジェットに関する情報を収集
Database External Service
metadata
Gadget
Container Shindig XML
Browser
26
- 27. 3. SNSをレンダリング
Database External Service
Gadget
Container Shindig XML
SNS
Browser
27
- 31. OpenSocial APIを使う
Database External Service
Gadget
Container Shindig XML
json-rpc
opensocial
Token
SNS Gadget
Browser
31
- 33. 外部サーバーとの通信
Database External Service
Gadget
Container Shindig XML
proxy
gadgets
SNS Gadget
Browser
33
- 34. Signed Request
• 別名OAuth Consumer Request、2 Legged
OAuth
• ガジェットが外部サーバーと通信する際のオプ
ション
• リクエストに署名を付け加えることができる
• 外部サーバーは、署名を元にリクエスト内容が
改ざんされていないかチェック可能
34
- 35. ケース1
悪意のあるサーバー
External Service
Evil
• 無関係なガジェットやサーバーからデータを書
き換えられる
35
- 36. ケース2
悪意のあるスクリプト
gadgets proxy External Service
Gadget Shindig
Browser
• GreaseMonkey等を使って他人に成り済まされ
る
36
- 37. ケース3
悪意のある仲介者
gadgets proxy External Service
Gadget Shindig
Browser
• 通信途中のノードでリクエストを書き換えられ
る
37
- 38. Signed Requestで解決
gadgets proxy External Service
............
.......
Gadget Shindig ............
.........
Browser
• サーバーで正確な情報を追加
‒ opensocial_viewer_id
‒ opensocial_owner_id
‒ opensocial_app_url
• 電子署名を追加 38
- 40. OAuthを用いないマッシュアップ
ID/Pass
Browser Application Service
• ユーザーは信頼できるとは限らないアプリケー
ションに、サービスのクレデンシャル(ID/Pass)
を預けざるを得なかった
40
- 41. 一般的なOAuth
Token
ID/Pass
Browser Application Service
ユーザー コンシューマ サービスプロバイダ
41
- 42. OpenSocialにおける
OAuth Proxy
Token ID/Pass
Browser gadgets proxy External Service
Gadget Shindig
ユーザー コンシューマ
コンシューマ? サービスプロバイダ
42
- 43. OpenSocialアーキテクチャ
Database External Service
metadata
Gadget
Container Shindig XML
json-rpc proxy
opensocial gadgets
SNS Gadget
Browser
43