ASP.NET 가장과 함께 IIS 인증 사용
업데이트: 2007년 11월
IIS(인터넷 정보 서비스)에서는 웹 응용 프로그램의 보안을 설정할 때 사용할 수 있는 몇 가지 인증 체계를 제공합니다. 일반적으로 회사 인트라넷에서 Windows 통합 인증(NTLM)을 사용하여 Windows 로그인을 기반으로 응용 프로그램 사용자의 ID를 확인하거나 특정 응용 프로그램에 대한 단일 익명 ID를 지정하는 경우를 예로 들 수 있습니다. 그런 다음 IIS에서 제공한 Windows ID를 사용하면 웹 응용 프로그램에서 보호되는 Windows 리소스(예: ACL(액세스 제어 목록)을 사용하여 보호된 파일)나 네트워크 리소스(예: 파일 또는 데이터베이스 서버)에 액세스할 수 있는지 여부를 확인할 수 있습니다. IIS에서 제공한 Windows ID를 가장을 통해 사용하도록 ASP.NET을 구성할 수 있습니다.
기본적으로 ASP.NET은 IIS에서 제공한 Windows ID를 현재 HttpContext 개체의 User 속성에 적용하는 Windows 인증 모드를 사용하도록 구성됩니다. 이렇게 하면 User 속성(익명 ID가 사용될 경우 사용자 Name이 비어 있음)을 통해 IIS에서 제공한 ID를 확인할 수 있지만 제공된 ID가 현재 페이지의 WindowsIdentity로 사용되지 않습니다. 응용 프로그램의 WindowsIdentity는 이 응용 프로그램에서 특정 파일 또는 네트워크 리소스에 액세스할 수 있는지 여부를 확인하는 데 사용됩니다.
IIS에서 제공한 Windows ID를 ASP.NET 응용 프로그램의 WindowsIdentity로 가장하도록 ASP.NET을 구성하려면 다음 예제와 같이 응용 프로그램의 Web.config 파일을 편집하고 identity 구성 요소의 impersonate 특성을 true로 설정합니다.
<configuration>
<system.web>
<identity impersonate="true" />
</system.web>
</configuration>
가장은 authentication 구성 요소를 사용하여 구성한 인증 mode와 관계가 없습니다. authentication 요소는 현재 HttpContext의 User 속성을 확인하는 데 사용되고 가장은 ASP.NET 응용 프로그램의 WindowsIdentity를 확인하는 데 사용됩니다.
아래에서는 인트라넷 시나리오를 예제로 사용하여 가장을 설정하는 방법을 설명합니다. 이 시나리오에서는 직원 정보를 게시할 사내 웹 사이트를 설정합니다. 그러나, 일부 정보는 관리자용입니다. 이러한 관리자 정보는 직원 정보의 하위 디렉터리에 게시하여 액세스를 제한할 수 있습니다. IIS에서는 Windows 통합(NTLM) 보안을 사용하여 사용자 ID를 확인합니다. 이 시나리오에서는 다음과 같은 조건을 가정합니다.
웹 서버에 Microsoft Windows NT Server, Windows 2000 Server 또는 Windows Server 2003 운영 체제가 설치되어 있습니다.
웹 서버에 IIS 6.0이 설치되어 있습니다.
웹 서버의 하드 디스크는 NTFS로 포맷되었습니다.
제한된 리소스에 액세스해야 하는 직원은 모두 Windows를 사용합니다.
이 시나리오에서 응용 프로그램 관리자는 다음을 수행해야 합니다.
다음 그림에 표시된 파일과 디렉터리를 만듭니다.
ManagerInfo.aspx 파일에 대한 액세스 권한을 가진 모든 사용자를 포함하는 Windows 그룹(Managers)을 만듭니다.
IIS(인터넷 정보 서비스) 관리자를 사용하여 응용 프로그램에 대해 익명 인증을 사용하지 않고 Windows 통합 인증을 사용하도록 설정합니다.
응용 프로그램의 Web.config 파일에서 identity 요소의 impersonate 특성을 true로 설정합니다.
Windows Manager 그룹에 있는 ID 및 필수 시스템 계정에서만 ManagerInformation 디렉터리에 액세스할 수 있도록 이 디렉터리에 대한 NTFS ACL(액세스 제어 목록)을 설정합니다. ASP.NET 프로세스의 ID도 포함해야 합니다. Windows 2000 Server 또는 Windows NT의 ASP.NET 프로세스 ID는 로컬 ASPNET 계정입니다. Windows Server 2003 이상의 ASP.NET 프로세스 ID는 IIS 응용 프로그램 풀의 ID이며 기본적으로 NETWORK SERVICE 계정입니다.
참고: ASP.NET 역할 관리 기능을 사용하여 웹 응용 프로그램의 영역에 대한 액세스를 제한할 수도 있습니다. 자세한 내용은 역할을 사용하여 권한 부여 관리를 참조하십시오.