モバイルアプリで2-legged OAuthを使うことへの疑問
http://developer.mixi.co.jp/appli/appli_mobile/lets_enjoy_making_mixiappmobile/process_flow
mixiモバイルアプリはユーザーからのリクエストを一旦受け取ってアプリケーションサーバーへリクエストするという形をとっています。これ自体は色んな事情があるだろうから全然理解できるんだけど、何で2-legged OAuthを採用したんでしょうか?
mixiモバイルアプリでの認可の仕組みはコンシュマーとプロバイダーが信頼関係があることとユーザーがアプリケーションをインストールした時点でコンシュマーに対してリソースへのアクセス権限を認めるという前提のちょっと乱暴なモデル。
省略されるのは
- コンシュマーからのRequest Token要求とプロバイダーによる発行
- コンシュマーからのRequest Tokenへのサイン要求とユーザーのプロバイダーへの認証後のRequest Tokenへのサイン
- コンシュマーからのRequest TokenとAccess Tokenの交換とプロバイダーによるAccess Tokenの発行
で、Proteced Resourceに対してAccess Tokenなしでアクセスできます。
で、ふと思ったんだけど、Request Tokenの下りはモバイルだと無理なので理解できるけど、なぜAccess Tokenの発行フェーズまで省略する必要があるのかということ。
ユーザーのリクエストはプロバイダーを介してコンシュマーにリクエストされてるわけだから、ここでAccess Tokenを発行してQuery Parameterかなんかに含めてコンシュマーにリクエストすればいいと思うんですよね。もちろん有効期限をつけて。
Access Tokenがないとコンシュマーが無制限にリソースにアクセスできることになってどうかと思うのでやっぱりあった方がいいと思うんだけど、その辺ってどうなんだろうか。