[Twitter] 認証できない(´・ω・`) [OAuth]

先日、お出かけしている最中に、宅内漏電が発生して全面停電になったことがありました。

そのときに、以前購入した BY50S のお陰で、めでたく ESXi 上のサーバが正常にサスペンドし、安全に停止してくれました。復旧も、嫁の電源ボタン投入のみで完全復旧(∩´∀`)∩めでたしめでたし

のはずだったのですが、うちはサーバを停止せずにサスペンドさせるようにしているので、復帰後に時刻同期をし直さないとずれっぱなしになるのです。ntp は時間がずれすぎていると、同期できないので、いちいち ntpdate しないといけないんですよね。

今回は、それを失念していたことで起きた、あるトラブルの話です。

その後、この blog を更新したときに、何故か Twitter へ「かいたよ!」の連絡が通達されませんでした。更新しても「更新したよ!」と言ってくれません。

何故だろう・・・と、設定画面を見ると、なぜか Twitter の OAuth 認証が切れてるじゃありませんか。あれ、なぜだろう、おかしいなと、再認証をかけると「Twitter につながんねぇよ(#゚Д゚)ゴルァ!!」と怒られる始末。

いろいろなアプリで OAuth 試してみても、ぜんっぜんダメ。どれもこれもダメ。

そーこーしているうちに、ある一つのアプリに「時間がずれていると、認証に失敗することがあるんだぜ( ´ー`)y-~~ (英語で)」なんて事が書いてあるときにぴきーんとひらめきました。そうです、こないだのサーバサスペンドで時間がずれてる!

ということで、さっさと ntpdate して、再度 OAuth 認証してみると、無事ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ成功

どういうことなんだろう、と調べていたらこんな事が書いてありました。

HMAC-SHA1 または RSA-SHA1 署名方式を使用している場合、クライアントから受け取ったノンス値 / タイムスタンプ / トークン (存在する場合のみ) の組合せが以前のリクエストで使用されたものではないことを検証すること。(サーバーはタイムスタンプが古いままのリクエストを拒否してもよい

The OAuth 1.0 Protocol draft-hammer-oauth-10 – 3.2. リクエストの妥当性検証 より。

この場合、クライアント(我が家のサーバ) のタイムスタンプが古いままとなっていて、拒否されたと見られます。

いやー。驚きますね。世の中が思った以上にシビアに動いていることを感じた今日この頃です。

以上(゚Д゚)