この記事では、事前認証ヘッダーで予期しない 401.1 状態が返される問題を解決します。 Internet Explorer を使用して、インターネット インフォメーション サービス (IIS) でホストされている Web アプリケーションにブラウザー接続すると発生します。
元の製品バージョン:Microsoft Edge Internet Explorer モード、Internet Explorer 11、インターネット インフォメーション サービス
元の KB 番号: 2749007
現象
以下のシナリオについて考えてみます。
- Internet Explorer (または Microsoft Edge の Internet Explorer モード) を使用して、IIS でホストされている Web アプリケーションを参照します。
- クライアント コンピューターはインターネット設定で事前認証を使用するように構成され、IIS ではカーネル モード認証が有効になっています。
- Internet Explorer (または Microsoft Edge の Internet Explorer モード) によって送信される Web 要求は、IIS アプリケーションに送信される最初の要求です。
このシナリオでは、IIS がブラウザーの要求に応じて Internet Explorer (または Microsoft Edge の Internet Explorer モード) に HyperText Transfer Protocol (HTTP) 401.1 応答を返す場合があります。 Web ブラウザーで、ユーザー名とパスワードの入力を求められる場合があります。 または、ブラウザー ウィンドウに HTTP 401.1 エラー メッセージが表示される場合があります。
原因
この動作は仕様です。 401.1 応答は、IIS アプリケーションに送信される Web ブラウザーの最初の要求に次のいずれかのヘッダーが含まれている場合に発生します。
- Windows チャレンジ/応答 (NTLM) ヘッダー
- ネゴシエート WWW 承認ヘッダー (事前認証と呼ばれます)
Note
ユーザーが Internet Explorer で資格情報の入力を求められる理由は多数ありますが、この記事の範囲外です。 プロンプトの原因がここで説明する問題の原因であるかどうかを判断する方法については、「 詳細情報 」セクションを参照してください。
回避策
この動作を回避するには、インターネット設定で事前認証を無効にするか、IIS Web アプリケーションのカーネル モード認証を無効にします。
警告
レジストリ エディターを誤って使用すると、オペレーティング システムを再インストールする必要がある重大な問題が発生する可能性があります。 Microsoft では、レジストリ エディターを誤って使用した結果生じる問題を解決できることを保証できません。 リスクを理解した上でレジストリ エディターを使用してください。
Internet Explorer でこの動作を変更するには、レジストリ エディター (Regedt32.exe) を使用して、次のレジストリ キーに値を追加します。
HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet Settings/
Note
レジストリ キーはパスです。読みやすくするためにラップされています。
次のレジストリ値を追加します。
- 値の名前:
DisableNTLMPreAuth
- データ型:
REG_DWORD
- 値:
1
IIS でこの動作を変更するには、IIS Web アプリケーションのカーネル モード認証を無効にします。
管理コマンド プロンプトから次のコマンドを実行して、インターネット インフォメーション サービス (IIS) マネージャーを開きます。
%windir%\System32\inetsrv\inetmgr.exe
Connections ウィンドウで、サーバー名を展開し、Sites を展開し、カーネル モード認証を無効にするサイト、アプリケーション、または Web サービスを展開します。
[ホーム] ウィンドウの [セキュリティ] セクションまでスクロールし、[認証] をダブルクリックします。
[認証] ウィンドウで、[Windows 認証] を選択します。
Actions ペインで Advanced Settings を選択します。
[Advanced Settings] ダイアログ ボックスが表示されたら、[カーネル モード認証を有効にする] チェック ボックスをオフにします。
OKを選択して、[Advanced Settings] ダイアログ ボックスを閉じます。
重要
カーネル モード認証を無効にすると、Kerberos 認証と委任を必要とする Web アプリケーションが失敗する可能性があります。
詳細
この記事で説明されている問題によってプロンプトが発生したかどうかを確認するには、Fiddler ツールを使用します。 このツールを使用して、要求の HTTP 要求/応答トラフィックを表示し、Internet Explorer (または Microsoft Edge の Internet Explorer モード) でプロンプトを表示します。 また、HTTP 状態コードとサブステータス コードを確認するには、IIS サーバーの IIS ログも必要です。 次の例では、Internet Explorer を使用してこの動作を示します。
Fiddler ツールを起動し、トラフィック キャプチャを有効にします。
IIS Web アプリケーションを参照して、資格情報の入力を求めます。
Fiddler で、401 になった要求を探します。 未加工の要求ビューと応答ビューを見ると、次のようなエントリが表示されます。
要求ヘッダー:
GET /App1/default.aspx HTTP/1.1 Accept-Language: en-US Accept-Encoding: gzip, deflate Connection: Keep-Alive Host: websitename Cookie: ASP.NET_SessionId=jdzbfpnmacq0jykhxnhqhe3j Authorization: Negotiate <header content omitted>
応答ヘッダー
HTTP/1.1 401 Unauthorized Content-Type: text/html Server: Microsoft-IIS/7.5 WWW-Authenticate: Negotiate WWW-Authenticate: NTLM X-Powered-By: ASP.NET Date: Wed, 22 Aug 2012 17:41:09 GMT Content-Length: 1293 Proxy-Support: Session-Based-Authentication
Note
Web アプリケーションに対する最初の要求には既に Authorization
ヘッダーが含まれており、結果として 401 応答が返されます。 対応する IIS ログには、次のようなエントリが表示されます。
2012-08-22 17:41:09 2001:4898:0:fff:200:5efe:157.59.113.72 GET /App1/default.aspx - 80 - 2001:4898:0:fff:0:
5efe:172.18.100.183 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.1;+WOW64;+Trident/5.0;+SLCC2;+.NET+CLR+
2.0.50727;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+Media+Center+PC+6.0;+.NET4.0C;+.NET4.0E;+InfoPath.3;+MS-
RTC+EA+2;+BRI/1;+Zune+4.7;+MS-RTC+LM+8;+BRI/2;+Creative+AutoUpdate+v1.41.02) 401 1 2148074254 5005
HTTP の状態とサブの状態は 401.1 で、無効な資格情報が原因で Access Denied にマップされます。
詳しくは、次のドキュメントをご覧ください。