뽀로

사용자가 만드는 파일을 이용한 인증

· 19년 전 · 2010
이번 강좌는 웹페이지에 인증을 하는 법을 해보려 한다. 특정 page를 가보면(특히 s*x site) ID와 Passwd를 묻는 창을 본 경험을 한 적이 있을 것이다. 이 창은 cgi나 java가 아닌 apache web server자체의 인증절차와 root의 권한이 없는 사용자가 인증절차를 하는 방법에 의해 인증을 걸치게 되는 방법이다. 먼저 두번째의 root권한이 없는 사용자가 할수 있는 인증절차를 먼저 다루겠다. 이 방법은 .htaccess라는 file과 .htpasswd라는 file로서 인증 절차를 거치게 하는 것이다. 이 방법은 NCSA나 apache등의 web server demon에서 사용가능하며 보안이나 다른 이유로 인하여 httpd의 설정 file중 하나인 srm.conf file에서 AccessFileName을 .htaccess에서 다른 이름으로 바꾼 경우 바구어준 이름을 access file로 사용해야 한다. 또한 access.conf에서 보안을 걸려는 directory에 설정을 해놓았다면 AllowOverride를 None으로 두면 .htaccess file을 인식하지 못한다.

1. .htaccess file

먼저 vi나 pico로 .htaccess라는 file을 만든다. 이 파일은 vi나 pico같은 Unix또는 linux의 editer로 만드는 것이 좋다. script로 읽혀 지는 것이기 때문에 web server에서 Server Error를 유발할 수도 있다. 물론 아무 편집기로 만들어도 상관은 없지만 만약 다른 편집기로 작성을 한다면 Upload시에 꼭 아스키 모드로 올려야만 한다.
이 file에는 AuthUserFile과 AuthType, AuthName의 세가지의 지시자를 지정해야 한다. AuthGroupFile은 선택적이기 때문에 신경을 쓰지 않아도 상관없다.

아래는 .htaccess file의 예이다.

AuthUserFile /home/nude/cgi-bin/.htpasswd
AuthGroupFile /home/nude/cgi-bin/.htgroup
AuthName N.etwork U.sers of D.evelopment & E.ducations
AuthType Basic

<Limit GET POST>
require valid-user
</Limit>

AuthUserFile은 .htpasswd file의 물리적 경로를 써준다. 즉 인증을 하기위한 directory에 .htaccess와 .htpasswd가 있어야 한다는 말이다.


AuthName은 인증 창이 뜰때 그곳에 나타내는 인증 그룹 Name정도라고 생각하면 된다. 주의 할것은 apache 1.3 version부터는

AuthName "N.etwork U.sers of D.evelopment & E.ducations"

의 형식처럼 따옴표를 꼭 붙여 줘야만 한다. 따옴표를 빠뜨리면 Internal server error가 발생을 하게된다.

AuthType은 Server가 사용하는 인증방식을 결정하는데 Basic과 Digest 두개의 option이 있다. Basic은 표준 Unix 암호화 패스워드 체계를 사용하며 AuthUserFile 지시자를 사용한다. Digest는 더 안전한 MD5암호화를 사용하지만 대부분의 브라우져에서 지원을 안하므로 intranet에서나 사용이 된다.

<Limit GET POST> ~ </Limit> 부분에서는 접근 제한을 지정할 수 있다. 위의 예제에 나와 있는 require valid-user는 .htpasswd file에 등록되어 있는 user만 허락한다는 의미이다. 이외에도 telnet 접근을 막을 때 사용하는 hostallow나 hostdeny file과 같은 용도로 사용할 수도 있다. .htpasswd file에 등록된 user중에 210.124.24.*의 IP address나 netusers.net이라는 domain을 사용하는 host에서만 접속을 하게 하려면 아래의 예와 같이 하면 된다.

AuthUserFile /home/nude/cgi-bin/.htpasswd
AuthGroupFile /home/nude/cgi-bin/.htgroup
AuthName "N.etwork U.sers of D.evelopment & E.ducations"
AuthType Basic

