アプリケーションがローカルIISでHTTP要求を呼び出すと、ローカルサーバーで何が起こるかを次に示します。
request.Credentials = CredentialCache.DefaultNetworkCredentials;
request.PreAuthenticate = true;
request.KeepAlive = true;
リクエストを実行すると、Fiddlerで次の一連のHTTP呼び出しを確認できます。
- 許可ヘッダーなしで要求すると、結果はWWWで401になります-NTLM+Negotiateを認証します
- 承認を伴うリクエスト:ネゴシエート(Base64文字列1)、結果はWWWで401になります-認証:ネゴシエート(Base64文字列2)
- 承認を伴うリクエスト:ネゴシエート(Base64文字列3)、結果はWWWで401になります-認証:ネゴシエート(Base64文字列4)
- 承認を伴う要求:ネゴシエート(Base64文字列3)、結果はWWWで401になります-NTLM+Negotiateを認証します
どうやらクライアントとサーバー(両方とも同じマシン上で実行されている)がハンドシェイクを試みていますが、最終的に認証は失敗します。
奇妙なことに、サイトのWindows認証を無効にし、基本認証を有効にして、user / pwdを明示的に送信すると、すべてが機能します。NTLM認証を使用して、資格情報を指定してブラウザーからサイトにアクセスしようとした場合にも機能します。