오류 페이지를 허용하지 않는 IIS 및 Windows 인증

오류 페이지를 허용하지 않는 IIS 및 Windows 인증

나는 지난 이틀 동안 이것을 시도해 왔습니다. 문제가 무엇인지 알 수 없습니다. 웹을 검색했지만 해결책을 찾지 못했습니다. "협상을 아래로 이동하고 다른 인증을 비활성화합니다"와 같은 IIS의 모든 설정을 시도했지만 작동하지 않습니다. 그래서 내 문제는 다음과 같습니다. Active Directory에 저장된 사용자 이름과 암호를 사용하는 ASP.NET의 인트라넷 웹 응용 프로그램이 있습니다. 내 신청서에는 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. 웹 서버가 "죄송합니다. 오류 401입니다. 사용자가 인증할 수 있는 방법은 다음과 같습니다."라고 말합니다.
  3. 브라우저가 인증을 분류합니다(예: 사용자에게 자격 증명 요청).
  4. 브라우저가 인증 헤더 정보를 포함하여 두 번째 요청을 합니다.

내 생각에는 사용자가 자격 증명을 제공하기 전에 첫 번째 401을 포착하여 단계 (1)에서 실패하고 있는 것 같습니다. F12 도구나 Fiddler와 같은 도구를 사용하여 이를 확인할 수 있습니다.

답변2

Windows 인증을 사용하는 경우 이 점을 명심해야 합니다. IIS에서 Windows 인증을 수동으로 활성화하는 경우 web.config에 아래 코드를 포함하지 마십시오.

<authentication mode="Windows" />

이것을 사용하면 위의 질문에서 언급한 것과 동일한 문제가 발생합니다.

관련 정보