web-dev-qa-db-ja.com

401-サーバー2008 R2で無許可IIS 7.5

サーバー2008にWebアプリケーションを展開していますIIS 7.5ボックス。

リモートからこのエラーが発生します:401 - Unauthorized: Access is denied due to invalid credentials。 (リモート=同じLAN上のデスクトップ)

異なるブラウザを使用して複数のリモートクライアントを試したが、すべて同じ結果になった。 (IE、FF、Chrome)

サーバー自体のデスクトップからアプリケーションを押すと、問題なく動作します。ただし、サーバーデスクトップでFirebugを試したことはありません。私はそれがまだ401ステータスコードを発行しているにもかかわらず、とにかくコンテンツを返していると思います。アップデート#2を参照してください。

アプリケーションは匿名認証を使用しています。

アプリケーションは、MVCフレームワークを使用して.NET 4.0 Asp.Netで記述されています。

静的コンテンツは正常に機能します。例: http://server.com/content/image.jpg

Sysinternals procmonは、リクエストごとに次の2つの結果を返します:FAST IO DISALLOWEDおよびPATH NOT FOUND。

同じサーバーで他の2つのMVCアプリが正常に動作しています。フォルダのセキュリティを確認しましたが、すべて一致しています。

アプリはサーバー2008で正常に動作しますIIS 7.0ボックス。

これに関連するサーバーのイベントログには何も表示されません。

私の髪をここから引き出します、トラブルシューティングのヒントはありますか?

UPDATE#1:これは、私が掘るにつれて、より多くのWTFを取得します。

IISマネージャ->エラーページ->機能設定の編集]でアプリケーションをクリックすると、Detailed Errors、アプリはリモートで動作します。これをオンにしたままにしないと、問題はまだ解決されず、さらに混乱します。

UPDATE#2:Firebugを使用すると、ステータスが401 Unauthorized、ただしResponseはアプリケーションの正しいHTMLを返しています。

UPDATE#3失敗した要求トレースで遊んでいます。401の原因となっている警告要求トレースは次のとおりです。

ModuleName ManagedPipelineHandler
Notification 128
HttpStatus 401 
HttpReason Unauthorized 
HttpSubStatus 0 
ErrorCode 0 
ConfigExceptionInfo  
Notification EXECUTE_REQUEST_HANDLER 
ErrorCode The operation completed successfully. (0x0)

アップデート#4レギュラーIISログはこれを示しています:

#Software: Microsoft Internet Information Services 7.5
#Version: 1.0
#Date: 2010-07-20 19:17:22
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status time-taken
2010-07-20 19:17:22 10.10.1.10 GET /Purchasing/Home - 80 - 10.10.1.12 Mozilla/5.0+(Windows;+U;+Windows+NT+6.1;+en-US;+rv:1.9.2.6)+Gecko/20100625+Firefox/3.6.6 401 0 0 4414
20
mxmissile

時々一歩戻る必要があります...これの原因は、_[Authorize]_属性でマークされたアクションメソッドを呼び出すHtml.RenderAction()が私のビューにあったことです。

19
mxmissile

ローカルでは機能しますがリモートでは機能しないため、匿名ユーザーアカウントは何かにアクセスできないようですが、Windowsユーザーはアクセスできるようです。これを証明するには、WebサイトのWindows認証をオフにして、ローカルで破損するかどうかを確認します。

破損しているものは、アプリプールIDではなくWebサイトIDとして実行されている可能性があります。そうでない場合、ローカルおよびリモートで破損します。サイトとアプリプールのマッピングが1対1である場合、または信頼性の高い環境がある場合、アプリプールIDを使用するように匿名ユーザーアカウントを設定することをお勧めします。そうすれば、2人目のユーザーが保守することを心配する必要はありません。

プロセスエクスプローラについて説明しました。これは実行中の情報を見つけるのに適していますが、アクセス拒否エラーを発見する可能性が高いツールは(同じくsysinternalsから)processmonです。試して、再現してキャプチャしてから、「拒否されました」という単語を検索してください。ディスク上でアクセス拒否の問題が発生するはずです。

4

何らかの理由でこれで問題が解決しました。

  1. IISのサイトをクリックします。
  2. ダブルクリック認証
  3. 右クリックして詳細設定を選択
  4. 「カーネルモード認証を有効にする」の選択を解除します
4
CTom

AuthorizeAttributeから継承するカスタム認証のフィルターと、OnAuthorization methodへの1つ以上の呼び出しがあり、そのうちの1つがAuthorizationContext.Resultを `HttpUnauthorizedResultに設定する場合も、これと同じ動作になります。 」

4
Elfdragore

認可ルールの設定を確認しましたか?誰かがこのページにアクセスできる場合(これが目標のようです)、ユーザー列に「すべてのユーザー」がある「許可」ルールがあることを確認してください。

次に、「認証」で競合がないことを確認し、匿名認証のみを有効にします。

お役に立てば幸いです。

2
Campo