Posted by をかもと at 2010年2月16日 火曜日

BASIC Auth deprecation私が作成した 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月に即廃止ということではないと思いたいんだけど
少なくとも正式にはサポートされないということなので
その後はいつ廃止されてもおかしくない。

Twitter APIのBASIC認証は2010年6月に「廃止予定」 – 頭ん中

さて、本題の OAuth のお話。
Twitter で OAuth を利用するには、おおまかに以下の流れを踏みます。

  1. http://twitter.com/oauth_clients で Twitter にアプリケーションを登録して、consumer_key, consumer_key_secret を取得。
  2. consumer_key, consumer_key_secret から、request_token, request_token_secret を生成。
  3. 取得した request_token から authorize URLを生成。
  4. twitter側で認証した後、callback_url に戻ってくるパラメータ oauth_verifier 若しくは PIN と、request_token, request_token_secret を利用して、access_token, access_token_secret を取得。
  5. 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 アプリケーションの認証を行っていると考えていいでしょう。

TweetTwitter アプリケーション名が、どこに出てくるかというと例えば以下のような所です

  • Tweet のアプリケーション名
  • 認証画面のアプリケーション名

Twitter OAuthconsumer_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 2010年2月16日 火曜日 12:46 PM

    Twitter OAuth 対応の話 : dogmap.jp http://ff.im/-g0jf7

  • twitter 2010年2月16日 火曜日 6:02 PM

    Twitter OAuth 対応の話 : dogmap.jp http://ff.im/-g0XZQ

  • twitter 2010年2月23日 火曜日 7:29 PM

    Twitter APIのBASIC認証は非推奨でそのうち廃止されるようです。「Twitter OAuth 対応の話 : dogmap.jp」よりhttp://dogmap.jp/2010/02/16/twitter-oauth/

  • hatena bookmark 2010年3月3日 水曜日 5:32 AM

    wordpressにコメントがついたらtwitterにリプライくれるプラグイン

  • twitter 2010年3月11日 木曜日 12:03 AM

    @andyma http://dogmap.jp/2010/02/16/twitter-oauth/ こんなホームページがあったので参考にしてみますが、寝ます。

  • twitter 2010年5月17日 月曜日 10:52 PM

    [B!] Twitter OAuth 対応の話 : dogmap.jp http://dogmap.jp/2010/02/16/twitter-oauth/

  • hatena bookmark 2010年6月4日 金曜日 10:13 AM

    『consumer_key, consumer_key_secret, access_token, access_token_secret 共に重要なキーです。』

コメントする


Twitter ID を入力すると新しいコメントがあった際、 @dogmap_jp が、あなた宛に@リプライでお知らせします。

入力いただいたメールアドレスから、TwitterGravatar に登録されているアイコンを表示します。
(メールアドレスは公開されません)

改行と段落タグは自動で挿入されます。メールアドレスは表示されません。

:mrgreen: :-P :-D :-) ;-) :-o :-| :-( 8-O :-? 8-) :twisted: :evil: :oops: :roll: :cry: :lol: :-x more »