28

ここには、NTLM ベースの Windows 認証を使用する asp.net 3.5 アプリケーションがあります。システムは、実際にはさまざまな地理的な場所に分散されたプライベート ネットワーク上で実行されます (VPN 経由で接続)。

現在、ウェブサイトのパフォーマンスを最適化しようとしています。NTLM の仕組みにより、IIS へのすべての新しい要求は 3 つの異なる要求で構成され、最初の 2 つは 401 応答です。これらのリクエストの量をセッションの開始時のみに最小限に抑えようとしています。この解決策を見つけました。残念ながら何も変わらず、この 401 応答が返され続けます (これには時間がかかります)。

トラフィックを確認するために、最初に Fiddler アプリを使用しました。どういうわけか、Fiddler を使用すると、セッションの開始時に認証プロセスが 1 つしかありません (希望どおり)。ただし、Fiddler を閉じて WireShark 経由でトラフィックを確認すると、各要求に対してこの 401 応答がまだ残っていることがわかります。 .

使用するクライアントは IE6、IIS バージョン 6 です。

誰かがアドバイスできますか?

4

7 に答える 7

21

NTLM/Negotiate は、他のすべての HTTP 認証方式とは異なり、接続指向のプロトコルです。

IIS には、以前に認証された接続 (AuthPersistSingleRequest など) のすべての要求に対して認証が要求されるかどうかを制御するさまざまな設定があります。その設定とは別に、IIS は POST 要求を行うときに自動的に再認証を要求すると思います。

サーバーが接続の再利用を妨げている場合 (たとえば、応答で Connection: close ヘッダーを送信することによって)、それを修正する必要があります。そうしないと、再認証が発生します。Fiddler を使用すると、このような認証再利用フォイル ヘッダーを簡単に確認できます。

于 2009-08-03T15:07:57.407 に答える
4

唯一の方法は、ログインページでのみ NTLM を使用し、ここのように Cookie を使用することです

于 2009-08-06T14:09:57.187 に答える
3

ドメインでこれを試しましたか?

setspn -a FQDNServerName applicationPoolServiceAccount
setspn -a biosServerName applicationPoolServiceAccount

アプリケーション プールが NTLM 認証要求を処理できるようにします。

于 2011-03-10T23:38:10.687 に答える
3

関連トピック; IIS7.0 と kerberos 認証を使用している場合、AuthPersistNonNTLM=true を使用して、各要求の 401 ラウンドトリップを回避できるようです。

http://msdn.microsoft.com/en-us/library/aa347548(VS.90).aspx

http://blogs.technet.com/b/configurationmgr/archive/2010/06/03/solution-you-may-experience-slow-performance-when-using-bits-and-kerberos-authentication-on-configmgr- 2007-配布ポイント.aspx

于 2010-08-12T08:48:04.150 に答える
2

サイトの IE6 のセキュリティ設定である可能性があります。ローカル イントラネットまたは信頼できるサイトに変更してみてください。

于 2009-08-03T14:06:46.210 に答える
1

私はまったく同じ問題を抱えています!私はあなたと同じ環境を使用しています。ただし、Fiddler でも 2 つの 401 が表示されます。私はその問題に数日を費やした後、あきらめました。AuthPersistence も機能しませんでした。しかし、ここに私が見つけたリンクがあります。おそらくあなたの場合に役立つでしょう。

http://msdn.microsoft.com/en-us/library/ms525244.aspx

http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/b0b4ec5c-74f8-43e9-ac64-d8b852568341.mspx?mfr=true

http://technet.microsoft.com/en-us/library/cc786094.aspx

http://technet.microsoft.com/en-us/library/cc781339(WS.10).aspx

仮想ディレクトリ レベルと Web サイト レベルの両方でフラグを設定しようとしましたが、役に立ちませんでした。IIS メタベース エクスプローラーを使用してこれらのプロパティを編集していますか? プロパティを編集するためのよりクリーンな方法であり、XML ファイルを直接編集するよりも役立つ場合があります。

この問題を回避する 1 つの方法は、どのページでも頻繁に変更されないリソースの HTTP 応答に Cache-Control ヘッダーを挿入することです。私の場合、css (これを最適化するために可能な限り外部 css を使用します)、js、および img ファイルをキャッシュしました。私たちのホームページにロードされるこれらのタイプのファイルが約 60 あるので、約 120 の 401 エラーをすぐに排除することができました!

ファイルがキャッシュされている場合でも 401 と 304 が引き続き生成される if-modified または e-tag ベースのキャッシングではなく、Cache-Control ヘッダーを使用していることを確認してください。

于 2009-08-06T14:28:44.633 に答える
0

私もこの問題を抱えていましたが、私にとっては、これを引き起こしたのは主に JS および CSS ファイルでした。私のサイト (ほとんどのサイトと同様) は、独自のディレクトリに JS および CSS ファイルを保持しています。したがって、私にとっての解決策は、IIS のこれらのディレクトリに移動して、Anon Auth を有効にすることでした (簡単に言いますが、これを解決するのに 2 年以上かかりました。この投稿のおかげです)。現在、サイトには引き続き Windows 認証が必要ですが、JS および CSS ファイルのサブディレクトリは必要ありません。IOW、それは完全に機能しているようです。

また、機密情報をJSファイル(またはCSSファイル)に入れることは決してありません。そうしないことをお勧めします。その場合、これらのファイル内の機密情報をこれらのディレクトリから移動したくなることは明らかです。

于 2017-08-11T20:27:47.537 に答える