OAuth1.0をクライアントサイドのJavaScriptだけでやってはいけない理由

OAuth1.0をJavaScriptだけでやろうとすると、consumer keyやconsumer secretが漏れちゃってよろしくない。それはすぐわかる。ではなんでこれらが漏れるとよくないのか。そしてなぜOAuth2.0ではJavaScriptのみでOAuthができるのか。

OAuth1.0はcallback URLを指定するときに、アプリケーション登録時に設定したcallback URLと別のURLを指定しても、認証後そのURLにリダイレクトする。これだとconsumer keyとconsumer secretが漏れた場合に、アプリを偽装してアクセストークンを取得される可能性がある。

で、OAuth2.0はそれを許さない。callback URLがアプリケーション登録に設定したcallback URLと前方一致しないとダメなので、自分が管理している範囲のURLにしかリダイレクトしないというわけ。なのでOAuth2.0はJavaScriptだけでOAuthしても問題なし。

で、あってるかな。

追記:あってなかった。(コメント参照)

参考
【宿題】twitterのcallback URLのあたりについてはっきりさせたい! - r-weblife