htpasswd를 이용한 사용자 인증
password를 묻는 대화상자(dialogue box)는 cgi 나 java script으로 만든 것이 아닌 APACHE httpd Server 데몬과, 사용자가 만드는 .htaccess 화일과 .htpasswd 화일을이용한 웹서버의 기본 인증 절차에 의한 것입니다.

이 두 개의 화일들을 패스워드를 걸 페이지가 있는 디렉토리에 두면, 외부인이 브라우저로 그 디렉토리에 있는 화일들(HTML화일들)에 접근을 할 때, 패스워드를 묻는 대화상자를 내보내게 합니다.

.htaccess 파일 만들기
- 인증 하고 싶은 디렉토리에 .htaccess라는 화일을 만들어서 업로드 하면 됩니다.
- .htaccess화일에 다음과 같은 내용을 입력하고 아스키모드로 업로드 합니다.
반드시 "AuthName 과 AuthUserFile" 만 변경하고 나머지는 그대로 둡니다.

AuthName "패스워드박스에 나타나는 메시지" (반드시 따옴표 입력)
AuthType Basic
AuthUserFile /home/LoginID/public_html/admin/.htpasswd (절대경로로)
AuthGroupFile /dev/null

require valid-user


Server Error가 나는 경우 대부분 AuthUserFiles의 잘못된작성입니다.
" ErrorDocument 401 "the text you want.. "

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


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

path는 .nspasswd 파일이 있는 물리적 경로입니다. .nspasswd파일은 아래의 htpasswd과 같은 형태로 만들어 줍니다.

.htpasswd 화일만들기 (첫 사용자 ID만들기)
- .htpasswd는 사용자ID와 패스워드가 있는 파일입니다.
- 다른이름으로 설정할 수 있으나 .htaccess의 경로와 일치 해야합니다.
- .htpasswd를 만들기 위해서는 htpasswd라는 프로그램을 사용해야 하는데, 보통 리눅스Linux용 htpasswd는 /usr/sbin 또는 /usr/bin 디렉토리에 있습니다.

1. $ /usr/sbin/htpasswd -c .htpasswd ID_name 명령을 줍니다.
(최초에는 반드시 -c 옵션을 줍니다.)
2. New password: 로그인 할 비밀번호 입력.
3. Re-type new password: 재입력.
4.Adding password for user admin 성공 한 메세지.

사용자 ID 추가하기
- $ /usr/sbin/htpasswd .htpasswd ID_name2 명령을 줍니다.
(-c를 빼고 적어야 됩니다.-c 옵션 추가시 기존 ID는 지워집니다.)
- 암호를 두 번 입력해주면 됩니다.

위와 같이 하면 .htpasswd 파일에 사용자 아이디와 암호화된 패스워드가 저장 됩니다. 이제 .htpasswd 에 입력된 사용자만 해당 디렉토리에 접근할 수 있으며 한 번 로그인 된 브라우저를 재 접속 할 때 암호 창이 뜨지 않고 그냥 접속이 됩니다. 테스트 하기 위해 선 한 번 로그인 된 브라우저를 닫고 새 브라우저를 열고 확인 합니다

로그인 실패시 메시지, 다른 Url로 리디렉션 설정하기
- .htaccess 사용시 아파치 서버의 access.conf파일의 해당 디렉토리에 대한 Allowoverride를 FileInfo로 설정변경해주어야 합니다.
- 그런다음 .htaccess 파일에 원하는 내용 또는 리디렉션할 Url을 맨 앞줄에 추가합니다.
예: ErrorDocument 401 "the text you want.. "
예: ErrorDocument 401 /~yourID/subscription.html "
예: ErrorDocument 401 http://other.com/otherpage.html

- 시스템 관리자의 경우 srm.conf의 마지막줄에 추가하면 됩니다.
예: ErrorDocument 401 "The text you want to show....
예: ErrorDocument 401 /subscription.html
반응형
,