DAC/スパイスラボ神部です。
・2-legged OAuth
・Signed Request(署名付きリクエスト)
・OAuth Consumer Request
の関係性が謎すぎるので参考資料をまとめてみます。
どれも同じ意味らしいのですが・・・使われる場所とかそう呼ばれるようになった経緯をたどっていけばわかりやすいのでしょうか。いったいなぜ名前がこう分かれてしまったのか!?
わかりやすい図
Google Friend Connect を使った OpenSocial Dashboard を作られているid:shinichitomitaさんからこんなわかりやすい図を教えていただきました。どういうフローなのかについてはかなり納得です。
-@rkanbe Gで画像検索したらいいのがあったので。たぶんこれで納得出来るんじゃないかしら http://bit.ly/azQtvu
資料
-pythonで署名付きリクエストを送る(2-legged OAuth) « taichino.com
3-legged OAuthが権限委譲のコンセプトを含んだ新しい認証なのに比べて、2-legged OAuthはただの共通鍵認証です
-署名リクエスト - goo Developer's Kitchen
署名リクエストはOpenSocialの世界では2-legged OAuth、Signed Request、OAuth Consumer Requestといった呼ばれ方をします
-Tender Surrender » OpenSocial Signed Requestライブラリ(PHP)をベータ公開
OpenSocialのSigned Requestは、ガジェットからの外部通信リクエストに署名を付けることで、パラメータの内容が改ざんされていないかを検証可能にする仕組みです。一般に2-legged OAuthやSigned Request、OAuth Consumer Requestという名前はすべて同じ、これを表しています。
-OAuth認証のPHPサンプル - Google-Gadgets-API-Japan | Google グループ
-改
-mixi Developer Center (ミクシィ デベロッパーセンター) » 外部サーバを呼び出してみよう
-mixi Developer Center (ミクシィ デベロッパーセンター) » 2-legged OAuthによるAPIアクセス
Tender Surrender » OAuthの署名方式を掘り下げる
RSA-SHA1とHMAC-SHA1
ちょっと調べているところの同期には「署名付きリクエストは2-legged OAuthと読んでいいのかだめなのか」という疑問もあります。
上記資料の中に
署名の生成方式は主に2種類あります。RSA-SHA1と、HMAC-SHA1です。mixiアプリだと、ガジェットから外部サーバーにリクエストを出す場合(makeRequest)RSA-SHA1を使います。モバイルアプリでmixiにリクエストを出す場合は、HMAC-SHA1を使います。それぞれの特徴などはこちらの記事を参考にしてください。
とというものがあります。mixiアプリだと外部リクエストの時がRSA-SHA1でモバイルアプリからのリクエストの時がHMAC-SHA1ということなのですが、これはどちらとも2-legged OAuthな気がします。2-leggedというのは二者間ということなので、
-コンテナと外部サーバ
-外部サーバ上のモバイルアプリとコンテナ
はどちらも2-leggedと言えそうです。
認可もないのにOAuthとつけるのが紛らわしいからやめてください、ということなのかな・・・
RSA-SHA1の検証
-RSA SHA-1 Signature for OAuth - r-weblife
Twitterのつぶやきなども含めて、ぼんやりわかってきました。
とりあえずRSA-SHA1のときには、base_stringおよびそれを元に秘密鍵で作成した署名を送り、サーバサイドではbase_stringと公開鍵でデコードした内容を要素に検証を行い、PHPでいえばopenssl_verify()がオッケーと言ってくれればオッケーにする、という感じでしょかね。
関連記事


