다음을 통해 공유


ASP.NET 보안 아키텍처

업데이트: 2007년 11월

이 단원에서는 ASP.NET 보안 인프라에 대한 개요를 제공합니다. 다음 그림은 ASP.NET에서 보안 시스템 간의 관계를 보여 줍니다.

ASP.NET 아키텍처

그림에 표시된 대로 모든 웹 클라이언트는 Microsoft 인터넷 정보 서비스(IIS)를 통해 ASP.NET 응용 프로그램과 소통합니다. IIS는 필요한 경우 요청을 인증한 다음 ASP.NET 응용 프로그램과 같은 요청된 리소스를 찾습니다. 클라이언트에 권한이 부여되면 리소스를 사용할 수 있습니다.

ASP.NET 응용 프로그램을 실행 중이면 응용 프로그램에서 기본 제공 ASP.NET 보안 기능을 사용할 수 있습니다. 또한 ASP.NET 응용 프로그램은 .NET Framework의 보안 기능을 사용할 수 있습니다. 자세한 내용은 주요 보안 개념을 참조하십시오.

IIS와 ASP.NET 인증 통합

IIS 인증 기능을 사용하는 것 외에 ASP.NET에서 인증을 수행할 수 있습니다. ASP.NET 인증을 고려하는 경우 IIS 인증 서비스와의 통합을 이해해야 합니다.

IIS에서는 자격 증명 집합이 Microsoft Windows NT 계정에 매핑되며 이러한 자격 증명을 사용하여 사용자를 인증해야 한다고 가정합니다. IIS 5.0 및 IIS 6.0에서는 기본, 다이제스트, Windows 통합 보안(NTLM 또는 Kerberos)이라는 세 가지 다른 형식의 인증을 사용할 수 있습니다. IIS 관리 서비스에서 사용할 인증 형식을 선택할 수 있습니다. IIS 인증에 대한 자세한 내용은 IIS 설명서를 참조하십시오.

사용자가 ASP.NET 응용 프로그램으로 매핑되는 URL을 요청하면 이 요청과 인증 정보가 해당 응용 프로그램으로 전달됩니다. ASP.NET은 폼 인증을 제공합니다. 폼 인증은 인증되지 않은 요청을 사용자가 만든 ASP.NET 웹 페이지로 리디렉션하는 시스템입니다. 사용자는 자격 증명을 제공하고 해당 페이지를 전송합니다. 응용 프로그램에서 이 요청을 인증하면 해당 시스템은 ID를 다시 인식하기 위한 키 또는 자격 증명이 포함된 쿠키에 인증 티켓을 발급합니다. 이후 요청에는 인증 티켓이 포함되어 있습니다.

참고:

ASP.NET 멤버 자격과 ASP.NET Login 컨트롤은 암시적으로 폼 인증 작업을 수행합니다.

ASP.NET 구성 파일 보안 설정

ASP.NET 보안 설정은 Machine.config 및 Web.config 파일에서 구성됩니다. 다른 구성 정보와 마찬가지로 기본 설정은 현재 .NET Framework 설치의 Config 하위 디렉터리에 있는 Machine.config 파일에서 지정됩니다. 웹 사이트 루트 및 응용 프로그램 루트 디렉터리의 Web.config 파일에서 Machine.config 파일의 재정의 설정을 포함하여 사이트별 및 응용 프로그램별 설정을 지정할 수 있습니다. 하위 디렉터리의 Web.config 파일에 의해 재정의되지 않으면 하위 디렉터리는 디렉터리의 설정을 상속합니다. 보안을 위해 계층적 구성 시스템이 작동하는 방식에 대한 예제를 보려면 configSections 요소(일반 설정 스키마)를 참조하십시오.

Web.config 파일에는 authentication, authorizationidentity라는 세 가지 주요 하위 섹션이 있습니다. 각 보안 요소의 값은 일반적으로 Machine.config 파일에서 설정되며 필요에 따라 응용 프로그램 수준 Web.config 파일에서 재정의됩니다. 모든 하위 디렉터리는 자동으로 해당 설정을 상속합니다. 그러나 하위 디렉터리에 상속된 설정을 재정의하는 자체 구성 파일이 있을 수도 있습니다.

참고:

ASP.NET 구성은 IIS에서 Aspnet_isapi.dll 확장에 의해 처리되도록 등록한 ASP.NET 리소스에만 적용됩니다. ASP.NET 구성은 ASP.NET에서 처리하지 않는 리소스에 대해 권한을 부여할 수 없습니다. 따라서 .txt, .htm, .html, .gif, .jpg, .jpeg, .asp 및 기타 파일 형식은 IIS 권한에 따라 모든 사용자가 액세스할 수 있습니다. 예를 들어, Web.config 파일을 통해 디렉터리에 있는 ASP.NET 리소스를 제한하는 경우에도, 디렉터리 검색이 설정되어 있고 다른 제한이 설정되어 있지 않으면 해당 디렉터리에 저장된 파일을 모든 사용자가 볼 수 있습니다. IIS 관리 도구를 사용하여 이러한 파일 이름 확장명을 Aspnet_isapi.dll 확장에 명시적으로 매핑하면 해당 파일 형식에 ASP.NET 보안을 적용할 수 있습니다. 그러나 ASP.NET을 통해 이러한 파일 형식을 처리할 경우 웹 사이트 성능에 영향을 줄 수 있습니다.

