Apache HTTP Server Version 2.0

Apache > HTTP Server > Documentation > Version 2.0 > 모듈

# 아파치 모듈 mod_auth_digest

가능한 언어: en | ko

이 문서는 최신판 번역이 아닙니다. 최근에 변경된 내용은 영어 문서를 참고하세요.

설명: | MD5 Digest Authentication을 사용한 사용자인증.
상태: | Experimental
모듈명: | auth_digest_module
소스파일: | mod_auth_digest.c

### 요약

이 모듈은 HTTP Digest Authentication을 구현한다. 그러나 많은 테스트를 거치지 않은 실험적인 모듈이다.

### 지시어들

### 주제

- Digest Authentication 사용하기
- MS Internet Explorer 문제 해결하기

### 참고

- `AuthName`
- `AuthType`
- `Require`
- `Satisfy`

## 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`

가능한 언어: en | ko