본문 바로가기
programming/ASP.NET

web.config 파일 고찰

by hotdogya 2011. 3. 18.


web.config 파일 고찰

기존의 ASP 환경에서는 IIS의 메타데이터에 웹 응용 프로그램의 각종 설정 데이터를 보관했었습니다. 그러나 ASP.NET 환경에서는 이 방식에서 탈피하여 새롭게 Web.config라는 이름의 파일에 웹 응용 프로그램의 설정 정보를 저장하고 있습니다.

Web.config 파일은 개별적인 웹 응용 프로그램의 루트 폴더에 위치하며 따라서 각각의 웹 응용 프로그램 별로 각기 다른 설정을 적용할 수 있습니다. 또는 웹 응용 프로그램을 구성하는 하위 폴더에 위치하여 각 폴더별로 다른 설정을 적용할 수도 있습니다.

Web.config 파일은 필수적으로 존재해야 하는 파일은 아니며 Web.config 파일이 존재하지 않는 웹 응용 프로그램은 $windows_folder$\Microsoft.NET\Framework\v1.1.4322\CONFIG 폴더에 존재하는 machine.config 파일의 설정을 상속받습니다.

여기서 $windows_folder$는 윈도 운영체제를 설치한 폴더가 되며 윈도 9x나 윈도 XP, 윈도 2003의 경우는 C:\Windows 폴더가, 윈도 NT및 2000 계열은 C:\Winnt 폴더가 됩니다.

Web.Config 파일은 XML을 기반으로 구성되어 있기 때문에 개발자는 웹 응용 프로그램에 대한 설정의 변경이 매우 용이해졌으며 또한 설정의 적용 역시 단순히 파일을 복사하는 것으로 끝낼 수 있습니다.

게다가 ASP.NET은 Web.Config 파일의 변경 사항을 자동적으로 감지하여 이를 웹 응용 프로그램의 중단이나 재시작 없이 적절한 시기에 적용시킵니다. 따라서 웹 응용 프로그램의 지속성을 향상시켰을 뿐 아니라 HTTP 프로토콜을 통한 웹 브라우저의 접근을 원천적으로 차단하고 있어 보안성 또한 높아졌습니다.

Web.config 파일에서 사용되는 웹 응용 프로그램 설정 섹션은 다음과 같습니다.

<configuration>
<location>
<system.web>
<authentication></authentication>
<authorization></authorization>
<browserCaps></browserCaps>
<clientTarget></clientTarget>
<compilation></compilation>
<customErrors></customErrors>
<globalization></globalization>
<httpHandlers></httpHandlers>
<httpRuntime></httpRuntime>
<identity>
<machineKey>
<pages>
<processModel>
<securityPolicy>
<sessionState>
<trace>
<trust>
<webServices></webServices>
</system.web>
<appSettings></appSettings>
</location>
</configuration>

보시는 바와 같이 최상위 루트 노드인 <configuration>노드로부터 출발하여 <location>이라는 노드를 가집니다. 이 <location>노드는 자신의 하위 노드를 통해 설정된 설정 데이터를 적용할 특정 파일 경로를 지정할 수 있으며 생략될 수도 있습니다.

<location>노드의 자식 노드로는 <system.web>섹션과 <appSettings>섹션이 올 수 있습니다. <system.web>섹션에는 지정된 다양한 ASP.NET 웹 응용 프로그램 설정 데이터를 지정할 수 있는 여러 노드와 특성들이 존재하며 <appSettings>섹션은 개발자가 임의의 설정 데이터를 지정할 수 있는 섹션입니다.

이제 이 섹션들을 하나씩 살펴보도록 하겠습니다.

<location>섹션


<location> 섹션은 생략될 수 있는 섹션으로 자신의 하위 섹션들을 통해 설정된 설정 정보가 적용될 특정 페이지를 지정하기 위해 사용됩니다. 이 섹션의 형식은 다음과 같습니다.

<location
path=”path”
allowOverride=”true | false”>
</location>

<location> 섹션에 지정될 수 있는 두 개의 특성은 다음과 같습니다.

특성

<?xml:namespace prefix = o />

설명

path

URL 문자열

하위 섹션에 지정된 설정 정보가 적용될 파일의 경로입니다.

allowOverride

true

하위 폴더에 존재하는 Web.config 파일의 설정 데이터가 현재 설정을 덮어씁니다.

false

하위 폴더에 존재하는 Web.config 파일의 설정 데이터가 현재 설정을 덮어쓰지 않습니다.

다음 섹션 구성은 <system.web> 섹션의 모든 설정이 Default.aspx 페이지에만 적용되도록 합니다.

<configuration>
<location path=”Default.aspx”>
<system.web>

</system.web>
</configuration>

<system.web> 섹션


이 섹션은 ASP.NET 웹 응용 프로그램의 설정 데이터를 구성하기 위한 루트 노드입니다. 지금부터 이 섹션의 하위 섹션들에서 설정할 수 있는 항목들을 살펴보도록 하겠습니다.

<authentication> 섹션


이 섹션은 ASP.NET 웹 응용 프로그램의 인증 모드를 지정하기 위한 섹션입니다. 이 섹션은 웹 응용 프로그램 또는 서버 시스템 레벨에서만 설정할 수 있으며 웹 응용 프로그램을 구성하는 하위 폴더에서 지정하려 하면 파서 오류가 발생합니다. 이 섹션의 형식은 다음과 같습니다.

