ASP.NET MVC 3ベータ版でイントラネットサイトを作成していますが、Windows認証のみを使用したいと考えています。また、VS2010ではVisualStudio開発サーバーを使用したいと思います。
デフォルトのweb.configファイルを変更して、フォーム認証へのすべての参照を削除し、次のように切り替えました。
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
ただし、サイトを起動してデフォルトページを取得すると、次の応答が返されます。
HTTP/1.1 302 Found
Server: ASP.NET Development Server/10.0.0.0
Date: Tue, 02 Nov 2010 14:05:19 GMT
X-AspNet-Version: 4.0.30319
Location: /Account/Login?ReturnUrl=%2f
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 145
Connection: Close
これは私のブラウザでこのメッセージにつながります:
'/'アプリケーションのサーバーエラー。
リソースが見つかりません。
説明:HTTP404。探しているリソース(またはその依存関係の1つ)が削除されたか、名前が変更されたか、一時的に使用できなくなった可能性があります。次のURLを確認し、スペルが正しいことを確認してください。
要求されたURL:/ Account / Login
バージョン情報:Microsoft .NET Frameworkバージョン:4.0.30319; ASP.NETバージョン:4.0.30319.1バージョン:4.0.30319.1
[Visual Studio Development Serverを使用する]の下のプロジェクトプロパティで[NTLM認証]を選択すると、接続時に次の応答が正しく返されます。
HTTP/1.1 401 Unauthorized Server
ASP.NET Development Server/10.0.0.0
Date: Tue, 02 Nov 2010 14:07:37 GMT
Content-Length: 1211
WWW-Authenticate: NTLM
しかし、認証すると、302を取得します
これはデフォルト値をクリアするだけの問題だと思いますが、よくわかりません( "/ Account / Login"は私のweb.configファイルのどこにも表示されません)。「拒否」の部分を削除すると、認証されたプリンシパルを取得せず、事実上匿名のままになることを除いて、問題なく機能します。
これは、認証モードをWindowsに変更するだけで、ASP.NET MVC 2およびVS2008で機能していたと思いますが、現在はそのようには機能していないようです。
私はおそらく基本的な何かが欠けていることを知っています。ありがとう!
注:この質問は、「 ASP.Net MVCサイトへの匿名アクセスを制限する問題」の質問に似ていますが、Windows認証のみを使用するという点で異なります。