DetailPage-MSS-KB

기술 자료

기술 자료: 315736 - 마지막 검토: 2007년 12월 4일 화요일 - 수정: 3.8

이 문서는 이전에 다음 ID로 출판되었음: KR315736

이 페이지에서

요약

ASP.NET을 Microsoft Internet Information Services(IIS)와 함께 사용하면 Microsoft Windows 2000 또는 Windows Server 2003 사용자 계정 자격 증명을 기반으로 웹 사용자를 인증할 수 있습니다. 또한 웹 사용자를 가장하거나, 데이터베이스나 파일 같은 리소스에 액세스할 때 고유 Windows ID를 사용하도록 ASP.NET 실행 엔진을 구성할 수 있습니다.


요구 사항

이 문서에서 설명하는 절차를 수행하려면 다음과 같은 하드웨어, 소프트웨어 및 네트워크 인프라가 필요합니다.
  • Windows 2000 Server 서비스 팩 2
  • IIS 5.0
  • IIS 6.0이 설치된 Windows Server 2003
  • Microsoft Internet Explorer 6.0
  • Microsoft Visual Studio .NET
또한 다음과 같은 경험도 필요합니다.
  • Visual Basic .NET을 사용한 ASP.NET 개발
  • IIS 관리
  • Windows 2000 사용자 계정 관리

웹 사이트를 개발하는 방법

이 절차에서는 Windows 인증을 사용하여 보안하는 간단한 ASP.NET 웹 응용 프로그램을 만들어 봅니다.
  1. Visual Studio .NET을 시작하고 "WindowsSite"라는 이름의 새 Visual Basic ASP.NET 웹 응용 프로그램을 만듭니다.
  2. 도구 상자에서 레이블 컨트롤을 WebForm1.aspx 웹 폼으로 끌어다 놓고, ID 속성을 authUserPrincipalLabel로 설정합니다.
  3. 도구 상자에서 두 번째 레이블 컨트롤을 WebForm1.aspx 웹 폼으로 끌어다 놓고, ID 속성을 aspPrincipalLabel로 설정합니다.
  4. WebForm1.aspx를 두 번 눌러 코드 창을 표시한 후 아래에 보이는 Imports 문을 클래스 선언 앞에 추가합니다.
    Imports System.Security
    						
    아래 코드를 Page_Load 이벤트 프로시저에 추가합니다.
    Dim authUserName As String
    Dim aspUserName As String
    authUserName = User.Identity.Name
    aspUserName = Principal.WindowsIdentity.GetCurrent.Name
    authUserPrincipalLabel.Text = "You are: " & authUserName
    aspPrincipalLabel.Text = "This page runs as: " & aspUserName
    					
  5. 프로젝트의 Web.config 파일을 열고 authentication 요소를 찾습니다. 모드 특성이 Windows 값을 갖고 있는지 확인합니다.
  6. 프로젝트를 빌드하고 저장합니다.
  7. 프로젝트를 실행한 후 페이지에 아래와 같은 메시지가 표시되어 있는지 확인합니다.
    • Windows 2000의 경우
      You are:
      This page runs as: DomainOrServer\ASPNET
    • Windows Server 2003의 경우
      You are:
      This page runs as: DomainOrServer\NETWORK SERVICE
    참고 IIS에서 인증 받지 못했으므로 사용자 이름이 표시되지 않으며, 익명 액세스가 여전히 가능합니다.
  8. Internet Explorer를 종료하여 프로젝트를 중지합니다.

익명 액세스를 해제하는 방법

