web-dev-qa-db-ja.com

IIS 7.5?)でのWindows認証の問題(チャレンジなし)のトラブルシューティング

統合Windows認証をIISと連携させるのに問題があるという報告が何千もあることは知っていますが、それらはすべて、適用されないWebページや、すでに試したソリューションにつながるようです。私は以前にこのような数十のサイトを展開したことがあるので、サーバー/構成で何か奇妙なことが起こっているか、これをあまりにも長く見ていて、明白なものを見ていません。

簡単に言えば、すべてが私のローカルマシンで完全に動作しますが、実稼働サーバーではバラバラになっており、私が知る限りまったく同じ構成です。

ローカルマシン:

  • マシンはWindows 7 Ultimate、Service Pack 1、IIS 7.5。
  • IISとVS Web開発サーバーの両方を使用して、サイトが正常にテストされました。
  • IISサイト構成では、すべての認証方法が無効になっていますを除くWindows認証)。
  • ローカルマシンはどのドメインにもありません。
  • セットアップされるプロバイダーはNegotiateとNTLMです(Negotiate:Kerberosではありません)。
  • 拡張保護はオフです。
  • テストされたすべてのブラウザー(IE、Firefox、Chrome)でチャレンジプロンプトが表示され、自分の(ローカル)Windowsアカウントでlocalhostドメインにログインできます。
  • テストされたすべてのブラウザーは、不透明なローカルIPアドレスを使用しても機能します。そのため、ブラウザー自体は、サイトが「ローカル」または「リモート」のどちらに表示されるかを気にしません。
  • 現在ログインしているユーザーを表示する表示行をWebページに追加しました。これは、私が期待するとおりに正確に表示します(ログインしたローカルユーザーのいずれか)。

リモートマシン:

  • サーバーはWindows Server 2008 R2、IIS 7.5。
  • Webページをロードすると、immediate401.2エラーが発生します:無効な認証ヘッダーのため、このページを表示する権限がありません。 チャレンジは表示されません
  • IISサイト構成では、すべての認証方法が無効になっていますを除くWindows認証)。
  • リモートマシンはどのドメインにもありません。
  • セットアップされるプロバイダーはNegotiateとNTLMです(Negotiate:Kerberosではありません)。
  • 拡張保護はオフです。
  • リモートマシン(リモートデスクトップセッション)では、ドメインがlocalhostであるか外部IPアドレスであるかに関係なく、同じエラーがInternet Explorerに表示されます。
  • 私のlocalマシンからremoteWebサイトを表示しようとすると、エラーは依然として401ですが、わずかに異なる401です。資格情報が無効なため、次のテキストのサブコードがありません:アクセスが拒否されました。
  • Windows認証IISロール機能がインストールされています)。
  • WindowsAuthenticationモジュールisが(サーバーレベルで)追加されました。
  • Windows認証をオフにして基本認証を有効にすると、まったく同じエラーが発生します。
  • Windows認証をオフにして(明らかに)匿名を有効にすると、サイトがロードします。
  • マイクロソフトサポートのすべてのトラブルシューティング手順を既に実行しました。 IISでのHTTP 401エラーのトラブルシューティング
  • 私はすでに 別のMicrosoftサポートページに示されている回避策 を試しました(おそらく、NTLMを唯一の方法として強制するためです)。

最後に重要なことですが、401.2エラーに対してFREBをオンにしてみましたが、結果から何も役に立たないようです。次の警告が表示されるだけです。

MODULE_SET_RESPONSE_ERROR_STATUS

ModuleName IIS Web Core
通知2
HttpStatus 401
HttpReason Unauthorized
HttpSubStatus 2
エラーコード2147942405
ConfigExceptionInfo
通知AUTHENTICATE_REQUEST
ErrorCodeアクセスが拒否されました。 (0x80070005)

...これは私がすでに知っていることを教えているようです(資格情報をネゴシエートするのではなく、単に要求を拒否しているだけです)。

トレースは、ModuleName = WindowsAuthentication(およびその他のさまざまなASP.NETフォローアップイベント-[un]を含むNOTIFY_MODULE_START行があるため、WindowsAuthenticationモジュールが正しく読み込まれていることを示しています。幸い、ここには興味深いエラーや警告はありません)。

私がここで欠けているかもしれないものを誰かに教えてもらえますか?


クイックアップデート:

IP、URL、およびその他のものを明らかにするので、Wiresharkダンプ全体を送信するのは少し不快ですが、ローカルホストとFiddlerのリモートサーバーからのHTTP応答を並べて比較しました。 -問題が何であるかを明らかにする:

Localhost:

 HTTP/1.1 401 Unauthorized 
 Cache-Control:private 
 Content-Type:text/html; charset = utf-8 
サーバー:Microsoft-IIS/7.5 
 WWW-Authenticate:Negotiate 
 WWW-Authenticate:NTLM 
 X-Powered-By:ASP。 NET 
日付:2011年12月17日土曜日23:42:34 GMT 
内容の長さ:6399 
プロキシサポート:セッションベースの認証

リモート:

 HTTP/1.1 401 Unauthorized 
 Content-Type:text/html 
 Server:Microsoft-IIS/7.5 
 X-Powered-By:ASP.NET 
日付:2011年12月17日土曜日23:43:13 GMT 
コンテンツ長:1293 

キャッシュ制御のように一見重要ではないいくつかの違いを除いて、主な違いはリモートサーバーがWWW-Authenticateヘッダーをクライアントに送信していないことです

なぜIIS Windows認証がインストールされ、ロードされ、排他的に有効になっているように見えるときにWWW-Authenticateヘッダーを送信しないのですか?

21
Aaronaught

問題が解決しました。私は最終的にmoduleリストを並べて比較することにしましたが、実際には1つ欠けていました。 2つのWindows認証モジュールがあることがわかります。

Module List

サーバー上に、マネージドWindowsAuthenticationモジュールがありましたが、上記で強調表示されているネイティブWindowsAuthenticationModuleがありませんでした。そのように構成された理由は誰もが推測できることですが、明らかにネイティブモジュールがロードされていない場合、マネージモジュールは元気にロードされ、警告なしに失敗します。

したがって、この問題が発生する今後の読者は、両方のモジュールがロードされているであることを確認してください。IIS警告しませんそれらの1つが欠落している場合。

14
Aaronaught

これにより、Windows認証で実行されているASP.NETサイトでローカルに作業する開発者の問題が必ずしも解決されるわけではないことがわかりました。ループバックチェックを無効にするレジストリハックが見つかりました。これはそれを修正しました:-

レジストリキー-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

「DisableLoopbackCheck」という値1のDWORDを作成します

設定を有効にするには、マシンを再起動する必要があります

4
sh1rts