IIS에서 web.config 파일의 대해서
IIS에서 web.config 파일의 대해서
IIS 설정파일인 web.config파일을 알아보겠습니다
IIS web.config?
web.config 란?
기존 ASP 환경에서는 IIS의 메타데이터에 웹 응용 프로그램의 각종 설정 데이터 보관했습니다
그라나 ASP.NET 환경에서는 새롭게 web.config 라는 이름의 파일에 웹 응용 프로그램 별로 각기 다른 설정을 적용할 수 있습니다
web.config 파일은 개별적인 웹 응용 프로그램의 루트경로에 위치하며 각각의 웹 응용 프로그램 별로 각기 다른 설정을 적용할 수 있습니다
web.config 파일은 필수적으로 존재하는 파일이 아니며 web.config 파일이 존재없을 시에는machine.config 파일의 설정을 상속 받습니다
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>
위의 내용은 web.config 파일에서 사용되는 웹 응용프로그램 설정섹션이며 하나씩 차근 차근 알아보겠습니다
web.config 설정 섹션
최상위 루트 노드인<cofniguration>노드로부터 출발하여 <location>이라는 노드를 가집니다
<location>노드는 자신의 하위 노드를 통해 설정된 설정 데이터를 적용할 특정 파일경로를 지정할 수 있으며 생략도 가능합니다
<location>노드의 자식노드로는 <system.web>섹션과 <appSetting>섹션이 올수 있습니다
<system.web>섹션에는 지정된 다양한 ASP.NET 웹 응용프로그램 설정 데이터를 지정할 수 있는 여러 노드와 특성들이 존재하며 <appSettings>섹션은 개발자가 임의의 설정 데이터를 지정할 수 있는 섹션입니다
<location> 섹션
<location> 섹션은 생략이 가능하며 섹션으로 자신의 하위 섹션들을 통해 설정된 설정 정보가 적용될 특정 페이지를 지정하기 위해 사용됩니다
[location 기본 형식]
<location path="path" allowOverride="true | false"> </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 | Formes | Passport | None">
</authentication>
<authentication> 웹 응용 프로그램에 사용할 사용자 인증방식 지정 형식
특성 |
값 |
특성 |
mode |
Windows |
윈도우 인증 모드를 이용하여 사용자 인증을 시도합니다 |
Foms |
ASP.NET 폼 기반 인증 방식을 사용하여 사용자 인증을 시도합니다 |
|
Passport |
마이크로 소프트의 Passport 인증 방식을 이용하여 사용자 인증을 시도합니다 |
|
None |
인증을 사용하지 않습니다. 이 경우 기존의 ASP와 마찬가지로 사용자 인증을 개발자가 직접 구현해야 됩니다 |
<Forms> 하위섹션
<authentication> 섹션의 mode 특성이 Foms 모드로 지정되어 ASP.NET 폼기반 인증 방식이 지정되었을 경우 <foms> 하위 섹션을 통해 보다 세밀한 제어가 가능합니다
<foms>섹션 사용방법
<forms name="form_name">
login_url="url"
protection="All | None | Encryiping | Validation"
timeout="30"
path="/"
requireSSL="true | false"
slidingExpiration="true | false">
<credentials passwordFomat="clean | SHA1 | MD5">
<user name="user_name" password="password"></user>
</credentials>
</foms>
<forms>섹션 특성
특성 |
값 |
설명 |
name |
사용자 인증에 사용할 쿠키 이름을 지정하며 지정하지 않을 경우 기본 값은 .ASPXAUTH가 사용 됩니다 |
|
loginUrl |
사용자 인증 쿠키가 발견되지 않을 때 로그인 요청을 위해 이동할 파일의 URL입니다 (로그인 페이지 URL) |
|
PROTECTION |
ALL |
사용자 인증 쿠키를 암호화 및 데이터 유효성 검사를 사용하여 보호합니다 |
Nome |
사용자 인증 쿠키를 암호화 및 데이터 유효성 검사를 사용하여 보호합니다 |
|
Encrypion |
사용자 인증 쿠키를 암호화하여 보호합니다 |
|
Validation |
사용자 인증 쿠키에 대해 데이터 유효성 검사를 사용합니다 |
|
timeout |
지정된 시간이 지난 후에 쿠키를 만료시키기 위한 시간을 지정한다 단위는 분 단위이며 기본값은 30분 입니다 |
|
path |
웹 응용 프로그램에서 발급한 쿠키의 경로를 지정하며 기본 값은 슬래쉬(/)입니다 |
|
requireSSL |
true |
사용자 인즈에 SSL 보안을 적용하도록 지정합니다 |
false | 사용자 인증에 SSL 보안을 적용하지 않습니다 | |
slidingExpiration | true | 쿠키에 대해 슬라이딩 만료를 사용합니다 슬라이딩 만료란 쿠키의 만료 시간이 사용자의 요청이 발생하는 동안 계속해서 수정되는 방법입니다 예로 오전 9시 정각에 생성된 쿠키를 30분 후에 만료 시키기로 하였을때 사용자가 9시 5분에 웹 사이트에 요청을 보내면 쿠키의 만료시간이 9시 35분으로 변경됩니다 |
false |
슬라이딩 만료을 사용하지않으며, 지정되어 있는시간에 쿠기가 만료됩니다 |
<credentials> 하위 섹션
<forms> 섹션은 <credentials>라는 하위 섹션을 가질 수 있습니다. 이 섹션은 특정 사용자의 ID와 비밀 번호를 정의하기 위한 섹션입니다
<credentials>섹션 형식
특성 |
값 |
설명 |
password Format |
Clear |
비밀번호가 암호화되지 않습니다 |
MD5 |
비밀번호가 MD5 알고리즘을 이용하여 암호화 됩니다 |
|
SHA1 |
비밀번호가 SHA1 알고리즘을 이용하여 암호화 됩니다 |
<user> 하위섹션
<credentials> 섹션은 <user>라는 하위 섹션을 이용하여 사용자의 ID와 비밀번호를 지정할 수 있습니다
<user>섹션 특성
특성 |
설명 |
name |
사용자의 로그인 이름입니다 |
password | 사용자의 로그인 비밀번호입니다 |
<authentication>섹션은 mode 특성 값을 Passport로 지정하면 마이크로소프트의 SSO(Single Sign On) 솔루션인 Passport를 이용하여 웹 응용 프로그램에 로그인 할 수 있게됩니다
<passport> 하위 섹션
Passport 인증 모드를 사용할 경우 <forms>섹션 대신 <passport>섹션을 사용할 수 있으며 다음과 같은 특성을 가집니다
특성 |
설명 |
redirectUrl |
사용자가 Passport 인증을 거치지 않은 경우 이동할 페이지의 URL입니다 |
아래의 섹션 구성은 웹 응용 프로그램에 Forms 인증 모드를 적용하고 1명의 사용자에 대해 로그인 자격을 암호화하여 지정합니다
<configuration>
<system.web>
<authetication mode="Forms">
<forms name="form1" loginUrl="/Login.aspx">
<credentials passwordFormat="MD5">
<user name="admin"
password="admin_password">
</user>
</credentials>
</authetication>
</system.web>
</configuration>
참조 : http://hotdogya.tistory.com/23