私が作成した 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 を埋め込んでいるようでは、作者のセキュリティに対する意識が薄いのかもしれません。
実害は無いとは思いますが、使用は控えたほうが良いかも知れません。
Simple Tweetの最新版(1.4.0.2)を使用したいのですが、ユーザープロフィールの「Twitter OAuth」のURLが「/wp-admin/%1$s」になってしまいま認証できません。
他のサイト(レンサバも別)では、正常に使用できています。
原因は何が考えられるでしょうか?
PHP Version 5.2.8
cURL support enabled
cURL Information libcurl/7.12.1 OpenSSL/0.9.7a zlib/1.2.1.2 libidn/0.5.6
上記、環境です。
初めまして。Simple Tweet 1.3.8.2を導入しようとしています。
OAuthの設定はうまくいき、
【Twitter でツイートする言葉】 %POST_TITLE% – %PERMALINK% | %SITE_NAME%
【Twitter でツイートする言葉にパーマリンクを含まない】のチェックは外す
【パーマリンクを圧縮する】 のチェックは外す
という設定をしたのですが、TwitterへのPOSTはうまくいくものの
https://twitter.com/#!/pirocot/status/155373952682823680
のようにパーマリンクの手前に無効なURLが挿入され(http://t.co/rTEJgGYF)、かつサイト名も表示されていないという現象に悩んでいます。
何かお気づきの点はございますでしょうか?
よろしくお願いします。
ユーザーごとにOAuthサーバーへのアプリケーション登録をすると、OAuthサーバーのデータベースにsimple tweet(の名前違い)の重複レコードがユーザーの数だけできてしまい、そちらの管理作業に迷惑がかかりませんか?
私が作業したときには「simple tweet」「simple tweet2」はすでに使われており、同じアプリケーション名では登録できませんでした。
ちなみに、exciteなどの他の似たようなtwitterアプリケーションはユニークな1件だけの登録のようです。
ソースコードを公開していないのでそういう運用なのでしょうが・・・
ピンバック: Twitterで間違えて登録したりいらなくなったOAuthアプリを削除したい(未解決) « ponnao-clip