統合Windows認証をIISで動作させるのに苦労している人々の報告が何千もあることは知っていますが、それらはすべて適用されないWebページまたは既に試したソリューションにつながるようです。私は以前にこのようなサイトを何十も展開したことがあるので、サーバー/構成で何か奇妙なことが起こっているか、あまりにも長い間見ていて明らかなものを見ていません。
簡単に言えば、すべてがローカルマシン上で完全に動作しますが、実稼働サーバー上ではバラバラになります。
ローカルマシンで:
- マシンはWindows 7 Ultimate、Service Pack 1、IIS 7.5を実行しています。
- IISとVS Web開発サーバーの両方を使用して、サイトは正常にテストされました。
- IISサイト構成では、Windows認証を除くすべての認証方法が無効になっています。
- ローカルマシンはどのドメインにもありません。
- 設定されるプロバイダーは、ネゴシエートおよびNTLMです(ネゴシエート:Kerberosではありません)。
- 拡張保護はオフです。
- テストされたすべてのブラウザ(IE、Firefox、Chrome)にチャレンジプロンプトが表示され、(ローカル)Windowsアカウントでローカルホストドメインにログインできます。
- テストされたすべてのブラウザは、不透明なローカルIPアドレスを使用しても機能します。したがって、ブラウザ自体は、サイトが「ローカル」または「リモート」のどちらであるかを気にしません。
- 現在ログインしているユーザーを表示する表示行をWebページに追加しました。これには、期待どおりの内容(ログインしているローカルユーザー)が表示されます。
リモートマシンで:
- サーバーはWindows Server 2008 R2、IIS 7.5を実行しています。
- Webページをロードすると、すぐに 401.2エラーが発生します。認証ヘッダーが無効なため、このページを表示する権限がありません。 チャレンジプロンプトは表示されません。
- IISサイト構成では、Windows認証を除くすべての認証方法が無効になっています。
- リモートマシンはどのドメインにもありません。
- 設定されるプロバイダーは、ネゴシエートおよびNTLMです(ネゴシエート:Kerberosではありません)。
- 拡張保護はオフです。
- リモートマシン(リモートデスクトップセッション)では、ドメインがローカルホストか外部IPアドレスかに関係なく、Internet Explorerに同じエラーが表示されます。
- ローカルマシンからリモート Webサイトを表示しようとすると、エラーは401のままですが、401が少し異なります。サブコードはなく、次のテキストが含まれています。無効な資格情報によりアクセスが拒否されました。
- Windows認証 IISの役割機能がされてインストールされています。
- WindowsAuthenticationモジュールがされ(サーバー・レベルで)追加します。
- Windows認証をオフにして基本認証を有効にすると、まったく同じエラーが発生します。
- Windows認証を無効にし、匿名を有効にすると(明らかに)サイトは読み込まれます。
- Microsoftサポートのトラブルシューティング手順のすべてを既に実行しました:IISのHTTP 401エラーのトラブルシューティング
- 別のマイクロソフトサポートページに表示されている回避策を既に試しました(NTLMを唯一の方法として強制するため)。
最後に大事なことを言い忘れましたが、401.2エラーのFREBを有効にしようとしましたが、結果は何の役に立つものでもないようです。
MODULE_SET_RESPONSE_ERROR_STATUS
ModuleName IIS Web Core
Notification 2
HttpStatus 401
HttpReason Unauthorized
HttpSubStatus 2
ErrorCode 2147942405
ConfigExceptionInfo
Notification AUTHENTICATE_REQUEST
ErrorCodeアクセスが拒否されました。(0x80070005)
...これは、私がすでに知っていることを伝えているだけのようです(資格情報をネゴシエートするのではなく、単にリクエストを拒否しているだけです)。
このトレースはNOTIFY_MODULE_START
、ModuleName
= WindowsAuthentication
(およびその他のさまざまなASP.NETフォローアップイベント-[残念]、興味深いエラーや警告はありません)の行があるため、WindowsAuthenticationモジュールが正しくロードされていることを示しています。
誰も私がここで何が欠けているのか教えてもらえますか?
クイックアップデート:
Wiresharkダンプ全体を送信するとIP、URLなどが明らかになるので少し不快ですが、localhostとFiddlerのリモートサーバーからのHTTP応答を並べて比較しましたが、 -問題が何であるかは明らかです:
ローカルホスト:
HTTP / 1.1 401 Unauthorized キャッシュ制御:プライベート コンテンツタイプ:text / html; charset = utf-8 サーバー:Microsoft-IIS / 7.5 WWW認証:ネゴシエート WWW認証:NTLM X-Powered-By:ASP.NET 日付:2011年12月17日(土)23:42:34 GMT コンテンツの長さ:6399 プロキシサポート:セッションベース認証
リモート:
HTTP / 1.1 401 Unauthorized コンテンツタイプ:text / html サーバー:Microsoft-IIS / 7.5 X-Powered-By:ASP.NET 日付:2011年12月17日(土)23:43:13 GMT コンテンツの長さ:1293
cache-controlのような一見重要ではないいくつかの違いは別として、主な違いはリモートサーバーがクライアントにWWW-Authenticateヘッダーを返送しないことです。
だから、私はそれを質問に絞り込むと思います:Windows認証がインストールされ、ロードされ、排他的に有効になっているように見えるとき、なぜIISはWWW-Authenticateヘッダーを送信しないのですか?