IIS 7.5で動作するWindows認証の取得に問題があります。アプリケーションはasp.net MVC 3で構築された内部サイトです。アプリケーションプールは特定のドメインユーザーとサイトを使用していますWindows認証を使用しています。サイトを起動しようとするたびにIEがログインを要求します。
十分にキャンセルすると、サイトが表示されてめちゃくちゃになりますが、ウィンドウログインに関連付けられた名前が上部に表示されます。そのため、サイトがWindows資格情報を正しく取得していることがわかります。
ネットワークローカルユーザーを追加して、サーバーのinetpubフォルダーへの読み取りアクセス権を付与しましたが、IE 8.でログインを要求しません。ただし、chrome =「エラー338(net :: ERR_INVALID_AUTH_CREDENTIALS):不明なエラー」というエラーが表示されます。
イントラネットサイトゾーンにあります。私はこれを述べるべきでしたが、私は忘れていました。以前は開発用の古いサーバーで動作していましたが、IIS 7.5でWin 2008 R2にアップグレードすると動作しなくなりました。2003年にはIIS 6.0。
私が他に何を試してみることができるのか誰にもわからないのだろうか。私はこの時点でほとんど車輪を回転させています。
以下のリンクのすべての解決策を試しましたが、いずれも問題を解決していません
http://forums.iis.net/t/1177154.aspx
http://forums.iis.net/t/1178188.aspx
http://warnajith.blogspot.com/2011/06/iis-75-401-unauthorized-access-error.html
これに対する答えを見つけました。これは、GUIでマップされない構成設定です。 <%SystemDrive%>/Windows/System32/inetsrv/configにあるアプリケーションホスト構成ファイルに移動して、以下の設定を変更する必要がありました。
デフォルト設定
<windowsAuthentication enabled="true"> <providers> <add value="Negotiate" /> </providers> </windowsAuthentication>
これに変更し、機能しました。
<windowsAuthentication enabled="true" useKernelMode="true" useAppPoolCredentials="true"> <providers> <add value="NTLM" /> </providers> </windowsAuthentication>
関連注:ローカルホストでサイトを複製しようとしていて、Windows認証が有効になっているにもかかわらず失敗する場合、解決策はループバックチェックを回避するためのレジストリハッキングです。
Regeditを使用して、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0に移動します。MSV1_0に新しい複数文字列値を追加し、BackConnectionHostNamesという名前を付けます。使用するホスト名を追加します。例、「mysite.com」。 IISを再起動します。
値は、WindowsホストファイルのWebサイト名である必要があります。
また、PHPのfile_get_contentsを使用して認証されていない/ dataフォルダーにアクセスできるようにするには、401エラーを防ぐためにこれをapplicationHost.configファイルに追加する必要がありました。
<location path="mysite.com/data">
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="true" />
<windowsAuthentication enabled="false" />
</authentication>
</security>
</system.webServer>
</location>
統合された資格情報がIEによって渡されるためには、サイトがイントラネットサイトゾーンにある必要があります。信頼できるサイトや他のサイトには配置できません。
同様の問題が発生し、ユーザーグループ(MYDOMAIN\Users)を読み取り権限を持つアプリケーションの物理フォルダーに追加することで修正されました。
roryの説明に従ってプロバイダーのKerberosの上にNTLMを移動するか、DNSを変更することによってのみ解決される同様の問題があります。この問題は、WebサイトのHostヘッダーがDNSにCNAME(エイリアス)として存在する場合にのみIIS7で発生します。 IIS6では、統合Windows認証はデフォルトでNTLMのみを使用します。 IIS7では、IWSはデフォルトでNTLMの前にKerberosを使用します。 CNAMEレコードをAレコードに置き換えると、問題が解決します。 KerberosはDNSのAレコードには問題ありませんが、エイリアスには問題があります。
したがって、DNS CNAMEはWindows 2008のKerberosと互換性がないようです。
クリス
ブラウザが資格情報の入力を求めた場合、アプリプールの資格情報はページ上のリソースの一部にアクセスできないと思います。空のHTMLページを作成して、そのページにアクセスしようとしましたか?
<html>
<body>
hello world!
</body>
</html>
同様の問題があります。
既定のWebサイトの下に、既にWindows認証が有効になっているアプリケーションがありましたが、機能しませんでした。デフォルトWebサイトで匿名認証を無効にし、デフォルトWebサイトでWindows認証を有効にすることも解決しました。