mirror of
https://github.com/apache/httpd.git
synced 2025-05-30 01:07:09 +03:00
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@421136 13f79535-47bb-0310-9956-ffa450edef68
330 lines
12 KiB
XML
330 lines
12 KiB
XML
<?xml version="1.0" encoding="EUC-KR" ?>
|
|
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
|
|
<?xml-stylesheet type="text/xsl" href="../style/manual.ko.xsl"?>
|
|
<!-- English Revision: 105989:420990 (outdated) -->
|
|
|
|
<!--
|
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
contributor license agreements. See the NOTICE file distributed with
|
|
this work for additional information regarding copyright ownership.
|
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
(the "License"); you may not use this file except in compliance with
|
|
the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
|
|
<modulesynopsis metafile="mod_auth_digest.xml.meta">
|
|
|
|
<name>mod_auth_digest</name>
|
|
<description>MD5 Digest Authentication을 사용한 사용자인증.</description>
|
|
<status>Experimental</status>
|
|
<sourcefile>mod_auth_digest.c</sourcefile>
|
|
<identifier>auth_digest_module</identifier>
|
|
|
|
<summary>
|
|
<p>이 모듈은 HTTP Digest Authentication을 구현한다.
|
|
그러나 많은 테스트를 거치지 않은 실험적인 모듈이다.</p>
|
|
</summary>
|
|
|
|
<seealso><directive module="core">AuthName</directive></seealso>
|
|
<seealso><directive module="core">AuthType</directive></seealso>
|
|
<seealso><directive module="core">Require</directive></seealso>
|
|
<seealso><directive module="core">Satisfy</directive></seealso>
|
|
|
|
<section id="using"><title>Digest Authentication 사용하기</title>
|
|
|
|
<p>MD5 Digest authentication은 매우 쉽게 사용할 수 있다.
|
|
<code>AuthType Basic</code>과 <directive
|
|
module="mod_auth_basic">AuthBasicProvider</directive> 대신
|
|
<code>AuthType Digest</code>와 <directive
|
|
module="mod_auth_digest">AuthDigestProvider</directive>를
|
|
사용하여 간단히 인증을 설정할 수 있다. 그리고 최소한 보호하려는
|
|
영역의 기본 URI을 <directive module="mod_auth_digest"
|
|
>AuthDigestDomain</directive> 지시어에 사용한다.</p>
|
|
|
|
<p><a href="../programs/htdigest.html">htdigest</a> 도구를
|
|
사용하여 사용자 (문자)파일을 만들 수 있다.</p>
|
|
|
|
<example><title>예제:</title>
|
|
<Location /private/><br />
|
|
<indent>
|
|
AuthType Digest<br />
|
|
AuthName "private area"<br />
|
|
AuthDigestDomain /private/ http://mirror.my.dom/private2/<br />
|
|
<br />
|
|
AuthDigestProvider file<br />
|
|
AuthUserFile /web/auth/.digest_pw<br />
|
|
Require valid-user<br />
|
|
</indent>
|
|
</Location>
|
|
</example>
|
|
|
|
<note><title>주의</title>
|
|
<p>Digest authentication은 Basic authentication보다 더
|
|
안전하지만, 브라우저가 지원해야 한다. 2002년 11월 현재 digest
|
|
authentication을 지원하는 브라우저에는 <a
|
|
href="http://www.w3.org/Amaya/">Amaya</a>, <a
|
|
href="http://konqueror.kde.org/">Konqueror</a>, (Windows용은
|
|
질의문자열과 함께 사용하면 안되지만 - 해결방법은 아래 "<a
|
|
href="#msie">MS Internet Explorer 문제 해결하기</a>"를 참고)
|
|
Mac OS X와 Windows용 <a
|
|
href="http://www.microsoft.com/windows/ie/">MS Internet
|
|
Explorer</a>, <a href="http://www.mozilla.org">Mozilla</a>,
|
|
<a href="http://channels.netscape.com/ns/browsers/download.jsp"
|
|
>Netscape</a> 버전 7, <a href="http://www.opera.com/">Opera</a>,
|
|
<a href="http://www.apple.com/safari/">Safari</a> 등이 있다.
|
|
<a href="http://lynx.isc.org/">lynx</a>는 digest authentication을
|
|
지원하지 <strong>않는다</strong>. digest authentication이
|
|
basic authentication 만큼 널리 구현되지 않았기때문에 모든
|
|
사용자가 지원하는 브라우저를 사용하는 경우에만 사용해야
|
|
한다.</p>
|
|
</note>
|
|
</section>
|
|
|
|
<section id="msie"><title>MS Internet Explorer 문제 해결하기</title>
|
|
<p>현재 Windows용 Internet Explorer는 Digest authentication
|
|
사용시 질의문자열이 있는 <code>GET</code> 요청을 RFC와 다르게
|
|
처리하는 문제가 있다. 몇가지 방법으로 이 문제를 해결할 수
|
|
있다.</p>
|
|
|
|
<p>
|
|
첫번째는 프로그램에 자료를 넘겨주기위해 <code>GET</code>
|
|
대신 <code>POST</code> 요청을 사용하는 방법이다. 이 방법이
|
|
가능하다면 가장 간단한 해결책이다.
|
|
</p>
|
|
|
|
<p>또, 아파치 2.0.51부터 <code>AuthDigestEnableQueryStringHack</code>
|
|
환경변수를 제공하여 문제를 해결한다. 요청에
|
|
<code>AuthDigestEnableQueryStringHack</code>을 설정하면
|
|
아파치는 MSIE 버그를 피해갈 조치를 취하고 요청 URI를 digest
|
|
비교에서 제외한다. 이 방법은 다음과 같이 사용한다.</p>
|
|
|
|
<example><title>MSIE에서 Digest Authentication 사용하기:</title>
|
|
BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
|
|
</example>
|
|
|
|
<p>선택적인 환경변수 설정에 대한 자세한 내용은 <directive
|
|
module="mod_setenvif">BrowserMatch</directive> 지시어를
|
|
참고하라.</p>
|
|
</section>
|
|
|
|
|
|
<directivesynopsis>
|
|
<name>AuthDigestProvider</name>
|
|
<description>이 위치에 대한 인증제공자를 지정한다</description>
|
|
<syntax>AuthDigestProvider On|Off|<var>provider-name</var>
|
|
[<var>provider-name</var>] ...</syntax>
|
|
<default>AuthDigestProvider On</default>
|
|
<contextlist><context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>AuthConfig</override>
|
|
|
|
<usage>
|
|
<p><directive>AuthDigestProvider</directive> 지시어는 이
|
|
위치에서 사용자를 인증할 제공자를 지정한다. 값이
|
|
<code>On</code>이면 기본제공자(<code>file</code>)를 사용한다.
|
|
<module>mod_authn_file</module> 모듈이 <code>file</code>
|
|
제공자를 구현하기때문에 서버에 이 모듈이 있는지 확인해야
|
|
한다.</p>
|
|
|
|
<p>제공자는 <module>mod_authn_dbm</module>과
|
|
<module>mod_authn_file</module>을 참고하라.</p>
|
|
|
|
<p>값이 <code>Off</code>이면 제공자 목록을 지우고 기본상태로
|
|
돌아간다.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>AuthDigestQop</name>
|
|
<description>digest authentication가 사용할
|
|
보호수준(quality-of-protection)을 지정한다.</description>
|
|
<syntax>AuthDigestQop none|auth|auth-int [auth|auth-int]</syntax>
|
|
<default>AuthDigestQop auth</default>
|
|
<contextlist><context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>AuthConfig</override>
|
|
|
|
<usage>
|
|
<p><directive>AuthDigestQop</directive> 지시어는
|
|
<dfn>보호수준(quality-of-protection)</dfn>을 지정한다.
|
|
<code>auth</code>는 (사용자명/암호) 인증만 하고,
|
|
<code>auth-int</code>는 인증과 완결성 검사를 (MD5 해쉬도
|
|
계산하여 검사한다) 한다. <code>none</code>은 (완결성 검사를
|
|
하지않는) 오래된 RFC-2069 digest 알고리즘을 사용한다.
|
|
<code>auth</code>와 <code>auth-int</code>를 모두 지정할
|
|
수 있다. 이 경우 브라우저는 어떤 것을 사용할지 선택한다.
|
|
브라우저가 어던 이유에서건 challenge를 좋아하지 않는다면
|
|
<code>none</code>을 사용해야 한다.</p>
|
|
|
|
<note>
|
|
<code>auth-int</code>는 아직 구현되지 않았다.
|
|
</note>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>AuthDigestNonceLifetime</name>
|
|
<description>서버 nonce가 유효한 기간</description>
|
|
<syntax>AuthDigestNonceLifetime <var>seconds</var></syntax>
|
|
<default>AuthDigestNonceLifetime 300</default>
|
|
<contextlist><context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>AuthConfig</override>
|
|
|
|
<usage>
|
|
<p><directive>AuthDigestNonceLifetime</directive> 지시어는
|
|
서버 nonce가 유효한 기간을 조절한다. 클라이언트가 만기된
|
|
nonce를 가지고 서버에 접근하면 서버는 <code>stale=true</code>와
|
|
함께 401을 반환한다. <var>seconds</var>가 0보다 크면 nonce가
|
|
유효한 기간을 지정한다. 아마도 10 초보다 작게 설정하면 안된다.
|
|
<var>seconds</var>가 0보다 작으면 nonce는 영원히 만기되지
|
|
않는다. <!-- 아직 구현되지 않았음: <var>seconds</var>가
|
|
0이면 클라이언트는 정확히 한번만 nonce를 사용할 수 있다.
|
|
한번만 사용할 수 있는 nonce는 재생공격(replay attack)에
|
|
대해 더 안전한 보안을 제공하지만, 브라우저가 요청들을 연속해서
|
|
보내거나 여러 연결을 동시에 할 수가 없어서 성능이 상당히
|
|
떨어질 수 있음을 주의하라. 브라우저는 nonce를 이미 사용하였는지
|
|
쉽게 알아낼 수 없기때문에 요청을 연속해서 보낸후, 첫번째
|
|
요청을 제외하고 401 응답을 받은 다음 요청을 다시 보내게
|
|
된다. 또 재생공격에 대한 보호는 POST 요청과 같이 동적으로
|
|
내용을 생성하는 경우에만 의미가 있음을 주의하라. 정적인
|
|
내용의 경우 공격자는 이미 완전한 내용을 가지고 있으므로,
|
|
한번만 사용할 수 있는 nonce는 의미가 없다. -->
|
|
</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>AuthDigestNonceFormat</name>
|
|
<description>nonce를 만드는 방법을 결정한다</description>
|
|
<syntax>AuthDigestNonceFormat <var>format</var></syntax>
|
|
<contextlist><context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>AuthConfig</override>
|
|
|
|
<usage>
|
|
<note>아직 구현되지 않았다.</note>
|
|
<!-- AuthDigestNonceFormat 지시어는 nonce를 만드는 방법을
|
|
결정한다. -->
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>AuthDigestNcCheck</name>
|
|
<description>서버가 보내는 nonce-count를 검사할지 여부</description>
|
|
<syntax>AuthDigestNcCheck On|Off</syntax>
|
|
<default>AuthDigestNcCheck Off</default>
|
|
<contextlist><context>server config</context></contextlist>
|
|
|
|
<usage>
|
|
<note>
|
|
아직 구현되지 않았다.
|
|
</note>
|
|
<!--
|
|
<p>AuthDigestNcCheck 지시어는 서버가 보내는 nonce-count를
|
|
검사할지 결정한다.</p>
|
|
|
|
<p>보안상 권장하지만 이 지시어를 On으로 설정하면 성능이
|
|
크게 떨어진다. nonce-count를 검사하려면 (digest authentication
|
|
여부와 관계없이 Authorization 헤더를 보내는) *모든* 요청을
|
|
임계영역(critical section)을 통해 처리해야 한다. 서버가
|
|
Authorization 헤더를 포함한 매우 많은 요청을 처리한다면
|
|
성능이 현저히 떨어질 수 있다.</p>
|
|
-->
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>AuthDigestAlgorithm</name>
|
|
<description>digest authentication에서 challenge와 response
|
|
hash를 계산하는 알고리즘을 선택한다</description>
|
|
<syntax>AuthDigestAlgorithm MD5|MD5-sess</syntax>
|
|
<default>AuthDigestAlgorithm MD5</default>
|
|
<contextlist><context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>AuthConfig</override>
|
|
|
|
<usage>
|
|
<p><directive>AuthDigestAlgorithm</directive> 지시어는
|
|
challenge와 response hash를 계산하는 알고리즘을 선택한다.</p>
|
|
|
|
<note>
|
|
<code>MD5-sess</code>는 아직 완전히 구현되지 않았다.
|
|
</note>
|
|
<!--
|
|
<p><code>MD5-sess</code>를 사용하려면
|
|
<code>mod_auth_digest.c</code>의 <code>get_userpw_hash()</code>
|
|
함수를 먼저 작성해야 한다.</p>
|
|
-->
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>AuthDigestDomain</name>
|
|
<description>digest authentication에서 같은 보호영역에 속하는
|
|
URI들</description>
|
|
<syntax>AuthDigestDomain <var>URI</var> [<var>URI</var>] ...</syntax>
|
|
<contextlist><context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>AuthConfig</override>
|
|
|
|
<usage>
|
|
<p><directive>AuthDigestDomain</directive> 지시어는 같은
|
|
보호영역에 있는 (<em>예를 들어</em> 같은 영역과 사용자명/암호
|
|
정보를 사용하는) URI들을 지정한다. 지정한 URI는 접두사로
|
|
사용한다. 클라이언트는 URI "아래" 모두를
|
|
같은 사용자명/암호로 보호한다고 가정한다. URI는
|
|
(<em>즉</em>, 스킴(scheme), 호스트, 포트 등을 포함하는)
|
|
절대 URL이거나 상대 URI이다.</p>
|
|
|
|
<p>이 지시어는 항상 <em>지정해야</em> 하며, 최소한 영역들의
|
|
기본 URI(들)를 포함<em>해야</em> 한다. 생략하면 클라이언트는
|
|
이 서버로 보내는 <em>모든 요청</em>에 Authorization 헤더를
|
|
포함한다. 그러면 요청의 크기가 커지며, <directive
|
|
module="mod_auth_digest">AuthDigestNcCheck</directive>를
|
|
사용한다면 성능에 나쁜 영향을 줄 수 있다.</p>
|
|
|
|
<p>다른 서버의 URI를 지정하면, (이를 이해하는) 클라이언트는
|
|
여러 서버마다 매번 사용자에게 묻지않고 같은 사용자명/암호를
|
|
사용할 수 있다.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>AuthDigestShmemSize</name>
|
|
<description>클라이언트를 추적하기위해 할당하는 공유메모리량</description>
|
|
<syntax>AuthDigestShmemSize <var>size</var></syntax>
|
|
<default>AuthDigestShmemSize 1000</default>
|
|
<contextlist><context>server config</context></contextlist>
|
|
|
|
<usage>
|
|
<p><directive>AuthDigestShmemSize</directive> 지시어는
|
|
클라이언트를 추적하기위해 서버가 시작할때 할당하는
|
|
공유메모리량을 정의한다. 공유메모리는 최소한 <em>하나의</em>
|
|
클라이언트를 추적하기위해 필요한 공간보다 작을 수 없음을
|
|
주의하라. 이 값은 시스템에 따라 다르다. 정확한 값을 알려면
|
|
<directive>AuthDigestShmemSize</directive>를 <code>0</code>으로
|
|
설정하고 서버를 시작한후 오류문을 참고하라.</p>
|
|
|
|
<p><var>size</var>는 보통 바이트 단위이지만, 뒤에
|
|
<code>K</code>나 <code>M</code>을 사용하여 KBytes나 MBytes를
|
|
나타낼 수 있다. 예를 들어, 다음 지시어들은 모두 같다:</p>
|
|
|
|
<example>
|
|
AuthDigestShmemSize 1048576<br />
|
|
AuthDigestShmemSize 1024K<br />
|
|
AuthDigestShmemSize 1M
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
</modulesynopsis>
|