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>
'programming > ASP.NET' 카테고리의 다른 글
asp.net에서 cs영역에서 alert호출 (0) | 2011.03.18 |
---|---|
Custom Membership Provider 공급자 (0) | 2011.03.18 |
buttonfiled 에서 confirm 사용 (0) | 2010.11.05 |
[펌] [ASP.NET] ASP Login 컨트롤 사용시 엔터키 사용하여 로그인 하기 (0) | 2010.11.03 |
gridview에서 원하는 값으로 변경하여 바인딩 (0) | 2009.08.08 |