proxy サーバー越しに Twitter の xAuth によるアクセストークン取得時の注意点

観測気球

収集物の記録書庫 a data archive of collection -- collectible toys

[要旨] xAuth を proxyサーバー越しに行うときの問題点をまとめてみました。
[キーワード] xAuth,SSL,https,proxy,プロキシサーバー,プロクシサーバー

« 05月17日のココロ日記(BlogPet) | トップページ | つぽは取得してくれるかな(BlogPet) »

2010.05.19

proxy サーバー越しに Twitter の xAuth によるアクセストークン取得時の注意点

Twitter では、2010年6月末をもって、BASIC認証が使えなくなります(単に非推奨になるだけで、しばらくの間はまだ使えるという噂もありますが、あんまり当てにしない方がいいと思います)。そのため、既存のアプリケーションや、今後作成予定のアプリケーションは、OAuth もしくは xAuth をサポートする必要があります。

OAuth の方は API レベルでの仕様に忠実に実装すれば問題なく使えるのですが、xAuth に関しては、API レベルでの仕様に忠実に実装していても、その下位レイヤ、つまり http/https レベルでの実装がどうなっているか次第で、うまく認証が通らない(アクセストークンの取得ができない)ことがあります。

xAuth ではアクセストーク取得時は SSL (https) で通信することになっています。直接 Twitter のサーバーとの間で SSL 接続を確立して通信する場合は問題は起きないのですが、proxy サーバー越しに Twitter のサーバーと SSL 通信を行なう場合は、アクセストークンの取得に失敗することがあるのです。

proxyサーバー越しに SSL で通信を行なうとき(CONNECT による SSL 接続確立後)は、http リクエストヘッダの冒頭行に含まれる URL はフルパスで書くことになっています。この URL は、本来(SSL通信の場合でも) http:// で始まるものを使うことになっているのですが、世の中には https:// を使う実装も存在しています。

例えば、C# の HttpWebRequest (IEコンポーネントベースのライブラリ)では、proxyサーバー越しでの SSL 通信時は、リクエストヘッダに https:// で始まる URL を書いてアクセスを試み、失敗した場合は、http:// で始まる URL で再度アクセスを試みる、というような実装になっています。

あるいは、拙作の Twitter クライアント Chirrup で使っている自前のhttp/httpsライブラリでは、経験的に https:// でないとうまく通信できないことがわかっているサーバーに対しては https:// で、それ以外は http:// でアクセスを試みる実装になっています。

たいていのWebサーバーは、http:// でも https:// でも問題なく、相手をしてくれるのですが、一部、http:// じゃないと駄目なサーバー、逆に https:// じゃないと駄目なサーバーがあります。

Twitter の場合は、いちおう「http:// でも https:// でも問題なく、相手をしてくれる」Webサーバーを使っているようなのですが、こと xAuth によるアクセストークン取得に関しては、https:// でないといけないようです。

拙作の Twitter クライアント(としての機能を内蔵したWebブラウザ) tumblen3 では問題なくアクセストークンが取得できるのに、もう1つのクライアント Chirrup ではなぜか取得に失敗する(認証エラー)になるという問題を2010年2月に経験し、その原因を追及していった結果、「xAuth によるアクセストークン取得に関しては、https:// でないといけない」ことがわかりました。tumblen3 は C# (の HttpWebRequest) による実装のため、問題なく動作し、Chirrup は(ごく一部のサーバーを除いて) http:// でアクセスする実装だったため、失敗していたのでした。今では、Chirrup も https:// でアクセスすることで、この問題を克服しています。

参考

この辺の話は、拙著「Twitter API プログラミング の118ページ「xAuth によるアクセストークンの取得をプロキシサーバ越しに行う場合の注意点」というコラムにも書きました。よろしければ、参考にしてください。

その他の問題

ファイヤーウォール内からインターネットにアクセスする環境では、場合によっては通信内容を監視するため、以下のような構成の proxy サーバーを採用していることがあります。このような環境の場合、その環境特有の問題で、xAuth がうまく通らない、ということがあり得ます。この場合は、その環境依存の対策(を行なう場合は、ネットワーク管理者、管理部門の許可を取ってくださいね)が必要になりますが、対策不可能かもしれません。

特殊な構成の proxy

投稿者: tsupo 2010.05.19 午後 11:08 | 固定リンク | このエントリーをはてなブックマークに追加 | このエントリを del.icio.us に登録 このエントリの del.icio.us での登録状況 | このエントリを Buzzurl に追加このエントリの Buzzurl での登録状況 | このエントリをlivedoorクリップに登録 このエントリのlivedoorクリップでの登録状況 このエントリをlivedoorクリップに登録している人の数 | 酢鶏巡回中

楽天市場


Twitter」カテゴリ内の最近の記事

品揃え豊富で安い!NTT-X Store


アマゾンわくわく探検隊

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/6737/48403661

この記事へのトラックバック一覧です: proxy サーバー越しに Twitter の xAuth によるアクセストークン取得時の注意点:

コメント


推奨ってなに?

投稿者: BlogPetのこうさぎ (2010.05.22 午後 01:57)

コメントを書く




※イタズラ防止のため、メールアドレスを入力しないと投稿できません。

次からのコメント入力の手間を省くために、名前やメールアドレスをcookieに記憶しますか?


URL を入力すると、その URL にリンクがはられます。
なお、メールアドレスは公開されません。ご安心ください。


ワード

ニッセン

fujisan.co.jp

楽天市場