« 2016年12月 | トップページ | 2017年3月 »

2017年1月

2017年1月26日 (木)

認証プロキシをなんとかするためにツールを作っている話

【要約】認証プロキシをなんとかするためにツールを作ってGitHubで公開した。

経緯

社内ネットワークからhttp/httpsで外部に出る際にはプロキシを通さなければならない、 という環境は多いと思います。 こういうプロキシの中にはユーザー名とパスワードを入れないと通してくれないタイプのものがあります。 認証プロキシというやつですね。 これは本当に頭痛のタネです。

さすがにブラウザとかは認証プロキシに対応しているのですが、 これに対応していないソフトウェアも結構あります。 今時いろんなソフトウェアがhttp/httpsで通信していまして、 特に開発系のツールは必要なコンポーネントをhttp経由で自動的に取ってくるみたいな動作をすることが多いのです。 こういうソフトウェアの多くが素の状態では認証プロキシを通らない。 家で試すと特に問題なく動くツールが、 会社環境だと意味不明なエラーで動かなくなったりします。

ここ二三年、 わけのわからないエラーが出るたびに、 どれが引っかかっているのか調べ、 その設定方法を調べ、 ちまちまと設定しては乗り切っていました。 結果、あちこちの設定ファイルに認証プロキシのパスワードが埋め込まれて、 なにかが間違っているような気がするわけですが、 まあ、仕方ないね。

が、最近Visual Studio 2017 RCのアップデートが認証プロキシ環境内で帰ってこなくなり、 対処方法が皆目わからないという事態が発生するに至って、 我慢の限界を越えました。 こんなもん、やっとれるかーーーーーーーー。

というわけで

ツールを作りました。

これはWindowsのデスクトップ上でローカルプロキシとして動作します。 動かすと、現在のユーザーのプロキシ設定を書き換え、 自分をプロキシとして登録し、 ソフトウェアからの通信を中継します。 で、本来の認証プロキシが認証を要求すると、 通信元のソフトウェアに帰ることなく認証情報をつけてリクエストを再送信します。 結果として、 ソフトウェアが普通のプロキシにふつうに対応していれば、 そのまま通信できます。 中継はタスクトレイのアイコンから簡単にON/OFFできます。

これは認証プロキシを回避するものではありません。 認証プロキシに対応していないソフトウェアのhttp/https通信を中継して、 正しく認証プロキシを通すようにするものです。

効能としては以下の通り。

  • 認証プロキシ環境内で認証プロキシ非対応ソフトウェアを利用することができます。
  • 認証プロキシのパスワードをあちこちに書かなくてすみます。 パスワードは暗号化された状態で設定ファイル一箇所にあれば十分です。 (まあ、元々認証プロキシのパスワードはあんまり安全でないやり方でやりとりされますので、気休めではありますが)
  • 仮想化ソフトウェア(Hyper-Vなど)が定義したマシン内ネットワークに対する(通常)プロキシとして利用できます。 これを利用すると、 「プロキシの設定を埋め込んだままのイメージを公開してしまった!」という事故をやらかしても、 パスワードが埋め込まれないため、多少状況はましになります。

GitHub上で公開しています

設定ウィンドウとかまだ実装できていないけど、 とりあえず役立つ程度には動いているので(Visual Studio 2017 RCのアップデートもできたし)、 tu公開します。 モノはGitHub上にあります。 ツール名は「認証プロキシ爆発しろ!(英語名は MAPE: May Authentication Proxy Explode)」です。

ipponshimeji/MAPE (GitHub)

詳細な説明とかは、 以下のページから。

目次 - 認証プロキシ爆発しろ! (GitHub)

手っ取り早くどういうものか知りたい方は、特に以下のページを。

認証プロキシでお困りの方はお試しくださいまし。

ちなみに

Windows環境で認証プロキシをなんとかするにはFiddlerを使う技とかもありますが、 以下の理由から独立したツールを作りました。

  • Fiddlerを使う場合、Fiddlerのスクリプトをいじる必要(しかもちょっと複雑)があり、 非開発者な人に「これを使えばなんとかできます」とか言いにくい。
  • 自動構成スクリプトでプロキシが設定されている環境では、 Fiddlerのプロキシ設定書き換えは「次で始まるアドレスにはプロキシを使用しない」を設定してくれない。 認証プロキシが設置されているような環境では自動構成スクリプトを利用していることが多いでしょうから、 これは面倒の元になりがちです。

なお、Fiddler自体は便利なデバッグツールとして利用させていただいております。

【2017年4月11日追記】

上にはこう書きましたが、 「次で始まるアドレスにはプロキシを使用しない」に相当する設定がありました。 すいません。

« 2016年12月 | トップページ | 2017年3月 »