<authentication mode=”Windows | Forms | Passport | None”>
</authentication>

이 섹션은 다음 표에 나타난 값에 따라서 웹 응용 프로그램에 사용할 사용자 인증 방식을 지정할 수 있습니다.

특성

설명

mode

Windows

윈도 인증 모드를 이용하여 사용자 인증을 시도합니다.

Forms

ASP.NET 기반 인증 방식을 사용하여 사용자 인증을 시도합니다.

Passport

마이크로소프트의 Passport 인증 방식을 이용하여 사용자 인증을 시도합니다.

None

인증을 사용하지 않습니다. 경우 기존의 ASP 마찬가지로 사용자 인증을 개발자가 직접 구현해야 합니다.

<forms> 하위 섹션


<authentication> 섹션의 mode 특성이 Forms 모드로 지정되어 ASP.NET 폼 기반 인증 방식이 지정되었을 경우 <forms> 하위 섹션을 통해 보다 세밀한 제어가 가능합니다. <forms> 섹션에 사용되는 하위 섹션은 다음과 같습니다.

<forms name=”form_name”
login_url=”url”
protection=”All | None | Encryption | Validation”
timeout=”30”
path=”/”
requireSSL=”true | false”
slidingExpiration=”true | false”>
<credentials passwordFormat=”clean | SHA1 | MD5”>
<user name=”user_name” password=”password”></user>
</credentials>
</forms>

<forms> 섹션에서 사용되는 특성들은 다음 표와 같습니다.

특성

설명

name

사용자 인증에 사용할 쿠키 이름을 지정하여 지정하지 않을 경우 기본 값은 .ASPXAUTH 사용됩니다.

loginUrl

사용자 인증 쿠키가 발견되지 않을 로그인 요청을 위해 이동할 파일의 URL입니다. 쉽게 말하면 로그인 페이지의 URL 의미합니다.

protection

All

사용자 인증 쿠키를 암호화 데이터 유효성 검사를 사용하여 보호합니다.

None

사용자 인증 쿠키를 보호하지 않습니다.

Encryption

사용자 인증 쿠키를 암호화하여 보호합니다.

Validation

사용자 인증 쿠키에 대해 데이터 유효성 검사를 사용합니다.

timeout

지정된 시간이 지난 후에 쿠키를 만료시키기 위한 시간을 지정합니다. 단위는 단위이며 기본 값은 30 입니다.

path

응용 프로그램에서 발급한 쿠키의 경로를 지정하며 기본 값은 슬래쉬(/)입니다.

requireSSL

true

사용자 인증에 SSL 보안을 적용하도록 지정합니다.

false

사용자 인증에 SSL 보안을 적용하지 않습니다.

slidingExpiration

true

쿠키에 대해 슬라이딩 만료를 사용합니다. 슬라이딩 만료란 쿠키의 만료 시간이 사용자의 요청이 발생하는 동안 계속해서 수정되는 방법입니다. 예를 들어 오전 9 정각에 생성된 쿠키를 30 후에 만료시키기로 했을 사용자가 9 5분에 사이트에 요청을 보내면 쿠키의 만료시간이 9 35분으로 변경됩니다.

false

슬라이딩 만료를 사용하지 않습니다. 따라서 지정된 시간에 쿠키가 만료됩니다.

<credentials> 하위 섹션

<forms> 섹션은 <credentials>라는 하위 섹션을 가질 수 있습니다. 이 섹션은 특정 사용자의 ID와 비밀 번호를 정의하기 위한 섹션으로 다음과 같은 특성을 가질 수 있습니다.

특성

설명

passwordFormat

Clear

비밀번호가 암호화되지 않습니다.

MD5

비밀번호가 MD5 알고리즘을 이용하여 암호화됩니다.

SHA1

비밀번호가 SHA1 알고리즘을 이용하여 암호화됩니다.

<users> 하위 섹션

<credentials> 섹션은 <user>라는 하위 섹션을 이용하여 사용자의 ID와 비밀번호를 지정할 수 있습니다. <user> 섹션에서 사용되는 특성은 다음과 같습니다.

특성

설명

name

사용자의 로그인 이름입니다.

password

사용자의 로그인 비밀번호입니다.

<authentication>섹션의 mode 특성 값을 Passport로 지정하면 마이크로소프트의 SSO (Single Sign On) 솔루션인 Passport를 이용하여 웹 응용 프로그램에 로그인을 할 수 있게 됩니다. Passport는 MSN 메신저 서비스에도 사용되고 있으므로 이미 하나 정도는 Passport ID를 가지고 계실 것입니다.

<passport> 하위 섹션

Passport 인증 모드를 사용할 경우 <forms>섹션 대신 <passport>섹션을 사용할 수 있으며 다음과 같은 특성을 가집니다.

특성

설명

redirectUrl

사용자가 Passport 인증을 거치지 않은 경우 이동할 페이지의 URL입니다.

다음 섹션 구성은 웹 응용 프로그램에 Forms 인증 모드를 적용하고 1명의 사용자에 대해 로그인 자격을 암호화하여 지정합니다.

<configuration>
<system.web>
<authentication mode=”Forms”>
<forms name=”form1” loginUrl=”/Login.aspx”>
<credentials passwordFormat=”MD5”>
<user name=”admin”
password=”admin_password”>
</user>
</credentials>
</authentication>
</system.web>
</configuration>