Posted by をかもと at 2010年2月16日 火曜日
私が作成した Twitter 通知用 WordPress プラグイン「Simple Tweet」ですが、Ver.1.3.0 から Twitter OAuth に対応しました。
また、先行してFMのオンエア曲を流すbotも OAuth 対応しました。
これは Twitter の BASIC認証が2010年6月に廃止予定との情報を受けての対応です。
2010年6月から Twitter API の BASIC 認証が deprecated になるとのこと。
Deprecated というのは「非推奨」「廃止予定」という意味で
これを見る限りでは6月に即廃止ということではないと思いたいんだけど
少なくとも正式にはサポートされないということなので
その後はいつ廃止されてもおかしくない。
さて、本題の OAuth のお話。
Twitter で OAuth を利用するには、おおまかに以下の流れを踏みます。
- http://twitter.com/oauth_clients で Twitter にアプリケーションを登録して、consumer_key, consumer_key_secret を取得。
- consumer_key, consumer_key_secret から、request_token, request_token_secret を生成。
- 取得した request_token から authorize URLを生成。
- twitter側で認証した後、callback_url に戻ってくるパラメータ oauth_verifier 若しくは PIN と、request_token, request_token_secret を利用して、access_token, access_token_secret を取得。
- consumer_key, consumer_key_secret, access_token, access_token_secret を利用して、Twitter の各種APIを使用する。
consumer_key, consumer_key_secret, access_token, access_token_secret 共に重要なキーです。
これらが漏れると、どんなことが可能になるでしょうか?
consumer_key, consumer_key_secret の役割を考えてみましょう。
これら2つのキーは Twitter アプリケーションの認証を行っていると考えていいでしょう。
Twitter アプリケーション名が、どこに出てくるかというと例えば以下のような所です
- Tweet のアプリケーション名
- 認証画面のアプリケーション名
consumer_key, consumer_key_secret が漏れると、これを偽装できちゃいます。
OAuth で認証する画面を見ると分かるんですけど Twitter アプリケーションの情報って名前とアプリケーションを登録したユーザ名しか出てないんですよね。
ユーザはこれだけの情報で、認証を求めてきたアプリケーションに対して権利を委ねなければなりません。
例えば「TweetPost」という Twitter アプリケーションが有ったとします。
このアプリケーションの consumer_key, consumer_key_secret が第三者に漏れてしまった場合、その第三者が consumer_key, consumer_key_secret を使用して「TweetPost」という名前の悪意あるアプリケーションを作成し、誰かにユーザー登録させることも可能です。いわゆる成りすましですね。
「TweetPost」というアプリケーションが、地道に築き上げてきた信頼・ブランドが瓦解しちゃいますね。
実際はアプリケーションのタイプを「Browser」にした場合は Twitter での認証後、アプリケーションに登録してある Callback URL に遷移するので oauth_verifier を取得するのは難儀ですが (^^;;
アプリケーションのタイプを「Client」にした場合は、request_token, request_token_secret, PIN から access_token, access_token_secret が生成できるので、成りすましは容易に可能になるでしょう。
Webアプリケーションだったら、consumer_key, consumer_key_secret を隠蔽するのは比較的容易ですが、クライアントアプリだと辛いモノがありますね。
クライアントアプリ用に OAuth 以外の認証方法が用意されるのかも知れません。
そんなわけで、Simple Tweet Ver.1.3.x では、Twitter アプリの登録は自分でやってもらうことにしました。
私が登録した Twitter アプリ経由で OAuth を通してもらうには、consumer_key, consumer_key_secret をどこかに入れ込んでおかないといけないですからね。
最近、見かけた WordPress プラグインの中にソース内に consumer_key, consumer_key_secret を埋め込んでいるものがありました。
そのプラグインは、現在のバージョンでは OAuth に対応していないようですが、将来の対応のために埋め込んであったのかも。
どの WordPress プラグインとは特定しませんが、この辺を深く考えないでソースの中に consumer_key, consumer_key_secret を埋め込んでいるようでは、作者のセキュリティに対する意識が薄いのかもしれません。
実害は無いとは思いますが、使用は控えたほうが良いかも知れません。
つぶやく
Twitter OAuth 対応の話 : dogmap.jp http://ff.im/-g0jf7
Twitter OAuth 対応の話 : dogmap.jp http://ff.im/-g0XZQ
Twitter APIのBASIC認証は非推奨でそのうち廃止されるようです。「Twitter OAuth 対応の話 : dogmap.jp」よりhttp://dogmap.jp/2010/02/16/twitter-oauth/
wordpressにコメントがついたらtwitterにリプライくれるプラグイン
@andyma http://dogmap.jp/2010/02/16/twitter-oauth/ こんなホームページがあったので参考にしてみますが、寝ます。
[B!] Twitter OAuth 対応の話 : dogmap.jp http://dogmap.jp/2010/02/16/twitter-oauth/
『consumer_key, consumer_key_secret, access_token, access_token_secret 共に重要なキーです。』