IIS と Windows 認証でエラー ページが許可されない

IIS と Windows 認証でエラー ページが許可されない

過去 2 日間、これを試してきました。何が問題なのかわかりません。Web を検索しましたが、解決策は見つかりませんでした。IIS のすべての設定 (「ネゴシエートを下に移動、その他の認証を無効にする」など) を試しましたが、機能しません。私の問題は次のとおりです。ASP.NET でイントラネット Web アプリケーションを使用しており、Active Directory に保存されているユーザー名とパスワードを使用しています。アプリケーションには 5 つの異なるページがあります。すべてのページは、web.config ファイルとともに別のフォルダーに保存されています。これらの web.config ファイルには、次のようにそのページを表示できるユーザーの名前が含まれています。

<authorization>
<allow users="Domainname\username"/>
</authorization>

上記のリストに含まれていないユーザーを適切なメッセージを含む他のエラーページにリダイレクトしたい。私はこれを使用しました

protected void Application_EndRequest(object sender, EventArgs e)
{

    if (HttpContext.Current.Response.Status.StartsWith("401"))
    {
        HttpContext.Current.Response.ClearContent();
        Response.Redirect("~/myerrorpage.aspx?myerrormsg=you are not allowed");
    }
}

これはローカルホストでは動作しますが、アプリケーションを IIS に配置すると、承認されたユーザー (リストに含まれているユーザー) もすべてエラー メッセージ ページにリダイレクトされます。

IIS の外部では、正常に動作しています。ただし、権限のないユーザーをエラー メッセージ ページにリダイレクトできません。IIS のエラー ページ設定も試しましたが、同じ問題が発生します。

これを修正するにはどうすればいいか教えてください。他に方法はあるでしょうか?

答え1

これがあなたの特定のケースで問題となるかどうかはわかりませんが、一般的にプロセスは次のとおりです。

  1. ブラウザが接続を試みる匿名初回接続時
  2. Web サーバーは「申し訳ありませんが、それはできません。エラー 401 です。ユーザーを認証する方法は次のとおりです」と表示します。
  3. ブラウザは認証を整理します(たとえば、ユーザーに資格情報を要求する)
  4. ブラウザは認証ヘッダー情報を含めた2番目のリクエストを送信します。

私の推測では、ユーザーが資格情報を入力する前に最初の 401 をキャッチすることで、ステップ (1) で失敗していると思われます。これは、F12 ツールまたは Fiddler などのツールで確認できます。

答え2

Windows認証を使用している場合は、次の点に注意してください。IISでWindows認証を手動で有効にする場合は、web.configに以下のコードを含めないでください。

<authentication mode="Windows" />

これを使用すると、上記の質問で述べたのと同じ問題が発生します。

関連情報