Apache HTTP Server Version 2.4

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

# 아파치 모듈 mod_auth_digest

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

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

### 요약

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

### 주제

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

### 지시어들

### Bugfix checklist

- httpd changelog
- Known issues
- Report a bug

### 참고

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

## Digest Authentication 사용하기

MD5 Digest authentication은 매우 쉽게 사용할 수 있다. `AuthType Basic`과 `AuthBasicProvider` 대신 `AuthType Digest`와 `AuthDigestProvider`를 사용하여 간단히 인증을 설정할 수 있다. 그리고 최소한 보호하려는 영역의 기본 URI을 `AuthDigestDomain` 지시어에 사용한다.

htdigest 도구를 사용하여 사용자 (문자)파일을 만들 수 있다.

### 예제:

`<Location /private/>
AuthType Digest
AuthName "private area"
AuthDigestDomain /private/ http://mirror.my.dom/private2/
AuthDigestProvider file
AuthUserFile /web/auth/.digest_pw
Require valid-user
</Location>`

### 주의

Digest authentication은 Basic authentication보다 더 안전하지만, 브라우저가 지원해야 한다. 2002년 11월 현재 digest authentication을 지원하는 브라우저에는 Amaya, Konqueror, (Windows용은 질의문자열과 함께 사용하면 안되지만 - 해결방법은 아래 "MS Internet Explorer 문제 해결하기"를 참고) Mac OS X와 Windows용 MS Internet Explorer, Mozilla, Netscape 버전 7, Opera, Safari 등이 있다. lynx는 digest authentication을 지원하지 않는다. digest authentication이 basic authentication 만큼 널리 구현되지 않았기때문에 모든 사용자가 지원하는 브라우저를 사용하는 경우에만 사용해야 한다.

## MS Internet Explorer 문제 해결하기

현재 Windows용 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를 지정하면, (이를 이해하는) 클라이언트는 여러 서버마다 매번 사용자에게 묻지않고 같은 사용자명/암호를 사용할 수 있다.

## 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는 영원히 만기되지 않는다.

## AuthDigestProvider 지시어

설명: | 이 위치에 대한 인증제공자를 지정한다
문법: | `AuthDigestProvider On|Off|provider-name [provider-name] ...`
기본값: | `AuthDigestProvider On`
사용장소: | directory, .htaccess
Override 옵션: | AuthConfig
상태: | Experimental
모듈: | mod_auth_digest

`AuthDigestProvider` 지시어는 이 위치에서 사용자를 인증할 제공자를 지정한다. 값이 `On`이면 기본제공자(`file`)를 사용한다. `mod_authn_file` 모듈이 `file` 제공자를 구현하기때문에 서버에 이 모듈이 있는지 확인해야 한다.

제공자는 `mod_authn_dbm`과 `mod_authn_file`을 참고하라.

값이 `Off`이면 제공자 목록을 지우고 기본상태로 돌아간다.

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