location 구성 요소를 사용하여 설정을 적용할 특정 파일이나 디렉터리를 지정할 수 있습니다. 자세한 내용은 configSections 요소(일반 설정 스키마)특정 파일 및 하위 디렉터리 구성을 참조하십시오. 일반적인 ASP.NET 구성에 대한 자세한 내용은 ASP.NET 구성 개요를 참조하십시오.

다음 예제에서는 구성 파일의 보안 섹션 구문을 보여 줍니다.

<authentication mode="[Windows|Forms| None]">
  <forms name="name" 
    loginUrl="url" 
    protection="[All|None|Encryption|Validation]"
    path="path" timeout="minutes"
    requireSSL="[true|false]" 
    slidingExpiration="[true|false]">
    <credentials passwordFormat="[Clear|MD5|SHA1]">
      <user name="********" 
        password="********"/>
      </credentials>
  </forms>
</authentication>

<authorization>
  <allow users="comma-separated list of users"
      roles="comma-separated list of roles" />
  <deny  users="comma-separated list of users"
      roles="comma-separated list of roles" />
</authorization>

<identity impersonate ="[true|false]"
  userName="domain\username"
  password="password" />

<trust level="[Full|High|Medium|Low|Minimal]" 
  originUrl=""/>

<securityPolicy>
  <trustLevel name="Full" policyFile="internal"/>
  <trustLevel name="High" policyFile="web_hightrust.config"/>
  <trustLevel name="Medium" policyFile="web_mediumtrust.config"/>
  <trustLevel name="Low"  policyFile="web_lowtrust.config"/>
  <trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>
</securityPolicy>

다음 표에서는 이 요소의 기본 설정을 표시합니다.

기본값

설명

<allow roles="" />

기본적으로 모든 역할이 허용됨을 나타내는 빈 문자열입니다.

<allow users="*" />

모든 사용자에 액세스가 허용됨을 나타내는 빈 문자열입니다(인증 필요 없음).

<authentication mode="Windows" />

현재 User 값의 소스를 결정하는 인증 형식입니다. 기본값은 Windows입니다.

<credentials passwordFormat="SHA1" />

암호에 사용되는 해시 알고리즘입니다. 기본값은 SHA1입니다.

<deny roles="" />

기본적으로 거부되는 역할이 없음을 나타내는 빈 문자열입니다.

<deny users="" />

기본적으로 거부되는 사용자가 없음을 나타내는 빈 문자열입니다.

<forms loginUrl="logon.aspx" />

인증 mode를 Forms로 설정하고 요청에 유효한 인증 티켓이 없는 경우 요청이 리디렉션되는 URL입니다.

<forms name=".ASPXAUTH" />

폼 인증 쿠키가 사용자 컴퓨터에 저장될 때 사용되는 이름입니다.

<forms path="/" />

폼 인증이 적용되는 경로입니다. 기본값은 응용 프로그램 루트에서 아래로의 모든 경로입니다.

<forms protection="All" />

폼 인증 티켓에 적용되는 보안입니다. 값은 All, None, Encryption 및 Validation이 될 수 있습니다.

<forms timeout="30" />

폼 인증 티켓이 만료되고 사용자가 다시 인증해야 할 때까지의 시간 제한(분)입니다.

<forms requireSSL="false" />

인증 쿠키를 전송하는 데 SSL 연결이 필요한지 여부를 나타내는 부울 값입니다.

<forms slidingExpiration="true" />

상대(sliding) 만료를 사용하는지 여부를 나타내는 부울 값입니다. 자세한 내용은 SlidingExpiration 속성을 참조하십시오.

<identity impersonate="false" />

가장이 해제되는지 여부를 나타내는 부울 값입니다. 자세한 내용은 ASP.NET 가장을 참조하십시오.

<identity userName="" />

기본적으로 지정되는 사용자 ID가 없음을 나타내는 빈 문자열입니다.

<identity password="" />

기본적으로 지정되는 사용자 ID의 암호가 없음을 나타내는 빈 문자열입니다.

<trust level="Full" originUrl="" />

응용 프로그램에 적용할 보안 정책입니다.

<trustLevel name="Full" policyFile="internal"/>

완전 신뢰 수준의 기본 정책 파일입니다.

<trustLevel name="High" policyFile="web_hightrust.config"/>

높음 신뢰 수준의 기본 정책 파일입니다.

<trustLevel name="Medium" policyFile="web_mediumtrust.config"/>

보통 신뢰 수준의 기본 정책 파일입니다.

<trustLevel name="Low" policyFile="web_lowtrust.config"/>

조금 신뢰 수준의 기본 정책 파일입니다.

<trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>

최소 신뢰 수준의 기본 정책 파일입니다.

참고 항목

개념

ASP.NET 구성 개요

기타 리소스

ASP.NET 웹 사이트 보안

주요 보안 개념

폼 인증 공급자