4

イントラネットに展開するための基本的な ASP MVC Web サイトを作成しました。ユーザーが IIS ボックスと同じドメインにいることが想定されており、認証された Windows ユーザーでない場合は、アクセスできません。

Server 2003 R2 SP2 で実行されている IIS6 にこれを展開しました。Web アプリは、独自のプール ユーザー アカウントを持つ独自のプールで構成されます。Web アプリの IIS ディレクトリ セキュリティ オプションは "Windows 統合セキュリティ" のみに設定され、web.config ファイルには次のものが含まれます。

<authentication mode="Windows" />

IIS6 サーバー自体のリモート デスクトップ セッションから、http://localhost/myapp経由でアクセスした場合、IE7 ブラウザー ウィンドウは正常に認証され、Web アプリをナビゲートできます。

ただし、サーバーからも、サーバーの名前 (つまりhttp://myserver/myapp ) を介してアクセスすると、IE7 は資格情報ダイアログを表示し、正しい資格情報の入力を 3 回試行した後、最終的に「HTTP エラー 401.1 - 承認されていません: アクセスが拒否されました。無効な資格情報へ」。

ワークステーションが Web アプリの URL を参照するときにも同じ問題が発生します (当然、"localhost" ではなくサーバーの名前を使用します)。

IIS6 サーバーは、私たちが持っている唯一のドメインのメンバーであり、ファイアウォールが有効になっていません。

これが機能するために正しく構成できなかったものはありますか?

ありがとう、


Matt Ryan、Graphain、Mike Dimmick の提案を試してみましたが、今のところ成功していません。Server 2003 DC と別のサーバー 2003 IIS6 サーバーを使用して仮想マシン テスト ラボを構築したところ、問題を再現できました。

localhost 以外の URL (つまり、 http://iis/myapp )を介して初めてサイトにアクセスしようとすると、IIS6 サーバーのシステム イベント ログにエントリが表示されます。FQDN URL も失敗します。

ソース: Kerberos、イベント ID: 4
Kerberos クライアントは、サーバー host/iis.test.local から KRB_AP_ERR_MODIFIED エラーを受け取りました。使用されたターゲット名は HTTP/iis.test.local でした。これは、kerberos サービス チケットの暗号化に使用されたパスワードが、ターゲット サーバーのものと異なることを示しています。通常、これは、ターゲット レルム (TEST.LOCAL) とクライアント レルムで同じ名前のマシン アカウントが原因です。

4

5 に答える 5

7

広範囲にわたるグーグルの後、私は次のMSDN記事で解決策を見つけることができました:
方法:ASP.NET2.0アプリケーションのサービスアカウントを作成する

具体的には、Windowsサポートツールのsetspnツールを使用した「ドメインアカウントのサービスプリンシパル名(SPN)の作成」について説明している「追加の考慮事項」セクションを参照してください。

setspn -A HTTP / myserver MYDOMAIN \ MyPoolUser setspn
-A HTTP / myserver.fqdn.com MYDOMAIN \ MyPoolUser

これにより、仮想テストラボと元の問題サーバーの両方で問題が解決しました。

この記事には、カスタムプールユーザーでWindows認証を使用すると、関連付けられたDNS名がそのプールでのみ使用されるように制限されるという重要な注意事項もあります。つまり、別のIDを持つ別のプールは、別のDNS名に関連付ける必要があります。

于 2008-09-25T08:53:08.907 に答える
1

Windows Server2003SP1の新しいループバックチェックセキュリティ機能のように聞こえます。私が理解しているように、特定の種類の傍受攻撃を防ぐように設計されています。

http://support.microsoft.com/kb/896861から

症状

完全修飾ドメイン名(FQDN)またはカスタムホストヘッダーを使用して、Microsoftインターネットインフォメーションサービス(IIS)5.1またはIIS 6を実行しているコンピューターでホストされているローカルWebサイトを参照すると、次のエラーメッセージが表示される場合があります。次のようになります。HTTP401.1-無許可:ログオンに失敗しましたこの問題は、Webサイトが統合認証を使用し、ローカルループバックアドレスにマップされた名前を持っている場合に発生します。

注このエラーメッセージは、サーバー上でWebサイトを直接参照しようとした場合にのみ表示されます。クライアントコンピューターからWebサイトを閲覧する場合、Webサイトは期待どおりに機能します。

原因

この問題は、Microsoft Windows XP Service Pack 2(SP2)またはMicrosoft Windows Server 2003 Service Pack 1(SP1)をインストールした場合に発生します。WindowsXPSP2およびWindowsServer2003 SP1には、コンピュータへのリフレクション攻撃を防ぐために設計されたループバックチェックセキュリティ機能が含まれています。したがって、使用するFQDNまたはカスタムホストヘッダーがローカルコンピューター名と一致しない場合、認証は失敗します。

回避策

  • 方法1:ループバックチェックを無効にする
  • 方法2:ホスト名を指定する

詳細については、 http://support.microsoft.com/kb/896861を参照してください。


編集-クライアントPCからもこれを見ているとあなたが言ったことに気づきました...それはもっと珍しいことです。ただし、これらの回避策の1つをテストして、問題が修正されたかどうかを確認します(修正された場合は、DNS構成に問題がある可能性があります)。

于 2008-09-23T08:23:16.530 に答える
0

IE7は、サーバーがイントラネット上にあることを識別した場合にのみ、Windowsクレデンシャル(NTLM、Kerberos)を送信します。IE7は、イントラネットゾーンのロックダウン機能も追加しました。ドメインを使用していない場合、デフォルトでは、サーバーはイントラネットゾーンにありません。これは、ゾーン移行攻撃を防ぐために行われました。

これを変更するには、[ツール] / [インターネットオプション]の[セキュリティ]タブに移動し、[ローカルイントラネット]をクリックします。次に、[サイト]ボタンをクリックしてから[詳細設定]をクリックするか、IEにイントラネットを自動的に検出しないように指示して、必要に応じて他のチェックボックスを選択することにより、イントラネットとして扱う必要のあるサーバーを手動で追加できます。

于 2008-09-23T11:05:12.943 に答える
0

逆の問題が発生しました。サイトは外部で認証されますが、ローカルでは認証されません。

動作しているサイトと比較しましたが、違いは、認証に失敗したサイトが Windows 認証を使用していたことです。

ただし、私が使用している他のサイト (これは開発サーバーです) は基本認証を使用する傾向があります。

正確な理由はわかりませんが、これで修正されました。

しかし、同時に「デフォルト ドメイン」と「レルム」の設定に気付きました。

私はそれが非常にありそうもないことを知っていますが、これらはおそらくまったく役立つでしょうか?

于 2008-09-25T06:20:20.507 に答える
0

私には、あなたがすべてを正しく行ったかのように聞こえます。

確かにそうだと思いますが、「ユーザー」だけでなく「ドメイン\ユーザー」をユーザーアカウントとして使用していることを確認しましたか?

于 2008-09-23T07:54:32.340 に答える