Apache HTTP Server Version 2.0
아파치 모듈 mod_auth_digest
설명: | MD5 Digest Authentication을 사용한 사용자인증. |
---|---|
상태: | Experimental |
모듈명: | auth_digest_module |
소스파일: | mod_auth_digest.c |
요약
이 모듈은 HTTP Digest Authentication을 구현한다. 그러나 많은 테스트를 거치지 않은 실험적인 모듈이다.
Digest Authentication 사용하기
MD5 Digest authentication은 매우 쉽게 사용할 수 있다.
모든 AuthGroupFile
을
AuthDigestGroupFile
로
변경하고, AuthType Basic
과 AuthUserFile
대신
AuthType Digest
와 AuthDigestFile
을
사용하여 간단히 인증을 설정할 수 있다. 그리고 최소한 보호하려는
영역의 기본 URI을 AuthDigestDomain
지시어에 사용한다.
htdigest 도구를 사용하여 사용자 (문자)파일을 만들 수 있다.
예제:
<Location /private/>
AuthType Digest
AuthName "private area"
AuthDigestDomain /private/ http://mirror.my.dom/private2/
AuthDigestFile /web/auth/.digest_pw
Require valid-user
</Location>
주의
Digest authentication은 Basic authentication보다 더 안전한 암호시스템을 제공하지만, 브라우저가 지원해야 한다. 2002년 11월 현재 digest authentication을 지원하는 브라우저에는 Opera, (질의문자열과 함께 사용하면 안되지만 - 해결방법은 아래 "MS Internet Explorer 문제 해결하기"를 참고) MS Internet Explorer, Amaya, Mozilla, 버전 7 이후의 Netscape 등이 있다. digest authentication이 basic authentication 만큼 널리 구현되지 않았기때문에 주의해서 사용해야 한다.
MS Internet Explorer 문제 해결하기
현재 Internet Explorer는 Digest authentication
사용시 질의문자열이 있는 GET
요청을 RFC와 다르게
처리하는 문제가 있다. 몇가지 방법으로 이 문제를 해결할 수
있다.
첫번째는 프로그램에 자료를 넘겨주기위해 GET
대신 POST
요청을 사용하는 방법이다. 이 방법이
가능하다면 가장 간단한 해결책이다.
또, 아파치 2.0.51부터 AuthDigestEnableQueryStringHack
환경변수를 제공하여 문제를 해결한다. 요청에
AuthDigestEnableQueryStringHack
을 설정하면
아파치는 MSIE 버그를 피해갈 조치를 취하고 요청 URI를 digest
비교에서 제외한다. 이 방법은 다음과 같이 사용한다.
MSIE에서 Digest Authentication 사용하기:
BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
선택적인 환경변수 설정에 대한 자세한 내용은 BrowserMatch
지시어를
참고하라.
AuthDigestAlgorithm 지시어
설명: | digest authentication에서 challenge와 response hash를 계산하는 알고리즘을 선택한다 |
---|---|
문법: | AuthDigestAlgorithm MD5|MD5-sess |
기본값: | AuthDigestAlgorithm MD5 |
사용장소: | directory, .htaccess |
Override 옵션: | AuthConfig |
상태: | Experimental |
모듈: | mod_auth_digest |
AuthDigestAlgorithm
지시어는
challenge와 response hash를 계산하는 알고리즘을 선택한다.
MD5-sess
는 아직 완전히 구현되지 않았다.
AuthDigestDomain 지시어
설명: | digest authentication에서 같은 보호영역에 속하는 URI들 |
---|---|
문법: | AuthDigestDomain URI [URI] ... |
사용장소: | directory, .htaccess |
Override 옵션: | AuthConfig |
상태: | Experimental |
모듈: | mod_auth_digest |
AuthDigestDomain
지시어는 같은
보호영역에 있는 (예를 들어 같은 영역과 사용자명/암호
정보를 사용하는) URI들을 지정한다. 지정한 URI는 접두사로
사용한다. 즉, 클라이언트는 URI "아래" 모두를
같은 사용자명/암호로 보호한다고 가정한다. URI는
(즉, 스킴(scheme), 호스트, 포트 등을 포함하는)
절대 URL이거나 상대 URI이다.
이 지시어는 항상 지정해야 하며, 최소한 영역들의
기본 URI(들)를 포함해야 한다. 생략하면 클라이언트는
이 서버로 보내는 모든 요청에 Authorization 헤더를
포함한다. 그러면 요청의 크기가 커지며, AuthDigestNcCheck
를
사용한다면 성능에 나쁜 영향을 줄 수 있다.
다른 서버의 URI를 지정하면, (이를 이해하는) 클라이언트는 여러 서버마다 매번 사용자에게 묻지않고 같은 사용자명/암호를 사용할 수 있다.
AuthDigestFile 지시어
설명: | digest authentication에 사용할 사용자명과 인코딩된 암호 목록을 저장한 문서파일 위치 |
---|---|
문법: | AuthDigestFile file-path |
사용장소: | directory, .htaccess |
Override 옵션: | AuthConfig |
상태: | Experimental |
모듈: | mod_auth_digest |
AuthDigestFile
지시어는 digest
authentication에 사용할 사용자명과 인코딩된 암호를 저장하는
문서파일명을 지정한다. File-path는 사용자정보
파일의 절대경로이다.
이 파일 내용은 특별한 형식이 있다. 아파치 배포본의
support/
하위디렉토리에 있는 htdigest 도구를 사용하여
이런 형식의 파일을 만들 수 있다.
AuthDigestGroupFile 지시어
설명: | digest authentication에 사용할 그룹 목록을 저장한 문서파일명 |
---|---|
문법: | AuthDigestGroupFile file-path |
사용장소: | directory, .htaccess |
Override 옵션: | AuthConfig |
상태: | Experimental |
모듈: | mod_auth_digest |
AuthDigestGroupFile
지시어는 그룹과
그룹의 구성원들(사용자명) 목록을 저장하는 문서파일명을 지정한다.
File-path는 그룹정보 파일의 절대경로이다.
그룹파일은 그룹명 뒤에 콜론, 그뒤에 그룹에 속한 사용자명들을 공백으로 구분하여 한 줄로 기록한다. 예를 들어 다음과 같다.
mygroup: bob joe anne
큰 문자파일을 검색하는 것이 매우 비효율적임을 명심하라.
보안:
AuthGroupFile
을 웹서버 문서들 밖에
저장해야 한다. 그룹파일이 보호하는 디렉토리 안에 그룹파일을
두지 마라. 그렇지 않으면 클라이언트가
AuthGroupFile
을 다운받을 수도 있다.
AuthDigestNcCheck 지시어
설명: | 서버가 보내는 nonce-count를 검사할지 여부 |
---|---|
문법: | AuthDigestNcCheck On|Off |
기본값: | AuthDigestNcCheck Off |
사용장소: | 주서버설정 |
상태: | Experimental |
모듈: | mod_auth_digest |
AuthDigestNonceFormat 지시어
설명: | nonce를 만드는 방법을 결정한다 |
---|---|
문법: | AuthDigestNonceFormat format |
사용장소: | directory, .htaccess |
Override 옵션: | AuthConfig |
상태: | Experimental |
모듈: | mod_auth_digest |
AuthDigestNonceLifetime 지시어
설명: | 서버 nonce가 유효한 기간 |
---|---|
문법: | AuthDigestNonceLifetime seconds |
기본값: | AuthDigestNonceLifetime 300 |
사용장소: | directory, .htaccess |
Override 옵션: | AuthConfig |
상태: | Experimental |
모듈: | mod_auth_digest |
AuthDigestNonceLifetime
지시어는
서버 nonce가 유효한 기간을 조절한다. 클라이언트가 만기된
nonce를 가지고 서버에 접근하면 서버는 stale=true
와
함께 401을 반환한다. seconds가 0보다 크면 nonce가
유효한 기간을 지정한다. 아마도 10 초보다 작게 설정하면 안된다.
seconds가 0보다 작으면 nonce는 영원히 만기되지
않는다.
AuthDigestQop 지시어
설명: | digest authentication가 사용할 보호수준(quality-of-protection)을 지정한다. |
---|---|
문법: | AuthDigestQop none|auth|auth-int [auth|auth-int] |
기본값: | AuthDigestQop auth |
사용장소: | directory, .htaccess |
Override 옵션: | AuthConfig |
상태: | Experimental |
모듈: | mod_auth_digest |
AuthDigestQop
지시어는
보호수준(quality-of-protection)을 지정한다.
auth
는 (사용자명/암호) 인증만 하고,
auth-int
는 인증과 완결성 검사를 (MD5 해쉬도
계산하여 검사한다) 한다. none
은 (완결성 검사를
하지않는) 오래된 RFC-2069 digest 알고리즘을 사용한다.
auth
와 auth-int
를 모두 지정할
수 있다. 이 경우 브라우저는 어떤 것을 사용할지 선택한다.
브라우저가 어던 이유에서건 challenge를 좋아하지 않는다면
none
을 사용해야 한다.
auth-int
는 아직 구현되지 않았다.
AuthDigestShmemSize 지시어
설명: | 클라이언트를 추적하기위해 할당하는 공유메모리량 |
---|---|
문법: | AuthDigestShmemSize size |
기본값: | AuthDigestShmemSize 1000 |
사용장소: | 주서버설정 |
상태: | Experimental |
모듈: | mod_auth_digest |
AuthDigestShmemSize
지시어는
클라이언트를 추적하기위해 서버가 시작할때 할당하는
공유메모리량을 정의한다. 공유메모리는 최소한 하나의
클라이언트를 추적하기위해 필요한 공간보다 작을 수 없음을
주의하라. 이 값은 시스템에 따라 다르다. 정확한 값을 알려면
AuthDigestShmemSize
를 0
으로
설정하고 서버를 시작한후 오류문을 참고하라.
size는 보통 바이트 단위이지만, 뒤에
K
나 M
을 사용하여 KBytes나 MBytes를
나타낼 수 있다. 예를 들어, 다음 지시어들은 모두 같다:
AuthDigestShmemSize 1048576
AuthDigestShmemSize 1024K
AuthDigestShmemSize 1M