FiddlerはHTTP/HTTPS通信をキャプチャーするツールとして有名ですが、端末のプロキシサーバーとして使用することができ、疑似的なBasic認証の環境を構築できます。FiddlerをBasic認証サーバーとして環境構築する手順をまとめてみました。
設定方法
前提:
- Fiddlerがインストール済みの前提となります。インストール手順は色々なところで掲載されているので割愛します(以下が参考になると思います)。
- Fiddler Classic を利用してます(最近はFiddlerのページからインストーラをダウンロードするとFiddler Everywhereが落ちてくるようです)。
手順:
- まずBasic認証で使用するためのユーザークレデンシャル(ユーザー名とパスワード)を設定します。ユーザークレデンシャルはbase64エンコードする必要があるので、FiddlerのTextWizardを [Tools] ->
- TextWizardの上段にユーザークレデンシャルを以下の書式で入力します。
<ユーザー名>:<パスワード>
この例では以下で設定してます:
- ユーザー名: testUser
- パスワード: testPass
- base64エンコードされた文字列がTextWizardの下段に自動入力されるので、その文字列をコピーします。
- Fiddlerの [QuickExec] に以下を入力し、エンターを押下します。
prefs set fiddler.proxy.creds <手順3にてbase64エンコードした文字列>
分かりずらいかもしれませんが、QuickExecは画面左下のこちらです。
- [Rules] -> [Require Proxy Authentication] を選択し、プロキシ認証を有効化します。
これで準備完了です!
あとは、[File] -> [Capture Traffic] を選択して、通信キャプチャーを有効化した状態で、ブラウザからサイトにアクセスしてみましょう。ブラウザ上でプロキシ認証を通すよう促されます。
手順2で設定したユーザークレデンシャルを入力すると、認証を通しページが見れるようになります!
使用用途
で、ここまで設定手順を書いといてアレですが、いったい何に使うの?という話をします。正直、この機能の使用用途はものすごく限られていると思いますが、私はデスクトップアプリがプロキシのBasic認証に対応しているかの確認に使用しました。
ブラウザに関しては特に気にする必要もないと思いますが、ことデスクトップアプリに関しては、ものによってはプロキシのBasic認証に対応しておらず、プロキシを通した通信が行えないという場合があります(以下は、とあるBasic認証に未対応なアプリで通信した際のアプリログ)。
---> (内部例外 #0) System.Net.Http.HttpRequestException: この要求の送信中にエラーが発生しました。 ---> System.Net.WebException: リモート サーバーがエラーを返しました: (407) プロキシ認証が必要です
場所 System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult, TransportContext& context)
場所 System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult ar)
--- 内部例外スタック トレースの終わり ---<---
デスクトップアプリがBasic認証に対応しているか検証するうえで、手っ取り早く環境構築ができる機能になると思いました。