<Limit GET POST>
order deny,allow
deny from all
allow from 210.124.24 or netusers.net
require valid-user
</Limit>

여기서 약간 독특하게 id, password 또는 대역폭 접근중 하나만 통과하면 인증을 통과하게 하넌 법을 보겠다. 위의 경우에는 둘다 참이여야 하지만 이 경우는 둘중의 하나만 참이면 인증이 되는 것이다.

여기서 .htaccess에서 사용되는 새로운 지시자가 Satisfy를 설명한다. 이 지시자를 지정안했을 경우 Satisfy의 값은 default로 all 이 된다. 이 것은 위의 경우에 처럼 둘다 참이어야 인증이 되는 것이다. 그럼 둘중에 하나만 참 일경우 인증을 하기 위해서는 Satisfy의 값을 any로 지정을 한다. 그러면 id, password 나 지정된 대역폭에서 접근을 할경우 인증이 가능하게 되는 것이다. 아래의 예를 참 고하라.

Satisfy any
AuthUserFile /home/nude/cgi-bin/.htpasswd
AuthGroupFile /home/nude/cgi-bin/.htgroup
AuthName "N.etwork U.sers of D.evelopment & E.ducations"
AuthType Basic

<Limit GET POST>
order deny,allow
deny from all
allow from 210.124.24 or netusers.net
require valid-user
</Limit>

2. .htpasswd file 만들기

이 file은 /usr/bin/htpasswd 또는 /usr/sbin/htpasswd file을 이용해서 만든다. file의 이름을 .htpasswd로 할 필요는 없으나 만약 다른 이름을 사용한다면 .htaccess file의 AuthUserFile에 지정한 file이름과 동일하게 해 줘야 한다.
vi나 pico로 만든 또는 Upload를 한 내용이 없는 .htpasswd file을 password를 걸 directory에 위치시킨 후 아래의 명령을 실행을 한다.

htpasswd -c .htpasswd oops(User ID)

물론 여러분의 경우에는 root의 권한이 없기 때문에 자신의 directory로 /usr/sbin/htpasswd라는 file을 복사해 와야 한다. 그리고 .htpasswd file을 처음 만드는 것이기 때문에 반드시 -c option을 지정해야 한다.

3. .htpasswd file에 다른 user 추가하기

.htpasswd file에 다른 user의 ID와 password를 추가 하기 위해서는 아래의 명령을 수행한다. 주의 할 것은 한번 만들어진 .htpasswd file에 또 -c option을 주면 새로운 .htpasswd file을 생성하게 된다.

htpasswd .htpasswd toyer(User ID)

4. Error Message

인증시 server error가 나는 경우는 .htaccess file이 잘못 작성된 경우가 많다. vi나 pico가 아닌 다른 edit(Unix나 Linux의 edit가 아닌 것들)를 이용해서 만들어 Upload를 했을 경우 눈에 보이지 않는(vi에서 보면 ^M으로 나타나는) code가 들어가는 경우가 발생하는데 이것이 원인이 될수도 있다. 설치를 했는데 인증이 되지를 않고 해당 페이지가 바로 출력이 되는 경우는 /etc/httpd/conf/srm.conf file 또는 /usr/local/etc/httpd/conf/srm.conf file에서 AccessFileName의 이름이 .htaccess가 아닌 경우 또는 access.conf의 file에서 해당 디렉토리 관련 지정에서 AllowOverride를 None으로 둔 경우 이다.
인증 창이 뜨는데도 passwd가 적용이 안되는 경우에는 .htpasswd file을 다른 위치에 두었거나 .htaccess에서 경로 지정이 잘못 되었을 경우이다.

7. Enterprise Server

.htaccess file이 아니라 .nsconfig file을 사용하며 설정은 아래와 같이 하면 된다. 단 dynamic configuration 에서 디렉토리와 .nsconfig 파일, search 등을 설정을 해줘야 한다. 그렇지 않으면, .nsconfig file만 가지고는 소용이 없다. -박대권님 참조글 ^^

