BLOG ARTICLE .htpasswd | 1 ARTICLE FOUND

  1. 2007/07/19 웹사이트 특정 폴더에 비밀번호 걸기

 
 
 
 
가장 간단한 인증방법인 .htaccess 파일을 이용하여 암호화된 디렉토리 생성방법을 설명한다.
먼저 쉘로 접속해서 password 를 사용할 디렉토리로 이동,
 ".htaccess" 파일을 아래와 같이 생성한다.

AuthUserFile /home/mydirectory/public_html/member/.htpasswd
AuthGroupFile /dev/null
AuthName "KTOWN-USA.COM 회원전용"
AuthType Basic

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


AuthUserFile 은 패스워드를 걸려고하는 디렉토리의 절대경로(pwd)를 입력
AuthName 은 인증박스의 타이틀


.htpasswd 파일 만들기
인증받은 사용자의 아이디와 패스워드 리스트를 저장하고 있는 파일이 .htpasswd 이다.
다음과 같은 명령으로 .htpasswd 파일을 생성한다.(처음 .htpasswd 파일을 만드는 경우에는 -c 옵션을 준다.)

$ htpasswd -c .htpasswd username 

위와 같이 입력하면 비밀번호를 넣으라는 메세지가 나온다. 해당 사용자의 비밀번호를 등록하면 된다.

.htpasswd 파일이 생성된 후로는 -c 옵션을 빼고 아래와 같이 사용한다.
(아래는 newuser 이라는 사용자를 추가하는 과정이다.)

$ htpasswd .htpasswd newuser


이제 위 .htaccess 파일에서 설정된 것과 같이 http://My.Domain.Com/member/ 를 열면
로그인 박스가 나타날것이다.

.htpasswd 파일에 등록되어 있는 사용자 ID를 입력하고 비밀번호를 넣어야 열람이 가능하다..




비밀번호 변경
기존 사용자의 비밀 번호를 변경하려면 다음과 같이 입력한다.

$ htpasswd .htpasswd user



사용자 삭제

$ htpasswd -D .htpasswd user

또는 텍스트에디터로 .htpasswd 파일에서 삭제하려는 사용자가 위치한 줄을 지워주면 된다.


엔터프라이즈(enterprise)서버에서는 .htaccess 파일이 아니라 .nsconfig 파일을 사용하며 위의 사항과 다릅니다. 다음과 같이 .nsconfig 파일을 작성해 줍니다.

RequireAuth userfile=/path/.nspasswd realm="Private Directory"

위에서 path는 .nspasswd 파일이 있는 물리적 경로입니다. .nspasswd 파일은 위에서 언급한 .htpasswd 와같은 형태로 만들어 줍니다.


 

설치중에 발생하는 에러

Server에러가 나는 경우

이 경우, 십중팔구는 .htaccess 파일 이 잘못 작성된 경우입니다.
통상 PC에서 작성하면 눈에 보이지 않는 코드가(캐리지리턴) 들어 가는 경우가
발생 합니다. 이 경우에는 .htaccess파일을 새로 작성하시거나, 업로드시 꼭 아스키
모드 인지 확인하신 후 올려야 합니다.

설치를 했는데 인증이 되지 않고 바로 해당 페이지가 출력되는 경우
웹서버가 NCSA나 APACHE웹서버가 아닌 경우
srm.conf 파일에서 AccessFileName 의 값을 기정치인 .htaccess 가 아닌 경우
access.conf파일에서 해당 디렉토리 관련 지정에서 AllowOverride를 None으로 둔
경우 .htaccess 파일을 엉뚱한 디렉토리에 설치한 경우
설치를 하고 인증박스가 뜨는데 id와 password를 입력하니 인증이 잘못되었다고
나오는 경우

이것은 통상 .htpasswd 로 작성한 id와 password 가 아닌 경우이거나 아니면
.htaccess 파일에서 AuthUserFile의 값을 잘못 입력한 경우입니다. 그 값이 정확
하게 .htpasswd 파일이 있는 경로를 가리키는 지 다시 확인해 보십시오.
 

고급 활용편

회원관리등의 경우 비 회원인 사람들이 인증이 실패했을때 회원 가입을 권유하는
메시지나 혹은 관련 문서를 내보내고 싶은 경우
가 있습니다. 여기서 언급하는 것
은 웹서버 Apache 1.1 이상에서 지원되는 것으로 기존의 NCSA 1.3 이하버전에
서는 그 메시지가 httpd내의 코딩에 포함되어 있었으므로 불가능하였습니다. 현재
NCSA 1.4 버전이상에 서는 어떻게 되는지 명확하지 않으므로 NCSA의 경우라면
아래 사항을 참고한 후NCSA 사이트에 가서 확인해 보시는 것이 좋습니다. 다른 웹
서버의 경우도 해당 사이트에서 확인해 보십시오.

먼저 .htaccess 파일을 사용하는 경우
이 경우에는 conf파일인 access.conf 파일에서 해당 디렉토리에 대한 Allowoverride
를 FileInfo 로 설정되어 있어야 합니다.
.htaccess 파일에 다음의 줄을 이전 줄에 추가해 줍니다.

ErrorDocument 401 "the text you want..

위의 경우 "는 text시작임을 나타내고 인증실패시 "를 제외한 text가 나타나게
됩니다. 그리고 중간에 있는 401은 인증실패에러번호입니다. 만약 다른 url로
리디렉션 하고자 하는 경우 (예를 들어 구독신청을 받는다든지 아니면 회원가입
을 권유하는 페이지로 리디렉션 하려면) 위의 줄을

ErrorDocument 401 /~yourID/subscription.html

위의 경우 인증절차가 실패하면 yourID란 계정의 subscription.html이 출력
됩니다. 조심 할 것은 위의 경로는 url이지 AuthUserFile의 경우 처럼 파일의
물리적 경로가 아니라는 것입니다.

만약 다른 시스템에 있는 url의 페이지로 리디렉션하려면

ErrorDocument 401 http://other.com/otherpage.html 의 형태가 됩니다.

srm.conf 파일을 사용하는 경우
이것은 시스템관리자가 접근할 수 있는 파일이므로 일반 계정을 사용하는 경우에는
해당되지 않습니다. 하지만 시스템관리자의 경우 이것을 사용하면 일관성있게 401
에러 (Authehtication Failed Error) 를 한 메시지를 나타내거나 한 페이지로 리디렉션
할 수 있습니다. 사용법은 위와 같습니다 srm.conf의 마지막에 위와 같이 적어줍니다.

메시지의 경우
ErrorDocument 401 "The text you want to show....

리디레션의 경우
ErrorDocument 401 /subscription.html

(위의 경우 htdocs 디렉토리에 위의 subscription.html이 존재하여야 합니다.)
srm.conf 를 사용하는 경우에는 401에러뿐만 아니라 500이나 403, 404, 501 에러
등도 위와 같이 redirection이 가능합니다.