github.com/krum110487/go-htaccess@v0.0.0-20240316004156-60641c8e7598/tests/data/apache_2_2_34/manual/mod/mod_auth_digest.html.en (about)

     1  <?xml version="1.0" encoding="ISO-8859-1"?>
     2  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     3  <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
     4  <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
     5  <!--
     6          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
     7                This file is generated from xml source: DO NOT EDIT
     8          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
     9        -->
    10  <title>mod_auth_digest - Apache HTTP Server Version 2.2</title>
    11  <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
    12  <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
    13  <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
    14  <script src="../style/scripts/prettify.min.js" type="text/javascript">
    15  </script>
    16  
    17  <link href="../images/favicon.ico" rel="shortcut icon" /><link href="http://httpd.apache.org/docs/current/mod/mod_auth_digest.html" rel="canonical" /></head>
    18  <body>
    19  <div id="page-header">
    20  <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
    21  <p class="apache">Apache HTTP Server Version 2.2</p>
    22  <img alt="" src="../images/feather.gif" /></div>
    23  <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
    24  <div id="path">
    25  <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.2</a> &gt; <a href="./">Modules</a></div>
    26  <div id="page-content">
    27  <div class="retired"><h4>Please note</h4>
    28              <p> This document refers to a legacy release (<strong>2.2</strong>) of Apache httpd. The active release (<strong>2.4</strong>) is documented <a href="http://httpd.apache.org/docs/current">here</a>. If you have not already upgraded, please follow <a href="http://httpd.apache.org/docs/current/upgrading.html">this link</a> for more information.</p>
    29          <p>You may follow <a href="http://httpd.apache.org/docs/current/mod/mod_auth_digest.html">this link</a> to go to the current version of this document.</p></div><div id="preamble"><h1>Apache Module mod_auth_digest</h1>
    30  <div class="toplang">
    31  <p><span>Available Languages: </span><a href="../en/mod/mod_auth_digest.html" title="English">&nbsp;en&nbsp;</a> |
    32  <a href="../fr/mod/mod_auth_digest.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
    33  <a href="../ko/mod/mod_auth_digest.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
    34  </div>
    35  <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>User authentication using MD5
    36      Digest Authentication.</td></tr>
    37  <tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
    38  <tr><th><a href="module-dict.html#ModuleIdentifier">Module Identifier:</a></th><td>auth_digest_module</td></tr>
    39  <tr><th><a href="module-dict.html#SourceFile">Source File:</a></th><td>mod_auth_digest.c</td></tr></table>
    40  <h3>Summary</h3>
    41  
    42      <p>This module implements HTTP Digest Authentication
    43      (<a href="http://www.faqs.org/rfcs/rfc2617.html">RFC2617</a>), and
    44      provides an alternative to <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> where the
    45      password is not transmitted as cleartext. However, this does
    46      <strong>not</strong> lead to a significant security advantage over
    47      basic authentication. On the other hand, the password storage on the
    48      server is much less secure with digest authentication than with
    49      basic authentication. Therefore, using basic auth and encrypting the
    50      whole connection using <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> is a much better
    51      alternative.</p>
    52  </div>
    53  <div id="quickview"><h3>Topics</h3>
    54  <ul id="topics">
    55  <li><img alt="" src="../images/down.gif" /> <a href="#using">Using Digest Authentication</a></li>
    56  </ul><h3 class="directives">Directives</h3>
    57  <ul id="toc">
    58  <li><img alt="" src="../images/down.gif" /> <a href="#authdigestalgorithm">AuthDigestAlgorithm</a></li>
    59  <li><img alt="" src="../images/down.gif" /> <a href="#authdigestdomain">AuthDigestDomain</a></li>
    60  <li><img alt="" src="../images/down.gif" /> <a href="#authdigestnccheck">AuthDigestNcCheck</a></li>
    61  <li><img alt="" src="../images/down.gif" /> <a href="#authdigestnonceformat">AuthDigestNonceFormat</a></li>
    62  <li><img alt="" src="../images/down.gif" /> <a href="#authdigestnoncelifetime">AuthDigestNonceLifetime</a></li>
    63  <li><img alt="" src="../images/down.gif" /> <a href="#authdigestprovider">AuthDigestProvider</a></li>
    64  <li><img alt="" src="../images/down.gif" /> <a href="#authdigestqop">AuthDigestQop</a></li>
    65  <li><img alt="" src="../images/down.gif" /> <a href="#authdigestshmemsize">AuthDigestShmemSize</a></li>
    66  </ul>
    67  <h3>See also</h3>
    68  <ul class="seealso">
    69  <li><code class="directive"><a href="../mod/core.html#authname">AuthName</a></code></li>
    70  <li><code class="directive"><a href="../mod/core.html#authtype">AuthType</a></code></li>
    71  <li><code class="directive"><a href="../mod/core.html#require">Require</a></code></li>
    72  <li><code class="directive"><a href="../mod/core.html#satisfy">Satisfy</a></code></li>
    73  <li><a href="../howto/auth.html">Authentication howto</a></li>
    74  </ul><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div>
    75  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
    76  <div class="section">
    77  <h2><a name="using" id="using">Using Digest Authentication</a></h2>
    78  
    79      <p>Using MD5 Digest authentication is very simple. Simply set
    80      up authentication normally, using <code>AuthType Digest</code> and
    81      <code class="directive"><a href="#authdigestprovider">AuthDigestProvider</a></code>
    82      instead of the normal <code>AuthType Basic</code> and
    83      <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code>.
    84      Then add a <code class="directive"><a href="#authdigestdomain">AuthDigestDomain</a></code> directive containing at least the root
    85      URI(s) for this protection space.</p>
    86  
    87      <p>Appropriate user (text) files can be created using the
    88      <code class="program"><a href="../programs/htdigest.html">htdigest</a></code> tool.</p>
    89  
    90      <div class="example"><h3>Example:</h3><p><code>
    91        &lt;Location /private/&gt;<br />
    92        <span class="indent">
    93          AuthType Digest<br />
    94          AuthName "private area"<br />
    95          AuthDigestDomain /private/ http://mirror.my.dom/private2/<br />
    96  	<br />
    97  	AuthDigestProvider file<br />
    98          AuthUserFile /web/auth/.digest_pw<br />
    99          Require valid-user<br />
   100        </span>
   101        &lt;/Location&gt;
   102      </code></p></div>
   103  
   104      <div class="note"><h3>Note</h3> 
   105      <p>Digest authentication was intended to be more secure than basic
   106      authentication, but no longer fulfills that design goal. A
   107      man-in-the-middle attacker can trivially force the browser to downgrade
   108      to basic authentication. And even a passive eavesdropper can brute-force
   109      the password using today's graphics hardware, because the hashing
   110      algorithm used by digest authentication is too fast. Another problem is
   111      that the storage of the passwords on the server is insecure. The contents
   112      of a stolen htdigest file can be used directly for digest authentication.
   113      Therefore using <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> to encrypt the whole connection is
   114      strongly recommended.</p>
   115      </div>
   116  </div>
   117  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   118  <div class="directive-section"><h2><a name="AuthDigestAlgorithm" id="AuthDigestAlgorithm">AuthDigestAlgorithm</a> <a name="authdigestalgorithm" id="authdigestalgorithm">Directive</a></h2>
   119  <table class="directive">
   120  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Selects the algorithm used to calculate the challenge and
   121  response hashes in digest authentication</td></tr>
   122  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDigestAlgorithm MD5|MD5-sess</code></td></tr>
   123  <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthDigestAlgorithm MD5</code></td></tr>
   124  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
   125  <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
   126  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   127  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_digest</td></tr>
   128  </table>
   129      <p>The <code class="directive">AuthDigestAlgorithm</code> directive
   130      selects the algorithm used to calculate the challenge and response
   131      hashes.</p>
   132  
   133      <div class="note">
   134        <code>MD5-sess</code> is not correctly implemented yet.
   135      </div>
   136      
   137  
   138  </div>
   139  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   140  <div class="directive-section"><h2><a name="AuthDigestDomain" id="AuthDigestDomain">AuthDigestDomain</a> <a name="authdigestdomain" id="authdigestdomain">Directive</a></h2>
   141  <table class="directive">
   142  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>URIs that are in the same protection space for digest
   143  authentication</td></tr>
   144  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDigestDomain <var>URI</var> [<var>URI</var>] ...</code></td></tr>
   145  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
   146  <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
   147  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   148  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_digest</td></tr>
   149  </table>
   150      <p>The <code class="directive">AuthDigestDomain</code> directive allows
   151      you to specify one or more URIs which are in the same protection
   152      space (<em>i.e.</em> use the same realm and username/password info).
   153      The specified URIs are prefixes; the client will assume
   154      that all URIs "below" these are also protected by the same
   155      username/password. The URIs may be either absolute URIs (<em>i.e.</em>
   156      including a scheme, host, port, etc.) or relative URIs.</p>
   157  
   158      <p>This directive <em>should</em> always be specified and
   159      contain at least the (set of) root URI(s) for this space.
   160      Omitting to do so will cause the client to send the
   161      Authorization header for <em>every request</em> sent to this
   162      server. Apart from increasing the size of the request, it may
   163      also have a detrimental effect on performance if <code class="directive"><a href="#authdigestnccheck">AuthDigestNcCheck</a></code> is on.</p>
   164  
   165      <p>The URIs specified can also point to different servers, in
   166      which case clients (which understand this) will then share
   167      username/password info across multiple servers without
   168      prompting the user each time. </p>
   169  
   170  </div>
   171  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   172  <div class="directive-section"><h2><a name="AuthDigestNcCheck" id="AuthDigestNcCheck">AuthDigestNcCheck</a> <a name="authdigestnccheck" id="authdigestnccheck">Directive</a></h2>
   173  <table class="directive">
   174  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enables or disables checking of the nonce-count sent by the
   175  server</td></tr>
   176  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDigestNcCheck On|Off</code></td></tr>
   177  <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthDigestNcCheck Off</code></td></tr>
   178  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
   179  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   180  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_digest</td></tr>
   181  </table>
   182      <div class="note">
   183        Not implemented yet.
   184      </div>
   185      
   186  
   187  </div>
   188  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   189  <div class="directive-section"><h2><a name="AuthDigestNonceFormat" id="AuthDigestNonceFormat">AuthDigestNonceFormat</a> <a name="authdigestnonceformat" id="authdigestnonceformat">Directive</a></h2>
   190  <table class="directive">
   191  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Determines how the nonce is generated</td></tr>
   192  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDigestNonceFormat <var>format</var></code></td></tr>
   193  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
   194  <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
   195  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   196  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_digest</td></tr>
   197  </table>
   198      <div class="note">Not implemented yet.</div>
   199      
   200  
   201  </div>
   202  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   203  <div class="directive-section"><h2><a name="AuthDigestNonceLifetime" id="AuthDigestNonceLifetime">AuthDigestNonceLifetime</a> <a name="authdigestnoncelifetime" id="authdigestnoncelifetime">Directive</a></h2>
   204  <table class="directive">
   205  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>How long the server nonce is valid</td></tr>
   206  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDigestNonceLifetime <var>seconds</var></code></td></tr>
   207  <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthDigestNonceLifetime 300</code></td></tr>
   208  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
   209  <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
   210  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   211  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_digest</td></tr>
   212  </table>
   213      <p>The <code class="directive">AuthDigestNonceLifetime</code> directive
   214      controls how long the server nonce is valid. When the client
   215      contacts the server using an expired nonce the server will send
   216      back a 401 with <code>stale=true</code>. If <var>seconds</var> is
   217      greater than 0 then it specifies the amount of time for which the
   218      nonce is valid; this should probably never be set to less than 10
   219      seconds. If <var>seconds</var> is less than 0 then the nonce never
   220      expires. 
   221      </p>
   222  
   223  </div>
   224  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   225  <div class="directive-section"><h2><a name="AuthDigestProvider" id="AuthDigestProvider">AuthDigestProvider</a> <a name="authdigestprovider" id="authdigestprovider">Directive</a></h2>
   226  <table class="directive">
   227  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the authentication provider(s) for this location</td></tr>
   228  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDigestProvider <var>provider-name</var>
   229  [<var>provider-name</var>] ...</code></td></tr>
   230  <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthDigestProvider file</code></td></tr>
   231  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
   232  <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
   233  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   234  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_digest</td></tr>
   235  </table>
   236      <p>The <code class="directive">AuthDigestProvider</code> directive sets 
   237      which provider is used to authenticate the users for this location.
   238      The default <code>file</code> provider is implemented
   239      by the <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code> module.  Make sure
   240      that the chosen provider module is present in the server.</p>
   241  
   242      <p>See <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code>, <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code>, 
   243      and <code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code> for providers.</p>
   244  
   245  </div>
   246  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   247  <div class="directive-section"><h2><a name="AuthDigestQop" id="AuthDigestQop">AuthDigestQop</a> <a name="authdigestqop" id="authdigestqop">Directive</a></h2>
   248  <table class="directive">
   249  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Determines the quality-of-protection to use in digest
   250  authentication</td></tr>
   251  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDigestQop none|auth|auth-int [auth|auth-int]</code></td></tr>
   252  <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthDigestQop auth</code></td></tr>
   253  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
   254  <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
   255  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   256  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_digest</td></tr>
   257  </table>
   258      <p>The <code class="directive">AuthDigestQop</code> directive determines
   259      the <dfn>quality-of-protection</dfn> to use. <code>auth</code> will
   260      only do authentication (username/password); <code>auth-int</code> is
   261      authentication plus integrity checking (an MD5 hash of the entity
   262      is also computed and checked); <code>none</code> will cause the module
   263      to use the old RFC-2069 digest algorithm (which does not include
   264      integrity checking). Both <code>auth</code> and <code>auth-int</code> may
   265      be specified, in which the case the browser will choose which of
   266      these to use. <code>none</code> should only be used if the browser for
   267      some reason does not like the challenge it receives otherwise.</p>
   268  
   269      <div class="note">
   270        <code>auth-int</code> is not implemented yet.
   271      </div>
   272  
   273  </div>
   274  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   275  <div class="directive-section"><h2><a name="AuthDigestShmemSize" id="AuthDigestShmemSize">AuthDigestShmemSize</a> <a name="authdigestshmemsize" id="authdigestshmemsize">Directive</a></h2>
   276  <table class="directive">
   277  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The amount of shared memory to allocate for keeping track
   278  of clients</td></tr>
   279  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDigestShmemSize <var>size</var></code></td></tr>
   280  <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthDigestShmemSize 1000</code></td></tr>
   281  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
   282  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   283  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_digest</td></tr>
   284  </table>
   285      <p>The <code class="directive">AuthDigestShmemSize</code> directive defines
   286      the amount of shared memory, that will be allocated at the server
   287      startup for keeping track of clients. Note that the shared memory
   288      segment cannot be set less than the space that is necessary for
   289      tracking at least <em>one</em> client. This value is dependant on your
   290      system. If you want to find out the exact value, you may simply
   291      set <code class="directive">AuthDigestShmemSize</code> to the value of
   292      <code>0</code> and read the error message after trying to start the
   293      server.</p>
   294  
   295      <p>The <var>size</var> is normally expressed in Bytes, but you
   296      may let the number follow a <code>K</code> or an <code>M</code> to
   297      express your value as KBytes or MBytes. For example, the following
   298      directives are all equivalent:</p>
   299  
   300      <div class="example"><p><code>
   301        AuthDigestShmemSize 1048576<br />
   302        AuthDigestShmemSize 1024K<br />
   303        AuthDigestShmemSize 1M
   304      </code></p></div>
   305  
   306  </div>
   307  </div>
   308  <div class="bottomlang">
   309  <p><span>Available Languages: </span><a href="../en/mod/mod_auth_digest.html" title="English">&nbsp;en&nbsp;</a> |
   310  <a href="../fr/mod/mod_auth_digest.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
   311  <a href="../ko/mod/mod_auth_digest.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
   312  </div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comments</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
   313  <script type="text/javascript"><!--//--><![CDATA[//><!--
   314  var comments_shortname = 'httpd';
   315  var comments_identifier = 'http://httpd.apache.org/docs/2.2/mod/mod_auth_digest.html';
   316  (function(w, d) {
   317      if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
   318          d.write('<div id="comments_thread"><\/div>');
   319          var s = d.createElement('script');
   320          s.type = 'text/javascript';
   321          s.async = true;
   322          s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
   323          (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
   324      }
   325      else { 
   326          d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
   327      }
   328  })(window, document);
   329  //--><!]]></script></div><div id="footer">
   330  <p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
   331  <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
   332  if (typeof(prettyPrint) !== 'undefined') {
   333      prettyPrint();
   334  }
   335  //--><!]]></script>
   336  </body></html>