<Files *>
RequireAuth userfile=/home/nude/cgi-bn/.nspasswd realm="N.etwork U.sers of D.evelopment & E.ducations"
</Files><div class='small'>[이 게시물은 관리자님에 의해 2011-10-31 17:32:05 Linux에서 이동 됨]</div>
|
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

태그 필터 (최대 3개) 전체 개발자 소스 기타 mysql 팁자료실 javascript php linux flash 정규표현식 jquery node.js mobile 웹서버 os 프로그램 강좌 썸네일 이미지관련 도로명주소 그누보드5 기획자 견적서 계약서 기획서 마케팅 제안서 seo 통계 서식 통계자료 퍼블리셔 html css 반응형 웹접근성 퍼블리싱 표준화 반응형웹 홈페이지기초 부트스트랩 angularjs 포럼 스크린리더 센스리더 개발자톡 개발자팁 퍼블리셔톡 퍼블리셔팁 기획자톡 기획자팁 프로그램강좌 퍼블리싱강좌
+
제목 글쓴이 날짜 조회
19년 전 조회 1,920
19년 전 조회 1,991
19년 전 조회 3,174
19년 전 조회 2,387
19년 전 조회 3,657
19년 전 조회 2,582
19년 전 조회 1,883
19년 전 조회 2,496
19년 전 조회 1,759
19년 전 조회 1,429
19년 전 조회 1,569
19년 전 조회 1,839
19년 전 조회 1,603
19년 전 조회 1,812
19년 전 조회 1,595
19년 전 조회 1,975
19년 전 조회 1,877
19년 전 조회 1,472
19년 전 조회 1,473
19년 전 조회 1,393
19년 전 조회 1,257
19년 전 조회 1,438
19년 전 조회 2,009
19년 전 조회 2,423
19년 전 조회 2,911
19년 전 조회 2,334
19년 전 조회 1,833
19년 전 조회 7,064
19년 전 조회 3,758
19년 전 조회 2,366
19년 전 조회 2,384
19년 전 조회 2,874
19년 전 조회 5,795
19년 전 조회 5,584
19년 전 조회 2,271
19년 전 조회 3,320
19년 전 조회 2,884
19년 전 조회 2,235
19년 전 조회 2,756
19년 전 조회 1,608
19년 전 조회 1,769
19년 전 조회 1,865
19년 전 조회 2,034
19년 전 조회 1,710
19년 전 조회 1,852
19년 전 조회 1,807
19년 전 조회 1,875
19년 전 조회 1,556
19년 전 조회 2,683
19년 전 조회 2,011
19년 전 조회 3,266
19년 전 조회 3,299
19년 전 조회 2,555
19년 전 조회 2,637
19년 전 조회 2,464
19년 전 조회 2,716
19년 전 조회 2,712
19년 전 조회 3,191
19년 전 조회 2,903
19년 전 조회 5,314
19년 전 조회 2,129
19년 전 조회 2,222
19년 전 조회 2,038
19년 전 조회 1,961
19년 전 조회 1,958
19년 전 조회 2,154
19년 전 조회 3,231
19년 전 조회 3,095
19년 전 조회 2,873
19년 전 조회 2,573
19년 전 조회 2,653
19년 전 조회 2,315
19년 전 조회 2,350
19년 전 조회 1,624
19년 전 조회 2,337
19년 전 조회 2,696
19년 전 조회 2,686
19년 전 조회 2,992
19년 전 조회 2,768
19년 전 조회 1,735
19년 전 조회 1,841
19년 전 조회 2,741
19년 전 조회 2,243
19년 전 조회 4,002
19년 전 조회 2,514
19년 전 조회 2,393
19년 전 조회 3,540
19년 전 조회 3,117
19년 전 조회 2,256
19년 전 조회 3,044
19년 전 조회 2,258
19년 전 조회 3,106
19년 전 조회 3,525
19년 전 조회 5,224
19년 전 조회 3,140
19년 전 조회 3,150
19년 전 조회 2,737
19년 전 조회 2,470
19년 전 조회 2,723
19년 전 조회 2,464