이 절차에서는 WindowsSite 사이트에 대해 Windows 통합 인증을 요구하도록 IIS를 구성합니다.
  1. Visual Studio를 최소화한 다음 관리 도구 프로그램 그룹에서 인터넷 서비스 관리자를 시작합니다.
  2. 사용 중인 서버와 서버의 기본 웹 사이트를 확장하고 WindowsSite 사이트를 마우스 오른쪽 단추로 누른 다음 등록 정보를 누릅니다.
  3. WindowsSite 등록 정보 대화 상자의 디렉터리 보안 탭에서 "익명 액세스 및 인증 제어" 섹션에 있는 편집 단추를 누릅니다.
  4. 익명 액세스 확인란을 선택 취소하고 Windows 통합 인증 확인란이 선택되어 있는지 확인한 다음 확인을 누릅니다.
  5. 확인을 눌러 WindowsSite 등록 정보 대화 상자를 닫습니다.
  6. Visual Studio로 다시 돌아가서 프로젝트를 실행합니다. 페이지에 아래와 같은 메시지가 표시되는지 확인합니다.
    • Windows 2000의 경우
      You are: 자신의 Windows 사용자 이름
      This page runs as: DomainOrServer\ASPNET
    • Windows Server 2003의 경우
      You are: 자신의 Windows 사용자 이름
      This page runs as: DomainOrServer\NETWORK SERVICE
    참고 Windows 계정을 통해 인증된 것입니다. Windows에 로그온하지 않은 경우에는 Windows 사용자 이름과 암호를 입력하라는 메시지가 표시됩니다.
  7. Internet Explorer를 종료하여 프로젝트를 중지합니다.

권한 부여

ASP.NET에서는 Web.config 파일에서 사용할 수 있는 몇 가지 추가적인 설정을 통해 응용 프로그램에 권한을 부여할 수 있습니다. 특정 사용자나 특정 그룹이 이들 추가 설정에 액세스하도록 허용할 수 있습니다. 아래의 예제는 이러한 기능을 설명합니다. "Managers"라는 Windows NT 그룹에 있는 모든 사용자에게 액세스를 허용하려면 다음 코드를 사용하십시오.
<configuration>
     <system.web>
       <authorization>
         <allow roles="domainname\Managers" />
         <deny users="*" />
       </authorization>
     </system.web>
   </configuration>
				
특정 사용자에게만 액세스를 허용하려면 다음 코드를 사용하십시오.
<configuration>
     <system.web>
       <authorization>
         <allow users="domainname\user1,domainname\user2,domainname\user3" />
         <deny users="*" />
       </authorization>
     </system.web>
   </configuration>
				
참고 쉼표로 구분된 목록을 사용하면 여러 역할 또는 사용자를 참조할 수 있습니다.


가장(Impersonation)을 설정하는 방법

이 절차에서는 WindowsSite 응용 프로그램을 액세스하는 Windows 사용자를 가장하도록 WindowsSite 응용 프로그램을 구성합니다.
  1. Visual Studio에서 WindowsSite 프로젝트에 대한 Web.config 파일을 표시합니다.
  2. 다음 요소를 authentication 요소 뒤에 추가합니다.
    <identity impersonate = "true" />
    					
  3. Web.config를 저장합니다.
  4. 프로젝트를 실행합니다. 페이지에 아래와 같은 메시지가 표시되는지 확인합니다. ASP.NET 실행 엔진이 사용자의 Windows 자격 증명을 사용하여 사용자 대신 리소스에 액세스합니다.
    You are: 자신의 Windows 사용자 이름
    This page runs as: 자신의 Windows 사용자 이름
  5. Internet Explorer를 종료하여 프로젝트를 중지합니다.

사용자 지정 대리 사용자(Principal)를 할당하는 방법

