Windows 2008サーバーのIIS 7に.NET MVC 3アプリケーションがデプロイされています(これをPRODと呼びます)。アプリケーションで匿名およびWindows認証が有効になっている-他のすべてが無効になっている。 applicationHost.configで指定された認証プロバイダーは、この順序でNegotiateとNTLMです。
最近、このアプリで認証の問題が発生し始めています。 [統合Windows認証を有効にする]オプションをオンにしてIEで接続しているユーザー(サーバーとは異なるドメインにいるユーザー)は、「承認されていません。HTTPエラー401。要求されたリソースにはユーザー認証が必要です。」有効な資格情報を提供しているにもかかわらず、メッセージが表示されます。 Firefoxからアプリケーションにアクセスする場合、問題は発生しません。また、[統合Windows認証を有効にする]をオフにしてIEを使用すると、すべてが正常に動作します。
私がインターネットで同様の問題について読んだことから、Kerberosが適切に構成されていないという問題があることがわかりました。 NTLM認証は問題なく機能することがわかりました。 SPNを確認しましたが、SPNは正しく構成されているようです(アプリケーションにサーバーのnetBios名でアクセスしているため、デフォルトの構成があります)。
おもしろいのは、まったく同じアプリをホストし、まったく同じドメインにあり、同じ認証と認証プロバイダーの構成とアプリケーションプールが同じアカウントで実行され、認証が正しく機能する別のサーバー(DEVと呼ぶ)があることです。大丈夫。唯一の違いは、PRODに最近.NET 4がインストールされたことですが、これが問題になることはないと思います。また、PRODはこのアプリケーションをIISの次の仮想ディレクトリにホストします。Sites/ XYZ/XYZにより、http://server:8666/XYZ
でサイトにアクセスできます。 DEV上のアプリケーションは、Sites/XYZのIISに直接ホストされ、URL http://server2:8666
によってアクセスされます。
他に何を確認できるか教えていただけませんか? Kerberosロギングをオンにしてみましたが、アプリケーションにアクセスしようとした後、イベントビューアにログが見つかりませんでした。どこを見るべきか、何をチェックすべきか、他に考えはありません。
まず、これがクライアントから発生していることを確認しますIEは、サイトが信頼済みサイトゾーンにあり、信頼済みサイトゾーンが「現在のユーザー名とパスワードによる自動ログオン」に設定されていることを示しています」
次に、http認証ヘッダーのサイズがIIS制限を超える可能性があると思われます。統合されたKerberos認証は、IIS実際には制限があるため、この問題の影響を受けますかなり低く、多くのグループメンバーシップが制限を超えてトークンを膨らませる必要はありません。
すべてのリクエストで、http認証ヘッダーにユーザーのKerberosトークンが含まれます。トークンはエンコードされているため、実際に使用されるメモリよりもはるかに大きいことがよくあります。
次のドキュメントを使用して値を増やすことができます。
WindowsのHttp.sysレジストリ設定
http://support.Microsoft.com/kb/820129
次の値を使用します。
MaxRequestBytes-1048576に設定
MaxFieldLength-65534に設定
別の便利なユーティリティDelegConfig。これをアプリケーションとして任意のWebサイトにドロップして接続し、Kerberos認証の構成方法に関する便利なレポートを取得できます。これは、被害者のアカウントとしてテストする必要があります(または被害者のドメインで症状が発生している適切に構成されたテストアカウント)。
次のことも確認する必要があります。
インターネットインフォメーションサービスでホストされているWebアプリケーションを構成するときにSPNを使用する方法
http://support.Microsoft.com/kb/92965
具体的には:
「Active Directoryで、アプリケーションにアクセスするユーザーのアカウントが機密で委任できないことのチェックボックスがオフになっていることを確認してください。」
「Kerberosプロセスの一部であるすべてのコンピューターが一貫した名前解決を持ち、Kerberos信頼によって接続されていることを確認します。たとえば、Kerberosプロセスに関与しているコンピューターが同じフォレストにあるか、クロスフォレストの一部であることを確認しますKerberos信頼。」
「トークンサイズがMaxTokenSizeプロパティに設定されている値を超えていないことを確認してください。」 (MaxTokenSizeは65535に設定する必要があります)。
Internet Explorer 6は、Kerberos認証プロトコルを使用して、非標準ポートを使用するWebサイトに接続できません
http://support.Microsoft.com/kb/908209
次の記事にもいくつかの優れたヒントがあります。
特に、NetMonまたはKerbSpyを使用して、クライアントが予期したSPNに接続していることを確認します。