Request.ServerVariables("LOGON_USER")는 ASP.NET 빈 문자열을 반환합니다.

이 문서에서는 변수가 ASP.NET 빈 문자열을 Request.ServerVariables("LOGON_USER") 반환하는 문제에 대한 해결을 제공합니다.

원래 제품 버전: ASP.NET
원본 KB 번호: 306359

증상

ASP.NET 변수에 Request.ServerVariables("LOGON_USER") 액세스하려고 하면 빈 문자열이 반환됩니다.

Microsoft Visual C# .NET을 사용하는 경우 다음 구문이 이 변수에 액세스합니다.

Request.ServerVariables["LOGON_USER"]

원인

이 문제는 익명 액세스 보안을 사용하여 .aspx 페이지에 액세스하는 경우 컬렉션의 ServerVariables 인증 관련 변수가 채워지지 않기 때문에 발생합니다. 이 문제는 web.config 파일의 섹션에서 익명 사용자에게 액세스 권한을 <authorization> 부여하는 경우에도 발생할 수 있습니다.

해결 방법

이외의 인증 모드를 LOGON_USER 사용할 때 변수를 채우기 위해 web.config 파일의 섹션에서 익명 사용자에 <authorization> 대한 액세스를 거부할 수 있습니다.None 섹션에서 익명 사용자에 <authorization> 대한 액세스를 거부하려면 다음 단계를 수행합니다.

  1. web.config 파일의 인증 모드를 이외의 None항목으로 변경합니다. 예를 들어 web.config 파일의 다음 항목은 인증 모드를 Forms 기반 인증으로 설정합니다.

    <authentication mode="Forms" />
    
  2. web.config 파일에서 익명 사용자에 대한 액세스를 거부하려면 다음 구문을 사용합니다.

    <authorization>
        <deny users = "?" /> <!-- This denies access to the anonymous user -->
        <allow users ="*" /> <!-- This allows access to all users -->
    </authorization>
    

Windows 인증 사용하는 경우 다음 단계를 사용하여 이 문제를 resolve 수 있습니다.

  1. web.config 파일의 인증 모드를 Windows 다음과 같이 변경합니다.

    <authentication mode="Windows" />
    
  2. Internet Services Manager에서 .aspx 파일 또는 웹 프로젝트 폴더를 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다.

  3. 웹 프로젝트 폴더에 대한 속성을 선택하는 경우 디렉터리 보안 탭을 선택합니다. .aspx 파일에 대한 속성을 선택하는 경우 파일 보안 탭을 선택합니다.

  4. 익명 액세스 및 인증 제어에서 편집을 선택합니다.

  5. 인증 방법 대화 상자에서 익명 액세스 검사 상자의 선택을 취소한 다음 기본, 다이제스트 또는 통합(NT 챌린지/응답) 검사 상자를 선택합니다.

  6. 확인을 선택하여 두 대화 상자를 모두 닫습니다.

상태

이것은 의도적으로 설계된 동작입니다.

추가 정보

ASP.NET .config 파일에서 구성할 수 있는 새로운 인증 모드 및 권한 부여 체계를 제공합니다. 이러한 이유로 IIS에서만 인증 모드를 수정해도 항상 원하는 결과가 생성되는 것은 아닙니다. 따라서 .config 파일의 보안 설정도 고려해야 합니다.

참고

Windows 인증 함께 익명 인증을 사용하도록 설정하거나 이외의 인증 모드None를 사용하는 동안 섹션에서 익명 사용자에 <authorization> 대한 액세스 권한을 부여하는 경우 및 REMOTE_USER 같은 AUTH_USER 다른 서버 변수(및 HttpContext.Current.User.Identity.Name 속성)도 빈 문자열을 반환합니다. 위에서 언급한 해결 방법을 사용하여 이러한 변수를 채울 수 있습니다.

ASP.NET 개체의 Request 속성을 사용하여 IsAuthenticated 익명 액세스 보안이 사용되고 있는지 여부를 확인할 수도 있습니다. IsAuthenticated익명 액세스가 켜져 있으면 false를 반환하고 , , PassportIntegrated (NT Challenge/Response)또는 Basic와 같은 Forms다른 인증 수단을 사용하는 경우 true를 반환합니다.

참조