이 절차에서는 사용자 지정 보안 대리 사용자를 사용하도록 WindowsSite를 구성합니다.
  1. 관리 도구 프로그램 그룹에서 컴퓨터 관리를 시작합니다. 사용자 계정 이름은 "WindowsSite"로 지정하고 암호는 "password"로 설정하여 Windows 2000 사용자 계정을 새로 만듭니다. 사용자 서버가 도메인 컨트롤러일 때는 Active Directory 사용자 및 컴퓨터 도구를 사용합니다.
  2. 다음 로그온할 때 반드시 암호 변경 확인란의 선택을 취소합니다. 참고 선택한 사용자 지정 대리 사용자는 다음 기술 자료 문서에서 설명하는 사용 권한을 갖고 있어야 합니다.
    317012  (http://support.microsoft.com/kb/317012/ ) ASP.NET에서 프로세스 및 요청 ID
  3. WindowsSite 계정이 만들어졌으면 관리 도구를 닫습니다.
  4. Visual Studio에서 WindowsSite 프로젝트에 대한 Web.config 파일을 표시합니다.
  5. 다음과 같이 identity 요소를 편집합니다.
    identity impersonate = "true" userName = "DomainOrServerName\WindowsSite"
           password = "password"/>
    DomainOrServerName 자리에는 사용 중인 Windows 2000 또는 Windows Server 2003 도메인 이름(도메인 환경의 경우) 또는 사용자의 컴퓨터 이름(워크그룹 환경의 경우)이 들어갑니다.
  6. Web.config를 저장합니다.
  7. 프로젝트를 실행합니다. 페이지에 아래와 같은 메시지가 표시되는지 확인합니다.
    You are: 자신의 Windows 사용자 이름
    This page runs as: DomainOrServerName\WindowsSite
    참고 Aspnet_wp.exe는 지정한 Windows 자격 증명을 사용하여 사용자 대신 리소스에 액세스합니다.
  8. Internet Explorer를 종료하여 프로젝트를 중지합니다.
참고 스레드에서 특정 사용자를 가장하는 프로세스의 ID는 운영 체제의 일부로 활동 권한을 갖고 있어야 합니다.
  • Windows 2000에서는 기본적으로 Aspnet_wp.exe 프로세스가 ASPNET이라는 이름의 컴퓨터 계정에서 실행됩니다.
  • Windows Server 2003에서는 기본적으로 Aspnet_wp.exe 프로세스가 NetworkService라는 이름의 컴퓨터 계정에서 실행됩니다. 그러나 이 계정은 특정 사용자를 가장하는 데 필요한 권한을 갖고 있지 않습니다. 특정 사용자를 가장하려고 하면 오류 메시지가 나타납니다.
이 문제를 해결하려면 다음 방법 중 하나를 사용하십시오.
  • 운영 체제의 일부로 활동 권한을 ASPNET 계정(최소의 권한이 부여된 계정)에 부여합니다.

    참고 이 방법을 사용하여 문제를 해결할 수 있지만 Microsoft는 이 방법을 권장하지 않습니다.
  • Aspnet_wp.exe 프로세스를 실행하는 계정을 Machine.config 파일의 <processModel> 구성 섹션에서 SYSTEM 계정으로 변경합니다.
ASP.NET 프로세스에 대한 자세한 내용을 보려면 다음 MSDN(Microsoft Developer Network) 웹 사이트를 방문하십시오.
http://msdn.microsoft.com/library/KOR/vsent7/html/vxconApplicationIdentity.asp?frame=true (http://msdn.microsoft.com/library/KOR/vsent7/html/vxconApplicationIdentity.asp?frame=true)

문제 해결

NTFS 파일 사용 권한을 사용하여 ASP.NET 웹 사이트의 Windows 보안을 보다 정교하게 향상 시킬 수 있습니다. Windows 계정에 ASP.NET 웹 페이지를 읽을 수 있는 권한이 없으면 IIS에서 대체 Windows 자격 증명을 입력하라는 내용의 메시지를 표시합니다. 마찬가지로 ASP.NET 페이지가 ASP.NET 실행 엔진에서 사용하는 보안 사용자에게 액세스 권한이 없는 파일에 액세스하려고 하면 대체 자격 증명을 입력하라는 내용의 메시지가 표시됩니다. NTFS 사용 권한을 사용하면 웹 사이트의 하위 섹션에 대한 액세스를 효과적으로 제어할 수 있습니다.

참조

ASP.NET 웹 사이트에서 Windows 인증을 사용하는 방법에 대한 자세한 내용은 .NET Framework 설명서의 ASP.NET 웹 응용 프로그램 "보안" 항목을 참조하십시오.

또한 다음 MSDN 웹 사이트에서 "ASP.NET에서 인증: .NET 보안 지침(영문)" 문서도 참조하십시오.
http://msdn2.microsoft.com/en-us/library/ms978378.aspx (http://msdn2.microsoft.com/en-us/library/ms978378.aspx)




Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹 (http://support.microsoft.com/newsgroups/default.aspx) 에 참여하시기 바랍니다.

본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft ASP.NET 1.0
  • Microsoft Internet Information Services 5.0
  • Microsoft ASP.NET 1.1
  • Microsoft Internet Information Services 6.0
키워드: 
kbconfig kbhowtomaster kbinfo kbsecurity kbweb KB315736
공유
추가 지원 옵션
Microsoft Community 지원 포럼
직접 문의하기
Microsoft Certified Partner 찾기
Microsoft Store