뽀로

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

· 19년 전 · 2003
이번 강좌는 웹페이지에 인증을 하는 법을 해보려 한다. 특정 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,911
19년 전 조회 1,983
19년 전 조회 3,166
19년 전 조회 2,381
19년 전 조회 3,654
19년 전 조회 2,574
19년 전 조회 1,875
19년 전 조회 2,490
19년 전 조회 1,752
19년 전 조회 1,424
19년 전 조회 1,561
19년 전 조회 1,833
19년 전 조회 1,599
19년 전 조회 1,800
19년 전 조회 1,580
19년 전 조회 1,969
19년 전 조회 1,871
19년 전 조회 1,460
19년 전 조회 1,465
19년 전 조회 1,383
19년 전 조회 1,251
19년 전 조회 1,430
19년 전 조회 2,003
19년 전 조회 2,419
19년 전 조회 2,904
19년 전 조회 2,327
19년 전 조회 1,822
19년 전 조회 7,058
19년 전 조회 3,751
19년 전 조회 2,360
19년 전 조회 2,376
19년 전 조회 2,868
19년 전 조회 5,790
19년 전 조회 5,576
19년 전 조회 2,264
19년 전 조회 3,312
19년 전 조회 2,881
19년 전 조회 2,229
19년 전 조회 2,750
19년 전 조회 1,601
19년 전 조회 1,758
19년 전 조회 1,857
19년 전 조회 2,026
19년 전 조회 1,705
19년 전 조회 1,841
19년 전 조회 1,793
19년 전 조회 1,866
19년 전 조회 1,550
19년 전 조회 2,674
19년 전 조회 2,004
19년 전 조회 3,256
19년 전 조회 3,292
19년 전 조회 2,547
19년 전 조회 2,628
19년 전 조회 2,455
19년 전 조회 2,707
19년 전 조회 2,705
19년 전 조회 3,179
19년 전 조회 2,896
19년 전 조회 5,308
19년 전 조회 2,125
19년 전 조회 2,211
19년 전 조회 2,035
19년 전 조회 1,954
19년 전 조회 1,952
19년 전 조회 2,141
19년 전 조회 3,219
19년 전 조회 3,089
19년 전 조회 2,861
19년 전 조회 2,563
19년 전 조회 2,648
19년 전 조회 2,305
19년 전 조회 2,342
19년 전 조회 1,616
19년 전 조회 2,331
19년 전 조회 2,689
19년 전 조회 2,682
19년 전 조회 2,985
19년 전 조회 2,762
19년 전 조회 1,727
19년 전 조회 1,834
19년 전 조회 2,735
19년 전 조회 2,234
19년 전 조회 3,992
19년 전 조회 2,503
19년 전 조회 2,384
19년 전 조회 3,531
19년 전 조회 3,112
19년 전 조회 2,246
19년 전 조회 3,038
19년 전 조회 2,248
19년 전 조회 3,099
19년 전 조회 3,518
19년 전 조회 5,221
19년 전 조회 3,132
19년 전 조회 3,140
19년 전 조회 2,728
19년 전 조회 2,462
19년 전 조회 2,719
19년 전 조회 2,457