OpenSocialを使った認証・認可
2012年04月20日
株式会社イーグル
菅井 康之

背景• SNS上の様々な情報にアクセスしたい– SNS自体が多く存在しているため、SNS毎にAPIを調べてアクセスするのは容易ではない– 複数のSNSにアクセスするための共通APIとして、Opensocialがあることを知る

Copyright © 2012 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

OpenSocialとは• OpenSocial は、ウェブベースのソーシャルネッ
トワークアプリケーションのための共通のアプリ
ケーションプログラミングインタフェース（API）群。Google によって開発され、2007年11月1日にリリースされた(Wikipedia)• OAuth をベースとし、HTTP+Javascript等の既存のWeb技術で構成

Copyright © 2012 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

3対応SNSの一覧

何か遊べそうhttp://docs.opensocial.org/display/OSREF/List+of+OpenSocial+Containers

Copyright © 2012 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

4

まずは動くものを作ってみる• サーバサイドで処理させたいため、Javaでの実装を試みる– １から作成するのは面倒なので、何か無いか調べた所、OpenSocialのJava-Client APIを発見• http://code.google.com/p/opensocial-java-client/• 2010年2月 Update以降、更新されていない• ソースが公開されているので何とかなるだろうと使ってみることに

Copyright © 2012 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

5

Java-Clientの構成
レスポンスの格納先
APIのレスポンスはJSON形式で返却
JSONを解析し、Modelを生成する
サービスプロバイダ毎に定義
EndPointやAccessTokenの取得先
URL等を定義
どの情報にアクセスするかCopyright © 2012 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

6

前準備• Opensocialを使用する上で必要なもの– コンシューマキー (consumer̲key)– コンシューマシークレット (consumer̲secret)– サービスプロバイダのEndPoint URL• 入手方法– consumer̲key 、 consumer̲secret• サービスプロバイダにコンシューマ登録することで発行される• コンシューマ登録には、ドメインを持つサーバが必要– 今回はGoogle App Engineを使用– サービスプロバイダのEndPoint URL• 各プロバイダのDeveloperサイトに記載
Copyright © 2012 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

7

iGoogleにアクセス
書いてみた

Copyright © 2012 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

8

iGoogleにアクセス

Copyright © 2012 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

9データアクセスの流れ
Consumer

Service
ProviderUser

リクエストトークン要求
リクエストトークン発行
認可要求

認可要求
認可？
OK

アクセストークン発行

アクセストークン発行

データ要求

Copyright © 2012 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

10

mixiにアクセス

OpenSocialには認証方式が２つある事が判明
3-legged (iGoogle等)
2-legged (mixi等)
Copyright © 2012 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

11データアクセスの流れ(2-legged)
User

Service
ProviderConsumer

事前にUserとConsumerの間でネゴシエーションが必要

データ要求

・Consumer key・Consumer secretを含んだリクエスト
Copyright © 2012 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

12

これで終わり？
•ここまででOpensocialを利用するという点については、ある程度目処が付いた•

使えそうなのはmixi位だが、mixiもAPIを移行し始めている(Opensocialでは無いものに。。。)•

今SNSといえばFacebook•

Facebook APIとOpensocial APIとで何が違うのか– どちらもOAuthでの認証であるため、考え方は同じでは・・・

Copyright © 2012 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

13

Facebookにアクセス

Copyright © 2012 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

14

Facebookにアクセス

Copyright © 2012 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

15

Opensocialまとめ•

認可の流れが把握出来た– OAuthによる認可– シグネチャーの生成• HMAC-SHA1 + BASE64•

サービスプロバイダになるには– OpenPNE 3– Apache Shindig•

APIで定義された以外にもっと他の情報を扱いたい– アクセストークンを払い出すI/Fとして活用– アクセストークン払い出し後、独自のAPIを呼び出す• YahooはYahooIDに関連する情報にアクセスする際のAPIを提供• アクセストークンを払い出すためにOpensocialのI/Fを利用している

Copyright © 2012 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

16

認証？
•

今までの話はあくまで認可の話– 認証（身元確認）はしていない•

サービスプロバイダに依存するところが多い– 認証結果と属性情報を扱うための規定が無い• スコープの定義

OpenID Connect

Copyright © 2012 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

17

OpenID Connect•

OAuth 2.0と親和性が高い– 認可フローが同じ•

OpenId 2.0の後継？

•Single Sign On の実現•

認証レベルに応じたスコープ定義•Etc…
クラウド研究会で一緒に活動しませんか？

Copyright © 2012 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

18