]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_auth_form.html.en
./build.sh all
[apache] / docs / manual / mod / mod_auth_form.html.en
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         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5               This file is generated from xml source: DO NOT EDIT
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7       -->
8 <title>mod_auth_form - Apache HTTP Server</title>
9 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11 <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" />
12 <script src="../style/scripts/prettify.js" type="text/javascript">
13 </script>
14
15 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
16 <body>
17 <div id="page-header">
18 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
19 <p class="apache">Apache HTTP Server Version 2.5</p>
20 <img alt="" src="../images/feather.gif" /></div>
21 <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
22 <div id="path">
23 <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.5</a> &gt; <a href="./">Modules</a></div>
24 <div id="page-content">
25 <div id="preamble"><h1>Apache Module mod_auth_form</h1>
26 <div class="toplang">
27 <p><span>Available Languages: </span><a href="../en/mod/mod_auth_form.html" title="English">&nbsp;en&nbsp;</a></p>
28 </div>
29 <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Form authentication</td></tr>
30 <tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
31 <tr><th><a href="module-dict.html#ModuleIdentifier">Module Identifier:</a></th><td>auth_form_module</td></tr>
32 <tr><th><a href="module-dict.html#SourceFile">Source File:</a></th><td>mod_auth_form.c</td></tr>
33 <tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.3 and later</td></tr></table>
34 <h3>Summary</h3>
35
36     <div class="warning"><h3>Warning</h3>
37       <p>Form authentication depends on the <code class="module"><a href="../mod/mod_session.html">mod_session</a></code>
38       modules, and these modules make use of HTTP cookies, and as such can fall
39       victim to Cross Site Scripting attacks, or expose potentially private
40       information to clients. Please ensure that the relevant risks have
41       been taken into account before enabling the session functionality on
42       your server.</p>
43     </div>
44
45     <p>This module allows the use of an HTML login form to restrict access
46     by looking up users in the given providers. HTML forms require
47     significantly more configuration than the alternatives, however an
48     HTML login form can provide a much friendlier experience for end users.
49     </p>
50
51     <p>HTTP basic authentication is provided by
52     <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code>, and HTTP digest authentication is
53     provided by <code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code>.  This module should
54     be combined with at least one authentication module
55     such as <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code> and one authorization
56     module such as <code class="module"><a href="../mod/mod_authz_user.html">mod_authz_user</a></code>.</p>
57
58     <p>Once the user has been successfully authenticated, the user's login
59     details will be stored in a session provided by <code class="module"><a href="../mod/mod_session.html">mod_session</a></code>.
60     </p>
61
62 </div>
63 <div id="quickview"><h3 class="directives">Directives</h3>
64 <ul id="toc">
65 <li><img alt="" src="../images/down.gif" /> <a href="#authformauthoritative">AuthFormAuthoritative</a></li>
66 <li><img alt="" src="../images/down.gif" /> <a href="#authformbody">AuthFormBody</a></li>
67 <li><img alt="" src="../images/down.gif" /> <a href="#authformdisablenostore">AuthFormDisableNoStore</a></li>
68 <li><img alt="" src="../images/down.gif" /> <a href="#authformfakebasicauth">AuthFormFakeBasicAuth</a></li>
69 <li><img alt="" src="../images/down.gif" /> <a href="#authformlocation">AuthFormLocation</a></li>
70 <li><img alt="" src="../images/down.gif" /> <a href="#authformloginrequiredlocation">AuthFormLoginRequiredLocation</a></li>
71 <li><img alt="" src="../images/down.gif" /> <a href="#authformloginsuccesslocation">AuthFormLoginSuccessLocation</a></li>
72 <li><img alt="" src="../images/down.gif" /> <a href="#authformlogoutlocation">AuthFormLogoutLocation</a></li>
73 <li><img alt="" src="../images/down.gif" /> <a href="#authformmethod">AuthFormMethod</a></li>
74 <li><img alt="" src="../images/down.gif" /> <a href="#authformmimetype">AuthFormMimetype</a></li>
75 <li><img alt="" src="../images/down.gif" /> <a href="#authformpassword">AuthFormPassword</a></li>
76 <li><img alt="" src="../images/down.gif" /> <a href="#authformprovider">AuthFormProvider</a></li>
77 <li><img alt="" src="../images/down.gif" /> <a href="#authformsitepassphrase">AuthFormSitePassphrase</a></li>
78 <li><img alt="" src="../images/down.gif" /> <a href="#authformsize">AuthFormSize</a></li>
79 <li><img alt="" src="../images/down.gif" /> <a href="#authformusername">AuthFormUsername</a></li>
80 </ul>
81 <h3>Topics</h3>
82 <ul id="topics">
83 <li><img alt="" src="../images/down.gif" /> <a href="#basicconfig">Basic Configuration</a></li>
84 <li><img alt="" src="../images/down.gif" /> <a href="#standalone">Standalone Login</a></li>
85 <li><img alt="" src="../images/down.gif" /> <a href="#inline">Inline Login</a></li>
86 <li><img alt="" src="../images/down.gif" /> <a href="#inlinepreservebody">Inline Login with Body Preservation</a></li>
87 <li><img alt="" src="../images/down.gif" /> <a href="#loggingout">Logging Out</a></li>
88 <li><img alt="" src="../images/down.gif" /> <a href="#urlencoding">Usernames and Passwords</a></li>
89 </ul><h3>See also</h3>
90 <ul class="seealso">
91 <li><code class="module"><a href="../mod/mod_session.html">mod_session</a></code></li>
92 <li><code class="directive"><a href="../mod/mod_authn_core.html#authname">AuthName</a></code></li>
93 <li><code class="directive"><a href="../mod/mod_authn_core.html#authtype">AuthType</a></code></li>
94 <li><code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code></li>
95 <li><a href="../howto/auth.html">Authentication howto</a></li>
96 </ul></div>
97 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
98 <div class="section">
99 <h2><a name="basicconfig" id="basicconfig">Basic Configuration</a></h2>
100
101       <p>To protect a particular URL with <code class="module"><a href="../mod/mod_auth_form.html">mod_auth_form</a></code>, you need to
102       decide where you will store your <var>session</var>, and you will need to
103       decide what method you will use to authenticate. In this simple example, the
104       login details will be stored in a session based on
105       <code class="module"><a href="../mod/mod_session_cookie.html">mod_session_cookie</a></code>, and authentication will be attempted against
106       a file using <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code>. If authentication is unsuccessful,
107       the user will be redirected to the form login page.</p>
108
109       <div class="example"><h3>Basic example</h3><p><code>
110       <pre class="prettyprint lang-config">
111 AuthFormProvider file
112 AuthUserFile conf/passwd
113 AuthType form
114 AuthName realm
115 AuthFormLoginRequiredLocation http://example.com/login.html
116 Session On
117 SessionCookieName session path=/
118 SessionCryptoPassphrase secret
119         </pre>
120
121       </code></p></div>
122
123       <p>The directive <code class="directive"><a href="../mod/mod_authn_core.html#authtype">AuthType</a></code> will enable
124       the <code class="module"><a href="../mod/mod_auth_form.html">mod_auth_form</a></code> authentication when set to the value <var>form</var>.
125       The directives <code class="directive"><a href="#authformprovider">AuthFormProvider</a></code> and
126       <code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code> specify that usernames
127       and passwords should be checked against the chosen file.</p>
128
129       <p>The directives <code class="directive"><a href="../mod/mod_session.html#session">Session</a></code>,
130       <code class="directive"><a href="../mod/mod_session_cookie.html#sessioncookiename">SessionCookieName</a></code> and
131       <code class="directive"><a href="../mod/mod_session_crypto.html#sessioncryptopassphrase">SessionCryptoPassphrase</a></code> create an
132       encrypted session stored within an HTTP cookie on the browser. For more information
133       on the different options for configuring a session, read the documentation for
134       <code class="module"><a href="../mod/mod_session.html">mod_session</a></code>.</p>
135
136       <p>In the simple example above, a URL has been protected by
137       <code class="module"><a href="../mod/mod_auth_form.html">mod_auth_form</a></code>, but the user has yet to be given an opportunity to
138       enter their username and password. Options for doing so include providing a
139       dedicated standalone login page for this purpose, or for providing the login
140       page inline.</p>
141     </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
142 <div class="section">
143 <h2><a name="standalone" id="standalone">Standalone Login</a></h2>
144
145       <p>The login form can be hosted as a standalone page, or can be provided inline on
146       the same page.</p>
147
148       <p>When configuring the login as a standalone page, unsuccessful authentication
149       attempts should be redirected to a login form created by the website for this purpose,
150       using the <code class="directive"><a href="#authformloginrequiredlocation">AuthFormLoginRequiredLocation</a></code>
151       directive. Typically this login page will contain an HTML form, asking the user to
152       provide their usename and password.</p>
153
154       <div class="example"><h3>Example login form</h3><p><code>
155         &lt;form method="POST" action="/dologin.html"&gt;<br />
156         Username: &lt;input type="text" name="httpd_username" value="" /&gt;<br />
157         Password: &lt;input type="password" name="httpd_password" value="" /&gt;<br />
158         &lt;input type="submit" name="login" value="Login" /&gt;<br />
159         &lt;/form&gt;<br />
160       </code></p></div>
161
162       <p>The part that does the actual login is handled by the <var>form-login-handler</var>.
163       The action of the form should point at this handler, which is configured within
164       Apache httpd as follows:</p>
165
166       <div class="example"><h3>Form login handler example</h3><p><code>
167       <pre class="prettyprint lang-config">
168 &lt;Location /dologin.html&gt;
169     SetHandler form-login-handler
170     AuthFormLoginRequiredLocation http://example.com/login.html
171     AuthFormLoginSuccessLocation http://example.com/success.html
172     AuthFormProvider file
173     AuthUserFile conf/passwd
174     AuthType form
175     AuthName realm
176     Session On
177     SessionCookieName session path=/
178     SessionCryptoPassphrase secret
179 &lt;/Location&gt;
180         </pre>
181
182       </code></p></div>
183
184       <p>The URLs specified by the
185       <code class="directive"><a href="#authformloginrequiredlocation">AuthFormLoginRequiredLocation</a></code> directive will typically
186       point to a page explaining to the user that their login attempt was unsuccessful, and they
187       should try again.  The <code class="directive"><a href="#authformloginsuccesslocation">AuthFormLoginSuccessLocation</a></code>
188       directive specifies the URL the user should be redirected to upon successful login.</p>
189
190       <p>Alternatively, the URL to redirect the user to on success can be embedded within the login
191       form, as in the example below. As a result, the same <var>form-login-handler</var> can be
192       reused for different areas of a website.</p>
193
194       <div class="example"><h3>Example login form with location</h3><p><code>
195         &lt;form method="POST" action="/dologin.html"&gt;<br />
196         <span class="indent">
197           Username: &lt;input type="text" name="httpd_username" value="" /&gt;<br />
198           Password: &lt;input type="password" name="httpd_password" value="" /&gt;<br />
199           &lt;input type="submit" name="login" value="Login" /&gt;<br />
200           &lt;input type="hidden" name="httpd_location" value="http://example.com/success.html" /&gt;<br />
201         </span>
202         &lt;/form&gt;<br />
203       </code></p></div>
204
205     </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
206 <div class="section">
207 <h2><a name="inline" id="inline">Inline Login</a></h2>
208
209       <div class="warning"><h3>Warning</h3>
210         <p>A risk exists that under certain circumstances, the login form configured
211         using inline login may be submitted more than once, revealing login credentials to
212         the application running underneath. The administrator must ensure that the underlying
213         application is properly secured to prevent abuse. If in doubt, use the
214         standalone login configuration.</p>
215       </div>
216
217       <p>As an alternative to having a dedicated login page for a website, it is possible to
218       configure <code class="module"><a href="../mod/mod_auth_form.html">mod_auth_form</a></code> to authenticate users inline, without being
219       redirected to another page. This allows the state of the current page to be preserved
220       during the login attempt. This can be useful in a situation where a time limited
221       session is in force, and the session times out in the middle of the user request. The
222       user can be re-authenticated in place, and they can continue where they left off.</p>
223
224       <p>If a non-authenticated user attempts to access a page protected by
225       <code class="module"><a href="../mod/mod_auth_form.html">mod_auth_form</a></code> that isn't configured with a
226       <code class="directive"><a href="#authformloginrequiredlocation">AuthFormLoginRequiredLocation</a></code> directive,
227       a <var>HTTP_UNAUTHORIZED</var> status code is returned to the browser indicating to the user
228       that they are not authorized to view the page.</p>
229
230       <p>To configure inline authentication, the administrator overrides the error document
231       returned by the <var>HTTP_UNAUTHORIZED</var> status code with a custom error document
232       containing the login form, as follows:</p>
233
234       <div class="example"><h3>Basic inline example</h3><p><code>
235       <pre class="prettyprint lang-config">
236 AuthFormProvider file
237 ErrorDocument 401 /login.shtml
238 AuthUserFile conf/passwd
239 AuthType form
240 AuthName realm
241 AuthFormLoginRequiredLocation http://example.com/login.html
242 Session On
243 SessionCookieName session path=/
244 SessionCryptoPassphrase secret
245         </pre>
246
247       </code></p></div>
248
249       <p>The error document page should contain a login form with an empty action property,
250       as per the example below.  This has the effect of submitting the form to
251       the original protected URL, without the page having to know what that
252       URL is.</p>
253
254       <div class="example"><h3>Example inline login form</h3><p><code>
255         &lt;form method="POST" <strong>action=""</strong>&gt;<br />
256         <span class="indent">
257           Username: &lt;input type="text" name="httpd_username" value="" /&gt;<br />
258           Password: &lt;input type="password" name="httpd_password" value="" /&gt;<br />
259           &lt;input type="submit" name="login" value="Login" /&gt;<br />
260         </span>
261         &lt;/form&gt;<br />
262       </code></p></div>
263
264       <p>When the end user has filled in their login details, the form will make
265       an HTTP POST request to the original password protected URL.
266       <code class="module"><a href="../mod/mod_auth_form.html">mod_auth_form</a></code> will intercept this POST request, and if
267       HTML fields are found present for the username and password, the user
268       will be logged in, and the original password protected URL will be returned
269       to the user as a GET request.</p>
270
271     </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
272 <div class="section">
273 <h2><a name="inlinepreservebody" id="inlinepreservebody">Inline Login with Body Preservation</a></h2>
274
275       <p>A limitation of the inline login technique described above is that should an
276       HTML form POST have resulted in the request to authenticate or
277       reauthenticate, the
278       contents of the original form posted by the browser will be lost. Depending on
279       the function of the website, this could present significant inconvenience for the
280       end user.</p>
281
282       <p><code class="module"><a href="../mod/mod_auth_form.html">mod_auth_form</a></code> addresses this by allowing the method and body
283       of the original request to be embedded in the login form. If authentication
284       is successful, the original method and body will be retried by Apache httpd, preserving
285       the state of the original request.</p>
286
287       <p>To enable body preservation, add three additional fields to the login form as
288       per the example below.</p>
289
290       <div class="example"><h3>Example with body preservation</h3><p><code>
291         &lt;form method="POST" action=""&gt;<br />
292         <span class="indent">
293           Username: &lt;input type="text" name="httpd_username" value="" /&gt;<br />
294           Password: &lt;input type="password" name="httpd_password" value="" /&gt;<br />
295           &lt;input type="submit" name="login" value="Login" /&gt;<br />
296           <strong>&lt;input type="hidden" name="httpd_method" value="POST" /&gt;<br />
297           &lt;input type="hidden" name="httpd_mimetype" value="application/x-www-form-urlencoded" /&gt;<br />
298           &lt;input type="hidden" name="httpd_body" value="name1=value1&amp;name2=value2" /&gt;</strong><br />
299         </span>
300         &lt;/form&gt;
301       </code></p></div>
302
303       <p>How the method, mimetype and body of the original request are embedded within the
304       login form will depend on the platform and technology being used within the website.
305       </p>
306
307       <p>One option is to use the <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> module along with the
308       <code class="directive"><a href="../mod/mod_request.html#keptbodysize">KeptBodySize</a></code> directive, along with a suitable
309       CGI script to embed the variables in the form.</p>
310
311       <p>Another option is to render the login form using a CGI script or other dynamic
312       technology.</p>
313
314       <div class="example"><h3>CGI example</h3><p><code>
315       <pre class="prettyprint lang-config">
316         AuthFormProvider file
317         <strong>ErrorDocument 401 /cgi-bin/login.cgi</strong>
318         ...
319         </pre>
320
321       </code></p></div>
322
323     </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
324 <div class="section">
325 <h2><a name="loggingout" id="loggingout">Logging Out</a></h2>
326
327       <p>To enable a user to log out of a particular session, configure a page to
328       be handled by the <var>form-logout-handler</var>. Any attempt to access this
329       URL will cause the username and password to be removed from the current
330       session, effectively logging the user out.</p>
331
332       <p>By setting the
333       <code class="directive"><a href="#authformlogoutlocation">AuthFormLogoutLocation</a></code> directive,
334       a URL can be specified that the browser will be redirected to on successful
335       logout. This URL might explain to the user that they have been logged out, and
336       give the user the option to log in again.</p>
337
338       <div class="example"><h3>Basic logout example</h3><p><code>
339       <pre class="prettyprint lang-config">
340 SetHandler form-logout-handler
341 AuthName realm
342 AuthFormLogoutLocation http://example.com/loggedout.html
343 Session On
344 SessionCookieName session path=/
345 SessionCryptoPassphrase secret
346         </pre>
347
348       </code></p></div>
349
350       <p>Note that logging a user out does not delete the session; it merely removes
351       the username and password from the session. If this results in an empty session,
352       the net effect will be the removal of that session, but this is not
353       guaranteed. If you want to guarantee the removal of a session, set the
354       <code class="directive"><a href="../mod/mod_session.html#sessionmaxage">SessionMaxAge</a></code> directive to a small
355       value, like 1 (setting the directive to zero would mean no session age limit).
356       </p>
357
358       <div class="example"><h3>Basic session expiry example</h3><p><code>
359       <pre class="prettyprint lang-config">
360 SetHandler form-logout-handler
361 AuthFormLogoutLocation http://example.com/loggedout.html
362 Session On
363 SessionMaxAge 1
364 SessionCookieName session path=/
365 SessionCryptoPassphrase secret
366         </pre>
367
368       </code></p></div>
369
370     </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
371 <div class="section">
372 <h2><a name="urlencoding" id="urlencoding">Usernames and Passwords</a></h2>
373     <p>Note that form submission involves URLEncoding the form data:
374     in this case the username and password.  You should therefore
375     pick usernames and passwords that avoid characters that are
376     URLencoded in form submission, or you may get unexpected results.</p>
377     </div>
378 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
379 <div class="directive-section"><h2><a name="AuthFormAuthoritative" id="AuthFormAuthoritative">AuthFormAuthoritative</a> <a name="authformauthoritative" id="authformauthoritative">Directive</a></h2>
380 <table class="directive">
381 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets whether authorization and authentication are passed to
382 lower level modules</td></tr>
383 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthFormAuthoritative On|Off</code></td></tr>
384 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthFormAuthoritative On</code></td></tr>
385 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
386 <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
387 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
388 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_form</td></tr>
389 </table>
390     <p>Normally, each authorization module listed in <code class="directive"><a href="#authformprovider">AuthFormProvider</a></code> will attempt
391     to verify the user, and if the user is not found in any provider,
392     access will be denied. Setting the
393     <code class="directive">AuthFormAuthoritative</code> directive explicitly
394     to <code>Off</code> allows for both authentication and
395     authorization to be passed on to other non-provider-based modules
396     if there is <strong>no userID</strong> or <strong>rule</strong>
397     matching the supplied userID.  This should only be necessary when
398     combining <code class="module"><a href="../mod/mod_auth_form.html">mod_auth_form</a></code> with third-party modules
399     that are not configured with the <code class="directive"><a href="#authformprovider">AuthFormProvider</a></code>
400     directive.  When using such modules, the order of processing
401     is determined in the modules' source code and is not configurable.</p>
402
403 </div>
404 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
405 <div class="directive-section"><h2><a name="AuthFormBody" id="AuthFormBody">AuthFormBody</a> <a name="authformbody" id="authformbody">Directive</a></h2>
406 <table class="directive">
407 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The name of a form field carrying the body of the request to attempt on successful login</td></tr>
408 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthFormBody <var>fieldname</var></code></td></tr>
409 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>httpd_body</code></td></tr>
410 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory</td></tr>
411 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
412 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_form</td></tr>
413 <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache HTTP Server 2.3.0 and later</td></tr>
414 </table>
415     <p>The <code class="directive"><a href="#authformmethod">AuthFormMethod</a></code> directive specifies
416     the name of an HTML field which, if present, will contain the method of the request to
417     to submit should login be successful.</p>
418
419     <p>By populating the form with fields described by
420     <code class="directive"><a href="#authformmethod">AuthFormMethod</a></code>,
421     <code class="directive"><a href="#authformmimetype">AuthFormMimetype</a></code> and
422     <code class="directive"><a href="#authformbody">AuthFormBody</a></code>, a website can retry
423     a request that may have been interrupted by the login screen, or by a session
424     timeout.</p>
425
426 </div>
427 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
428 <div class="directive-section"><h2><a name="AuthFormDisableNoStore" id="AuthFormDisableNoStore">AuthFormDisableNoStore</a> <a name="authformdisablenostore" id="authformdisablenostore">Directive</a></h2>
429 <table class="directive">
430 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Disable the CacheControl no-store header on the login page</td></tr>
431 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthFormDisableNoStore <var>On|Off</var></code></td></tr>
432 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthFormDisableNoStore Off</code></td></tr>
433 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory</td></tr>
434 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
435 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_form</td></tr>
436 <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache HTTP Server 2.3.0 and later</td></tr>
437 </table>
438     <p>The <code class="directive"><a href="#authformdisablenostore">AuthFormDisableNoStore</a></code> flag
439     disables the sending of a <code>Cache-Control no-store</code> header with the
440     error 401 page returned when the user is not yet logged in. The purpose of the header
441     is to make it difficult for an ecmascript application to attempt to resubmit the
442     login form, and reveal the username and password to the backend application. Disable
443     at your own risk.</p>
444
445
446 </div>
447 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
448 <div class="directive-section"><h2><a name="AuthFormFakeBasicAuth" id="AuthFormFakeBasicAuth">AuthFormFakeBasicAuth</a> <a name="authformfakebasicauth" id="authformfakebasicauth">Directive</a></h2>
449 <table class="directive">
450 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Fake a Basic Authentication header</td></tr>
451 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthFormFakeBasicAuth <var>On|Off</var></code></td></tr>
452 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthFormFakeBasicAuth Off</code></td></tr>
453 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory</td></tr>
454 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
455 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_form</td></tr>
456 <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache HTTP Server 2.3.0 and later</td></tr>
457 </table>
458     <p>The <code class="directive"><a href="#authformfakebasicauth">AuthFormFakeBasicAuth</a></code> flag
459     determines whether a <code>Basic Authentication</code> header will be added to
460     the request headers. This can be used to expose the username and password to
461     an underlying application, without the underlying application having to be aware
462     of how the login was achieved.</p>
463
464
465 </div>
466 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
467 <div class="directive-section"><h2><a name="AuthFormLocation" id="AuthFormLocation">AuthFormLocation</a> <a name="authformlocation" id="authformlocation">Directive</a></h2>
468 <table class="directive">
469 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The name of a form field carrying a URL to redirect to on successful login</td></tr>
470 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthFormLocation <var>fieldname</var></code></td></tr>
471 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>httpd_location</code></td></tr>
472 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory</td></tr>
473 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
474 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_form</td></tr>
475 <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache HTTP Server 2.3.0 and later</td></tr>
476 </table>
477     <p>The <code class="directive"><a href="#authformlocation">AuthFormLocation</a></code> directive specifies
478     the name of an HTML field which, if present, will contain a URL to redirect the browser to
479     should login be successful.</p>
480
481 </div>
482 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
483 <div class="directive-section"><h2><a name="AuthFormLoginRequiredLocation" id="AuthFormLoginRequiredLocation">AuthFormLoginRequiredLocation</a> <a name="authformloginrequiredlocation" id="authformloginrequiredlocation">Directive</a></h2>
484 <table class="directive">
485 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The URL of the page to be redirected to should login be required</td></tr>
486 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthFormLoginRequiredLocation <var>url</var></code></td></tr>
487 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>none</code></td></tr>
488 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory</td></tr>
489 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
490 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_form</td></tr>
491 <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache HTTP Server 2.3.0 and later</td></tr>
492 </table>
493     <p>The <code class="directive"><a href="#authformloginrequiredlocation">AuthFormLoginRequiredLocation</a></code> directive
494     specifies the URL to redirect to should the user not be authorised to view a page. By default,
495     if a user is not authorised to view a page, the HTTP response code <code>HTTP_UNAUTHORIZED</code>
496     will be returned with the page specified by the
497     <code class="directive"><a href="../mod/core.html#errordocument">ErrorDocument</a></code> directive. This directive overrides this
498     default.</p>
499
500     <p>Use this directive if you have a dedicated login page to redirect users to.</p>
501
502
503 </div>
504 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
505 <div class="directive-section"><h2><a name="AuthFormLoginSuccessLocation" id="AuthFormLoginSuccessLocation">AuthFormLoginSuccessLocation</a> <a name="authformloginsuccesslocation" id="authformloginsuccesslocation">Directive</a></h2>
506 <table class="directive">
507 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The URL of the page to be redirected to should login be successful</td></tr>
508 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthFormLoginSuccessLocation <var>url</var></code></td></tr>
509 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>none</code></td></tr>
510 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory</td></tr>
511 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
512 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_form</td></tr>
513 <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache HTTP Server 2.3.0 and later</td></tr>
514 </table>
515     <p>The <code class="directive"><a href="#authformloginsuccesslocation">AuthFormLoginSuccessLocation</a></code> directive
516     specifies the URL to redirect to should the user have logged in successfully. This directive
517     can be overridden if a form field has been defined containing another URL using the
518     <code class="directive"><a href="#authformlocation">AuthFormLocation</a></code> directive.</p>
519
520     <p>Use this directive if you have a dedicated login URL, and you have not embedded the
521     destination page in the login form.</p>
522
523
524 </div>
525 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
526 <div class="directive-section"><h2><a name="AuthFormLogoutLocation" id="AuthFormLogoutLocation">AuthFormLogoutLocation</a> <a name="authformlogoutlocation" id="authformlogoutlocation">Directive</a></h2>
527 <table class="directive">
528 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The URL to redirect to after a user has logged out</td></tr>
529 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthFormLogoutLocation <var>uri</var></code></td></tr>
530 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>none</code></td></tr>
531 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory</td></tr>
532 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
533 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_form</td></tr>
534 <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache HTTP Server 2.3.0 and later</td></tr>
535 </table>
536     <p>The <code class="directive"><a href="#authformlogoutlocation">AuthFormLogoutLocation</a></code> directive
537     specifies the URL of a page on the server to redirect to should the user attempt to log out.</p>
538
539     <p>When a URI is accessed that is served by the handler <code>form-logout-handler</code>,
540     the page specified by this directive will be shown to the end user. For example:</p>
541
542     <div class="example"><h3>Example</h3><p><code>
543     <pre class="prettyprint lang-config">
544 &lt;Location /logout&gt;
545     SetHandler form-logout-handler
546     AuthFormLogoutLocation http://example.com/loggedout.html
547     Session on
548     #...
549 &lt;/Location&gt;
550       </pre>
551
552     </code></p></div>
553
554     <p>An attempt to access the URI <var>/logout/</var> will result in the user being logged
555     out, and the page <var>/loggedout.html</var> will be displayed. Make sure that the page
556     <var>loggedout.html</var> is not password protected, otherwise the page will not be
557     displayed.</p>
558
559
560 </div>
561 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
562 <div class="directive-section"><h2><a name="AuthFormMethod" id="AuthFormMethod">AuthFormMethod</a> <a name="authformmethod" id="authformmethod">Directive</a></h2>
563 <table class="directive">
564 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The name of a form field carrying the method of the request to attempt on successful login</td></tr>
565 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthFormMethod <var>fieldname</var></code></td></tr>
566 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>httpd_method</code></td></tr>
567 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory</td></tr>
568 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
569 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_form</td></tr>
570 <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache HTTP Server 2.3.0 and later</td></tr>
571 </table>
572     <p>The <code class="directive"><a href="#authformmethod">AuthFormMethod</a></code> directive specifies
573     the name of an HTML field which, if present, will contain the method of the request to
574     to submit should login be successful.</p>
575
576     <p>By populating the form with fields described by
577     <code class="directive"><a href="#authformmethod">AuthFormMethod</a></code>,
578     <code class="directive"><a href="#authformmimetype">AuthFormMimetype</a></code> and
579     <code class="directive"><a href="#authformbody">AuthFormBody</a></code>, a website can retry
580     a request that may have been interrupted by the login screen, or by a session
581     timeout.</p>
582
583 </div>
584 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
585 <div class="directive-section"><h2><a name="AuthFormMimetype" id="AuthFormMimetype">AuthFormMimetype</a> <a name="authformmimetype" id="authformmimetype">Directive</a></h2>
586 <table class="directive">
587 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The name of a form field carrying the mimetype of the body of the request to attempt on successful login</td></tr>
588 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthFormMimetype <var>fieldname</var></code></td></tr>
589 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>httpd_mimetype</code></td></tr>
590 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory</td></tr>
591 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
592 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_form</td></tr>
593 <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache HTTP Server 2.3.0 and later</td></tr>
594 </table>
595     <p>The <code class="directive"><a href="#authformmethod">AuthFormMethod</a></code> directive specifies
596     the name of an HTML field which, if present, will contain the
597     mimetype of the request to to submit should login be successful.</p>
598
599     <p>By populating the form with fields described by
600     <code class="directive"><a href="#authformmethod">AuthFormMethod</a></code>,
601     <code class="directive"><a href="#authformmimetype">AuthFormMimetype</a></code> and
602     <code class="directive"><a href="#authformbody">AuthFormBody</a></code>, a website can retry
603     a request that may have been interrupted by the login screen, or by a session
604     timeout.</p>
605
606 </div>
607 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
608 <div class="directive-section"><h2><a name="AuthFormPassword" id="AuthFormPassword">AuthFormPassword</a> <a name="authformpassword" id="authformpassword">Directive</a></h2>
609 <table class="directive">
610 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The name of a form field carrying the login password</td></tr>
611 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthFormPassword <var>fieldname</var></code></td></tr>
612 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>httpd_password</code></td></tr>
613 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory</td></tr>
614 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
615 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_form</td></tr>
616 <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache HTTP Server 2.3.0 and later</td></tr>
617 </table>
618     <p>The <code class="directive"><a href="#authformpassword">AuthFormPassword</a></code> directive specifies
619     the name of an HTML field which, if present, will contain the password to be used to log
620     in.</p>
621
622 </div>
623 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
624 <div class="directive-section"><h2><a name="AuthFormProvider" id="AuthFormProvider">AuthFormProvider</a> <a name="authformprovider" id="authformprovider">Directive</a></h2>
625 <table class="directive">
626 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the authentication provider(s) for this location</td></tr>
627 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthFormProvider <var>provider-name</var>
628 [<var>provider-name</var>] ...</code></td></tr>
629 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthFormProvider file</code></td></tr>
630 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
631 <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
632 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
633 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_form</td></tr>
634 </table>
635     <p>The <code class="directive">AuthFormProvider</code> directive sets
636     which provider is used to authenticate the users for this location.
637     The default <code>file</code> provider is implemented
638     by the <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code> module.  Make sure
639     that the chosen provider module is present in the server.</p>
640
641     <div class="example"><h3>Example</h3><p><code>
642     <pre class="prettyprint lang-config">
643 &lt;Location /secure&gt;
644     AuthType form
645     AuthName "private area"
646     AuthFormProvider  dbm
647     AuthDBMType        SDBM
648     AuthDBMUserFile    /www/etc/dbmpasswd
649     Require            valid-user
650     #...
651 &lt;/Location&gt;
652       </pre>
653
654     </code></p></div>
655
656     <p>Providers are implemented by <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code>,
657     <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code>, <code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code>,
658     <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> and <code class="module"><a href="../mod/mod_authn_socache.html">mod_authn_socache</a></code>.</p>
659
660 </div>
661 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
662 <div class="directive-section"><h2><a name="AuthFormSitePassphrase" id="AuthFormSitePassphrase">AuthFormSitePassphrase</a> <a name="authformsitepassphrase" id="authformsitepassphrase">Directive</a></h2>
663 <table class="directive">
664 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Bypass authentication checks for high traffic sites</td></tr>
665 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthFormSitePassphrase <var>secret</var></code></td></tr>
666 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>none</code></td></tr>
667 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory</td></tr>
668 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
669 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_form</td></tr>
670 <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache HTTP Server 2.3.0 and later</td></tr>
671 </table>
672     <p>The <code class="directive"><a href="#authformsitepassphrase">AuthFormSitePassphrase</a></code> directive
673     specifies a passphrase which, if present in the user session, causes Apache httpd to
674     bypass authentication checks for the given URL. It can be used on high traffic websites
675     to reduce the load induced on authentication infrastructure.</p>
676
677     <p>The passphrase can be inserted into a user session by adding this directive to the
678     configuration for the <var>form-login-handler</var>. The <var>form-login-handler</var>
679     itself will always run the authentication checks, regardless of whether a passphrase
680     is specified or not.</p>
681
682     <div class="warning"><h3>Warning</h3>
683       <p>If the session is exposed to the user through the use of
684       <code class="module"><a href="../mod/mod_session_cookie.html">mod_session_cookie</a></code>, and the session is not protected with
685       <code class="module"><a href="../mod/mod_session_crypto.html">mod_session_crypto</a></code>, the passphrase is open to potential exposure
686       through a dictionary attack. Regardless of how the session is configured,
687       ensure that this directive is not used within URL spaces where private user data
688       could be exposed, or sensitive transactions can be conducted. Use at own risk.</p>
689     </div>
690
691
692 </div>
693 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
694 <div class="directive-section"><h2><a name="AuthFormSize" id="AuthFormSize">AuthFormSize</a> <a name="authformsize" id="authformsize">Directive</a></h2>
695 <table class="directive">
696 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The largest size of the form in bytes that will be parsed for the login details</td></tr>
697 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthFormBody <var>size</var></code></td></tr>
698 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>8192</code></td></tr>
699 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory</td></tr>
700 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
701 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_form</td></tr>
702 <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache HTTP Server 2.3.0 and later</td></tr>
703 </table>
704     <p>The <code class="directive"><a href="#authformsize">AuthFormSize</a></code> directive specifies
705     the maximum size of the body of the request that will be parsed to find the login form.</p>
706
707     <p>If a login request arrives that exceeds this size, the whole request will be aborted
708     with the HTTP response code <code>HTTP_REQUEST_TOO_LARGE</code>.</p>
709
710     <p>If you have populated the form with fields described by
711     <code class="directive"><a href="#authformmethod">AuthFormMethod</a></code>,
712     <code class="directive"><a href="#authformmimetype">AuthFormMimetype</a></code> and
713     <code class="directive"><a href="#authformbody">AuthFormBody</a></code>, you probably want to set this
714     field to a similar size as the <code class="directive"><a href="../mod/mod_request.html#keptbodysize">KeptBodySize</a></code>
715     directive.</p>
716
717
718 </div>
719 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
720 <div class="directive-section"><h2><a name="AuthFormUsername" id="AuthFormUsername">AuthFormUsername</a> <a name="authformusername" id="authformusername">Directive</a></h2>
721 <table class="directive">
722 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The name of a form field carrying the login username</td></tr>
723 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthFormUsername <var>fieldname</var></code></td></tr>
724 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>httpd_username</code></td></tr>
725 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory</td></tr>
726 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
727 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_form</td></tr>
728 <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache HTTP Server 2.3.0 and later</td></tr>
729 </table>
730     <p>The <code class="directive"><a href="#authformusername">AuthFormUsername</a></code> directive specifies
731     the name of an HTML field which, if present, will contain the username to be used to log
732     in.</p>
733
734 </div>
735 </div>
736 <div class="bottomlang">
737 <p><span>Available Languages: </span><a href="../en/mod/mod_auth_form.html" title="English">&nbsp;en&nbsp;</a></p>
738 </div><div id="footer">
739 <p class="apache">Copyright 2012 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>
740 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div><script type="text/javascript">
741     if (typeof(prettyPrint) !== undefined) {
742         prettyPrint();
743     }
744 </script>
745 </body></html>