web-dev-qa-db-ja.com

統合認証を使用するIIS6イントラネットサイトは、外部からアクセスするとロードに失敗します

統合認証を使用する組織用の内部サイトをいくつか開発しました。最終的には、ドメインに参加しているコンピューターを使用しているユーザーがこれらのサイトに外部からアクセスできるようにする必要があります。サイトは、内部ネットワーク上にあるドメインコンピューター上で期待どおりに機能します。問題は、ラップトップを家に持ち帰り、それらのサイトにアクセスしようとしたときに発生します。

IISでは、2つのサイトでのみ統合認証が有効になっています。 IE8を使用してサイトを参照すると、ユーザー名/パスワードのプロンプトが表示され、ドメインの資格情報を要求されます。それらを入れることができ、それは機能しますが、目標は統合認証にキャッシュされたトークンを使用することです。

次に、サイトが信頼されていない限り、IEは統合認証要求に応答しない(NTLMはこれに適した用語ですか?))と推論しました。サイトを信頼済みサイトに追加しようとしましたが、以前と同じ動作です。次に、サイトをローカルイントラネットサイトに追加すると、状況がおかしくなります。IEから一般的なエラーページが表示され、エラーコードなどは表示されません。

ファンシーのために、Firefox(以前に統合認証を使用するように設定した)をロードし、この新しいサイトをnetwork.automatic-ntlm-auth.trusted-urisに追加しました。驚いたことに、ページをまったく問題なくロードでき、期待どおりの結果が得られました(統合認証が機能することの確認を含む)。

ここからどこに行けばいいのかよくわからないので、今は少し頭がおかしくなります。私はあなたの何人かがいくつかの洞察を提供できるかもしれないことを望んでいました。


更新05/11/1以下で推奨されているようにFiddlerをいじり、FirefoxとIE)がページ要求を処理する方法にいくつかの矛盾が見られました。InternetExplorerをテストしたとき1つのリクエストを行い、401.2(サーバー構成エラー)をヒットして終了します。これが発生した場合、セキュリティログエントリはありません。Firefoxは最初に同じエラーを検出しますが、その後別のリクエストを送信し、認証は成功します。

最初のテストはすべてネットワークの外部から行われたことを念頭に置いて、内部で行われたときにIE8による認証が成功したことを確認しました。これは、内部と外部の両方でFirefoxと同じように動作するようです。最初の要求は401.2で満たされ、次に別の要求が送信され、401.1(チャレンジ?)、続いて200(成功)で満たされます。

したがって、問題は、ネットワークの外部から「イントラネット」サイトにアクセスすると、IE8で401.2が発生し、(他のブラウザの測定では)認証プロセスを続行する必要があるときに停止することです。

誰かが私が説明したフィドラーの活動を確認できますか?

5
maik

私には、IE8の「バグ」の犠牲になっているように見えます。 ここでMicrosoftに報告 および ここで詳細に説明

AdsUtil.vbsスクリプトを使用して、影響を受けるディレクトリの認証をデフォルトの「Negotiate、NTLM」ではなく「NTLM」に設定すると、問題はおそらく解消されると思います。

Wireshark(またはお気に入りのスニファ)でクライアントマシンを監視し、サイトへのアクセス中にドメインコントローラのNetBIOSブロードキャスト名前解決を実行しようとするかどうかを確認することで、この動作が見られるかどうかを確認できます。

私が取り上げているNTAuthenticationProviders値の背景がいくつかあります Microsoft KB215383から 。 IIS6の場合、値が定義されていない場合、IISはそれを「Negotiate、NTLM」として扱います。私の推測では、デフォルト設定で実行していると思います。

この値は、adsutil.vbsスクリプト(デフォルトでは%SystemDrive%\ Inetpub\AdminScriptsにインストールされています)を使用して調べることができます。次のコマンドを使用して、マシン上の最初のWebサイトの値を調べます(明らかに、この例のパスを実際のアプリケーションに合わせて変更してください)。

cscript adsutil.vbs GET W3SVC/1/Root/NTAuthenticationProviders

覚えておいてください-値が定義されていない場合、IIS6はコンパイルされたデフォルト設定の「Negotiate、NTLM」を使用します。

マシン上の最初のWebサイトのルートディレクトリのNTAuthenticationProviders値を変更するには、次のコマンドを使用します。

cscript adsutil.vbs SET W3SVC/1/Root/NTAuthenticationProviders "NTLM"

値を設定した後、もう一度クエリを実行して、値が「取得」したことを確認することをお勧めします。

7
Evan Anderson

IISサーバーのセキュリティログにアクセスできますか?アクセスできる場合は、IE8で統合認証が失敗する理由を理解するのに役立ちます。ログにアクセスできない場合は、 WebFiddlerを使用すると、トラフィックのクライアント側のビューを取得できます。これにより、IE8とFireFoxの間のHTTP認証トラフィックを比較できます。

1
Eric H