<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
<!-- $LastChangedRevision$ -->

<!--
 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_form.xml.meta">

<name>mod_auth_form</name>
<description>Form authentication</description>
<status>Base</status>
<sourcefile>mod_auth_form.c</sourcefile>
<identifier>auth_form_module</identifier>
<compatibility>Available in Apache 2.3 and later</compatibility>

<summary>
    <note type="warning"><title>Warning</title>
      <p>Form authentication depends on the <module>mod_session</module>
      modules, and these modules make use of HTTP cookies, and as such can fall
      victim to Cross Site Scripting attacks, or expose potentially private
      information to clients. Please ensure that the relevant risks have
      been taken into account before enabling the session functionality on
      your server.</p>
    </note>

    <p>This module allows the use of an HTML login form to restrict access
    by looking up users in the given providers. HTML forms require
    significantly more configuration than the alternatives, however an
    HTML login form can provide a much friendlier experience for end users.
    </p>

    <p>HTTP basic authentication is provided by
    <module>mod_auth_basic</module>, and HTTP digest authentication is
    provided by <module>mod_auth_digest</module>.  This module should
    be combined with at least one authentication module
    such as <module>mod_authn_file</module> and one authorization
    module such as <module>mod_authz_user</module>.</p>

    <p>Once the user has been successfully authenticated, the user's login
    details will be stored in a session provided by <module>mod_session</module>.
    </p>

</summary>
<seealso><module>mod_session</module></seealso>
<seealso><directive module="mod_authn_core">AuthName</directive></seealso>
<seealso><directive module="mod_authn_core">AuthType</directive></seealso>
<seealso><directive module="mod_authz_core">Require</directive></seealso>
<seealso><a href="../howto/auth.html">Authentication howto</a></seealso>

    <section id="basicconfig"><title>Basic Configuration</title>

      <p>To protect a particular URL with <module>mod_auth_form</module>, you need to
      decide where you will store your <var>session</var>, and you will need to
      decide what method you will use to authenticate. In this simple example, the
      login details will be stored in a session based on
      <module>mod_session_cookie</module>, and authentication will be attempted against
      a file using <module>mod_authn_file</module>. If authentication is unsuccessful,
      the user will be redirected to the form login page.</p>

      <example><title>Basic example</title>
      <highlight language="config">
&lt;Location "/admin"&gt;
    AuthFormProvider file
    AuthUserFile "conf/passwd"
    AuthType form
    AuthName "/admin"
    AuthFormLoginRequiredLocation "http://example.com/login.html"

    Session On
    SessionCookieName session path=/

    Require valid-user
&lt;/Location&gt;
        </highlight>
      </example>

      <p>The directive <directive module="mod_authn_core">AuthType</directive> will enable
      the <module>mod_auth_form</module> authentication when set to the value <var>form</var>.
      The directives <directive module="mod_auth_form">AuthFormProvider</directive> and
      <directive module="mod_authn_file">AuthUserFile</directive> specify that usernames
      and passwords should be checked against the chosen file.</p>

      <p>The directives <directive module="mod_session">Session</directive> and
      <directive module="mod_session_cookie">SessionCookieName</directive> 
      session stored within an HTTP cookie on the browser. For more information
      on the different options for configuring a session, read the documentation for
      <module>mod_session</module>.</p>

      <p>You can optionally add a 
      <directive module="mod_session_crypto">SessionCryptoPassphrase</directive> to 
      create an encrypted session cookie. This required the additional
      module <module>mod_session_crypto</module> be loaded.</p>

      <p>In the simple example above, a URL has been protected by
      <module>mod_auth_form</module>, but the user has yet to be given an opportunity to
      enter their username and password. Options for doing so include providing a
      dedicated standalone login page for this purpose, or for providing the login
      page inline.</p>
    </section>

    <section id="standalone"><title>Standalone Login</title>

      <p>The login form can be hosted as a standalone page, or can be provided inline on
      the same page.</p>

      <p>When configuring the login as a standalone page, unsuccessful authentication
      attempts should be redirected to a login form created by the website for this purpose,
      using the <directive module="mod_auth_form">AuthFormLoginRequiredLocation</directive>
      directive. Typically this login page will contain an HTML form, asking the user to
      provide their usename and password.</p>

      <example><title>Example login form</title>
        <highlight language="html">
&lt;form method="POST" action="/dologin.html"&gt;
  Username: &lt;input type="text" name="httpd_username" value="" /&gt;
  Password: &lt;input type="password" name="httpd_password" value="" /&gt;
  &lt;input type="submit" name="login" value="Login" /&gt;
&lt;/form&gt;
        </highlight>
      </example>

      <p>The part that does the actual login is handled by the <var>form-login-handler</var>.
      The action of the form should point at this handler, which is configured within
      Apache httpd as follows:</p>

      <example><title>Form login handler example</title>
      <highlight language="config">
&lt;Location "/dologin.html"&gt;
    SetHandler form-login-handler
    AuthFormLoginRequiredLocation "http://example.com/login.html"
    AuthFormLoginSuccessLocation "http://example.com/admin/index.html"
    AuthFormProvider file
    AuthUserFile "conf/passwd"
    AuthType form
    AuthName /admin
    Session On
    SessionCookieName session path=/
&lt;/Location&gt;
        </highlight>
      </example>

      <p>The URLs specified by the
      <directive module="mod_auth_form">AuthFormLoginRequiredLocation</directive> directive will typically
      point to a page explaining to the user that their login attempt was unsuccessful, and they
      should try again.  The <directive module="mod_auth_form">AuthFormLoginSuccessLocation</directive>
      directive specifies the URL the user should be redirected to upon successful login.</p>

      <p>Alternatively, the URL to redirect the user to on success can be embedded within the login
      form, as in the example below. As a result, the same <var>form-login-handler</var> can be
      reused for different areas of a website.</p>

      <example><title>Example login form with location</title>
        <highlight language="html">
&lt;form method="POST" action="/dologin.html"&gt;
  Username: &lt;input type="text" name="httpd_username" value="" /&gt;
  Password: &lt;input type="password" name="httpd_password" value="" /&gt;
  &lt;input type="submit" name="login" value="Login" /&gt;
  &lt;input type="hidden" name="httpd_location" value="http://example.com/success.html" /&gt;
&lt;/form&gt;
        </highlight>
      </example>

    </section>

    <section id="inline"><title>Inline Login</title>

      <note type="warning"><title>Warning</title>
        <p>A risk exists that under certain circumstances, the login form configured
        using inline login may be submitted more than once, revealing login credentials to
        the application running underneath. The administrator must ensure that the underlying
        application is properly secured to prevent abuse. If in doubt, use the
        standalone login configuration.</p>
      </note>

      <p>As an alternative to having a dedicated login page for a website, it is possible to
      configure <module>mod_auth_form</module> to authenticate users inline, without being
      redirected to another page. This allows the state of the current page to be preserved
      during the login attempt. This can be useful in a situation where a time limited
      session is in force, and the session times out in the middle of the user request. The
      user can be re-authenticated in place, and they can continue where they left off.</p>

      <p>If a non-authenticated user attempts to access a page protected by
      <module>mod_auth_form</module> that isn't configured with a
      <directive module="mod_auth_form">AuthFormLoginRequiredLocation</directive> directive,
      a <var>HTTP_UNAUTHORIZED</var> status code is returned to the browser indicating to the user
      that they are not authorized to view the page.</p>

      <p>To configure inline authentication, the administrator overrides the error document
      returned by the <var>HTTP_UNAUTHORIZED</var> status code with a custom error document
      containing the login form, as follows:</p>

      <example><title>Basic inline example</title>
      <highlight language="config">
AuthFormProvider file
ErrorDocument 401 "/login.shtml"
AuthUserFile "conf/passwd"
AuthType form
AuthName /admin
AuthFormLoginRequiredLocation "http://example.com/login.html"
Session On
SessionCookieName session path=/
        </highlight>
      </example>

      <p>The error document page should contain a login form with an empty action property,
      as per the example below.  This has the effect of submitting the form to
      the original protected URL, without the page having to know what that
      URL is.</p>

      <example><title>Example inline login form</title>
<highlight language="html">
&lt;form method="POST" <strong>action=""</strong>&gt;
  Username: &lt;input type="text" name="httpd_username" value="" /&gt;
  Password: &lt;input type="password" name="httpd_password" value="" /&gt;
  &lt;input type="submit" name="login" value="Login" /&gt;
&lt;/form&gt;
</highlight>
      </example>

      <p>When the end user has filled in their login details, the form will make
      an HTTP POST request to the original password protected URL.
      <module>mod_auth_form</module> will intercept this POST request, and if
      HTML fields are found present for the username and password, the user
      will be logged in, and the original password protected URL will be returned
      to the user as a GET request.</p>

    </section>

    <section id="inlinepreservebody"><title>Inline Login with Body Preservation</title>

      <p>A limitation of the inline login technique described above is that should an
      HTML form POST have resulted in the request to authenticate or
      reauthenticate, the
      contents of the original form posted by the browser will be lost. Depending on
      the function of the website, this could present significant inconvenience for the
      end user.</p>

      <p><module>mod_auth_form</module> addresses this by allowing the method and body
      of the original request to be embedded in the login form. If authentication
      is successful, the original method and body will be retried by Apache httpd, preserving
      the state of the original request.</p>

      <p>To enable body preservation, add three additional fields to the login form as
      per the example below.</p>

      <example><title>Example with body preservation</title>
        <highlight language="html">
&lt;form method="POST" action=""&gt;
  Username: &lt;input type="text" name="httpd_username" value="" /&gt;
  Password: &lt;input type="password" name="httpd_password" value="" /&gt;
  &lt;input type="submit" name="login" value="Login" /&gt;
  <br/>  <strong>&lt;input type="hidden" name="httpd_method" value="POST" /&gt;
  &lt;input type="hidden" name="httpd_mimetype" value="application/x-www-form-urlencoded" /&gt;
  &lt;input type="hidden" name="httpd_body" value="name1=value1&amp;name2=value2" /&gt;</strong><br/>
&lt;/form&gt;
        </highlight>
      </example>

      <p>How the method, mimetype and body of the original request are embedded within the
      login form will depend on the platform and technology being used within the website.
      </p>

      <p>One option is to use the <module>mod_include</module> module along with the
      <directive module="mod_request">KeptBodySize</directive> directive, along with a suitable
      CGI script to embed the variables in the form.</p>

      <p>Another option is to render the login form using a CGI script or other dynamic
      technology.</p>

      <example><title>CGI example</title>
      <highlight language="config">
AuthFormProvider file
ErrorDocument 401 "/cgi-bin/login.cgi"
...
        </highlight>
      </example>

    </section>

    <section id="loggingout"><title>Logging Out</title>

      <p>To enable a user to log out of a particular session, configure a page to
      be handled by the <var>form-logout-handler</var>. Any attempt to access this
      URL will cause the username and password to be removed from the current
      session, effectively logging the user out.</p>

      <p>By setting the
      <directive module="mod_auth_form">AuthFormLogoutLocation</directive> directive,
      a URL can be specified that the browser will be redirected to on successful
      logout. This URL might explain to the user that they have been logged out, and
      give the user the option to log in again.</p>

      <example><title>Basic logout example</title>
      <highlight language="config">
SetHandler form-logout-handler
AuthName realm
AuthFormLogoutLocation "http://example.com/loggedout.html"
Session On
SessionCookieName session path=/
        </highlight>
      </example>

      <p>Note that logging a user out does not delete the session; it merely removes
      the username and password from the session. If this results in an empty session,
      the net effect will be the removal of that session, but this is not
      guaranteed. If you want to guarantee the removal of a session, set the
      <directive module="mod_session">SessionMaxAge</directive> directive to a small
      value, like 1 (setting the directive to zero would mean no session age limit).
      </p>

      <example><title>Basic session expiry example</title>
      <highlight language="config">
SetHandler form-logout-handler
AuthFormLogoutLocation "http://example.com/loggedout.html"
Session On
SessionMaxAge 1
SessionCookieName session path=/
        </highlight>
      </example>

    </section>

    <section id="urlencoding"><title>Usernames and Passwords</title>
    <p>Note that form submission involves URLEncoding the form data:
    in this case the username and password.  You should therefore
    pick usernames and passwords that avoid characters that are
    URLencoded in form submission, or you may get unexpected results.</p>
    </section>

<directivesynopsis>
<name>AuthFormProvider</name>
<description>Sets the authentication provider(s) for this location</description>
<syntax>AuthFormProvider <var>provider-name</var>
[<var>provider-name</var>] ...</syntax>
<default>AuthFormProvider file</default>
<contextlist><context>directory</context><context>.htaccess</context>
</contextlist>
<override>AuthConfig</override>

<usage>
    <p>The <directive>AuthFormProvider</directive> directive sets
    which provider is used to authenticate the users for this location.
    The default <code>file</code> provider is implemented
    by the <module>mod_authn_file</module> module.  Make sure
    that the chosen provider module is present in the server.</p>

    <example><title>Example</title>
    <highlight language="config">
&lt;Location "/secure"&gt;
    AuthType form
    AuthName "private area"
    AuthFormProvider  dbm
    AuthDBMType        SDBM
    AuthDBMUserFile    "/www/etc/dbmpasswd"
    Require            valid-user
    #...
&lt;/Location&gt;
      </highlight>
    </example>

    <p>Providers are implemented by <module>mod_authn_dbm</module>,
    <module>mod_authn_file</module>, <module>mod_authn_dbd</module>,
    <module>mod_authnz_ldap</module> and <module>mod_authn_socache</module>.</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>AuthFormAuthoritative</name>
<description>Sets whether authorization and authentication are passed to
lower level modules</description>
<syntax>AuthFormAuthoritative On|Off</syntax>
<default>AuthFormAuthoritative On</default>
<contextlist><context>directory</context><context>.htaccess</context>
</contextlist>
<override>AuthConfig</override>

<usage>
    <p>Normally, each authorization module listed in <directive
    module="mod_auth_form">AuthFormProvider</directive> will attempt
    to verify the user, and if the user is not found in any provider,
    access will be denied. Setting the
    <directive>AuthFormAuthoritative</directive> directive explicitly
    to <code>Off</code> allows for both authentication and
    authorization to be passed on to other non-provider-based modules
    if there is <strong>no userID</strong> or <strong>rule</strong>
    matching the supplied userID.  This should only be necessary when
    combining <module>mod_auth_form</module> with third-party modules
    that are not configured with the <directive
    module="mod_auth_form">AuthFormProvider</directive>
    directive.  When using such modules, the order of processing
    is determined in the modules' source code and is not configurable.</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>AuthFormUsername</name>
<description>The name of a form field carrying the login username</description>
<syntax>AuthFormUsername <var>fieldname</var></syntax>
<default>AuthFormUsername httpd_username</default>
<contextlist><context>directory</context>
</contextlist>
<override>AuthConfig</override>
<compatibility>Available in Apache HTTP Server 2.3.0 and later</compatibility>

<usage>
    <p>The <directive module="mod_auth_form">AuthFormUsername</directive> directive specifies
    the name of an HTML field which, if present, will contain the username to be used to log
    in.</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>AuthFormPassword</name>
<description>The name of a form field carrying the login password</description>
<syntax>AuthFormPassword <var>fieldname</var></syntax>
<default>AuthFormPassword httpd_password</default>
<contextlist><context>directory</context>
</contextlist>
<override>AuthConfig</override>
<compatibility>Available in Apache HTTP Server 2.3.0 and later</compatibility>

<usage>
    <p>The <directive module="mod_auth_form">AuthFormPassword</directive> directive specifies
    the name of an HTML field which, if present, will contain the password to be used to log
    in.</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>AuthFormLocation</name>
<description>The name of a form field carrying a URL to redirect to on successful login</description>
<syntax>AuthFormLocation <var>fieldname</var></syntax>
<default>AuthFormLocation httpd_location</default>
<contextlist><context>directory</context>
</contextlist>
<override>AuthConfig</override>
<compatibility>Available in Apache HTTP Server 2.3.0 and later</compatibility>

<usage>
    <p>The <directive module="mod_auth_form">AuthFormLocation</directive> directive specifies
    the name of an HTML field which, if present, will contain a URL to redirect the browser to
    should login be successful.</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>AuthFormMethod</name>
<description>The name of a form field carrying the method of the request to attempt on successful login</description>
<syntax>AuthFormMethod <var>fieldname</var></syntax>
<default>AuthFormMethod httpd_method</default>
<contextlist><context>directory</context>
</contextlist>
<override>AuthConfig</override>
<compatibility>Available in Apache HTTP Server 2.3.0 and later</compatibility>

<usage>
    <p>The <directive module="mod_auth_form">AuthFormMethod</directive> directive specifies
    the name of an HTML field which, if present, will contain the method of the request
    to submit should login be successful.</p>

    <p>By populating the form with fields described by
    <directive module="mod_auth_form">AuthFormMethod</directive>,
    <directive module="mod_auth_form">AuthFormMimetype</directive> and
    <directive module="mod_auth_form">AuthFormBody</directive>, a website can retry
    a request that may have been interrupted by the login screen, or by a session
    timeout.</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>AuthFormMimetype</name>
<description>The name of a form field carrying the mimetype of the body of the request to attempt on successful login</description>
<syntax>AuthFormMimetype <var>fieldname</var></syntax>
<default>AuthFormMimetype httpd_mimetype</default>
<contextlist><context>directory</context>
</contextlist>
<override>AuthConfig</override>
<compatibility>Available in Apache HTTP Server 2.3.0 and later</compatibility>

<usage>
    <p>The <directive module="mod_auth_form">AuthFormMimetype</directive> directive specifies
    the name of an HTML field which, if present, will contain the
    mimetype of the request to submit should login be successful.</p>

    <p>By populating the form with fields described by
    <directive module="mod_auth_form">AuthFormMethod</directive>,
    <directive module="mod_auth_form">AuthFormMimetype</directive> and
    <directive module="mod_auth_form">AuthFormBody</directive>, a website can retry
    a request that may have been interrupted by the login screen, or by a session
    timeout.</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>AuthFormBody</name>
<description>The name of a form field carrying the body of the request to attempt on successful login</description>
<syntax>AuthFormBody <var>fieldname</var></syntax>
<default>AuthFormBody httpd_body</default>
<contextlist><context>directory</context>
</contextlist>
<override>AuthConfig</override>
<compatibility>Available in Apache HTTP Server 2.3.0 and later</compatibility>

<usage>
    <p>The <directive module="mod_auth_form">AuthFormBody</directive> directive specifies
    the name of an HTML field which, if present, will contain the body of the request
    to submit should login be successful.</p>

    <p>By populating the form with fields described by
    <directive module="mod_auth_form">AuthFormMethod</directive>,
    <directive module="mod_auth_form">AuthFormMimetype</directive> and
    <directive module="mod_auth_form">AuthFormBody</directive>, a website can retry
    a request that may have been interrupted by the login screen, or by a session
    timeout.</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>AuthFormSize</name>
<description>The largest size of the form in bytes that will be parsed for the login details</description>
<syntax>AuthFormSize <var>size</var></syntax>
<default>AuthFormSize 8192</default>
<contextlist><context>directory</context>
</contextlist>
<compatibility>Available in Apache HTTP Server 2.3.0 and later</compatibility>

<usage>
    <p>The <directive module="mod_auth_form">AuthFormSize</directive> directive specifies
    the maximum size of the body of the request that will be parsed to find the login form.</p>

    <p>If a login request arrives that exceeds this size, the whole request will be aborted
    with the HTTP response code <code>HTTP_REQUEST_TOO_LARGE</code>.</p>

    <p>If you have populated the form with fields described by
    <directive module="mod_auth_form">AuthFormMethod</directive>,
    <directive module="mod_auth_form">AuthFormMimetype</directive> and
    <directive module="mod_auth_form">AuthFormBody</directive>, you probably want to set this
    field to a similar size as the <directive module="mod_request">KeptBodySize</directive>
    directive.</p>

</usage>
</directivesynopsis>

<directivesynopsis>
<name>AuthFormLoginRequiredLocation</name>
<description>The URL of the page to be redirected to should login be required</description>
<syntax>AuthFormLoginRequiredLocation <var>url</var></syntax>
<default>none</default>
<contextlist><context>directory</context>
</contextlist>
<override>AuthConfig</override>
<compatibility>Available in Apache HTTP Server 2.3.0 and later. The use of the expression
parser has been added in 2.4.4.</compatibility>

<usage>
    <p>The <directive module="mod_auth_form">AuthFormLoginRequiredLocation</directive> directive
    specifies the URL to redirect to should the user not be authorised to view a page. The value
    is parsed using the <a href="../expr.html">ap_expr</a> parser before being sent to the client.
    By default, if a user is not authorised to view a page, the HTTP response code
    <code>HTTP_UNAUTHORIZED</code> will be returned with the page specified by the
    <directive module="core">ErrorDocument</directive> directive. This directive overrides this
    default.</p>

    <p>Use this directive if you have a dedicated login page to redirect users to.</p>

</usage>
</directivesynopsis>

<directivesynopsis>
<name>AuthFormLoginSuccessLocation</name>
<description>The URL of the page to be redirected to should login be successful</description>
<syntax>AuthFormLoginSuccessLocation <var>url</var></syntax>
<default>none</default>
<contextlist><context>directory</context>
</contextlist>
<override>AuthConfig</override>
<compatibility>Available in Apache HTTP Server 2.3.0 and later. The use of the expression
parser has been added in 2.4.4.</compatibility>

<usage>
    <p>The <directive module="mod_auth_form">AuthFormLoginSuccessLocation</directive> directive
    specifies the URL to redirect to should the user have logged in successfully. The value is
    parsed using the <a href="../expr.html">ap_expr</a> parser before being sent to the client.
    This directive can be overridden if a form field has been defined containing another URL
    using the <directive module="mod_auth_form">AuthFormLocation</directive> directive.</p>

    <p>Use this directive if you have a dedicated login URL, and you have not embedded the
    destination page in the login form.</p>

</usage>
</directivesynopsis>

<directivesynopsis>
<name>AuthFormFakeBasicAuth</name>
<description>Fake a Basic Authentication header</description>
<syntax>AuthFormFakeBasicAuth On|Off</syntax>
<default>AuthFormFakeBasicAuth Off</default>
<contextlist><context>directory</context>
</contextlist>
<override>AuthConfig</override>
<compatibility>Available in Apache HTTP Server 2.3.0 and later</compatibility>

<usage>
    <p>The <directive module="mod_auth_form">AuthFormFakeBasicAuth</directive> flag
    determines whether a <code>Basic Authentication</code> header will be added to
    the request headers. This can be used to expose the username and password to
    an underlying application, without the underlying application having to be aware
    of how the login was achieved.</p>

</usage>
</directivesynopsis>

<directivesynopsis>
<name>AuthFormLogoutLocation</name>
<description>The URL to redirect to after a user has logged out</description>
<syntax>AuthFormLogoutLocation <var>uri</var></syntax>
<default>none</default>
<contextlist><context>directory</context>
</contextlist>
<override>AuthConfig</override>
<compatibility>Available in Apache HTTP Server 2.3.0 and later. The use of the expression
parser has been added in 2.4.4.</compatibility>

<usage>
    <p>The <directive module="mod_auth_form">AuthFormLogoutLocation</directive> directive
    specifies the URL of a page on the server to redirect to should the user attempt to log
    out. The value is parsed using the <a href="../expr.html">ap_expr</a> parser before
    being sent to the client.</p>

    <p>When a URI is accessed that is served by the handler <code>form-logout-handler</code>,
    the page specified by this directive will be shown to the end user. For example:</p>

    <example><title>Example</title>
    <highlight language="config">
&lt;Location "/logout"&gt;
    SetHandler form-logout-handler
    AuthFormLogoutLocation "http://example.com/loggedout.html"
    Session on
    #...
&lt;/Location&gt;
      </highlight>
    </example>

    <p>An attempt to access the URI <var>/logout/</var> will result in the user being logged
    out, and the page <var>/loggedout.html</var> will be displayed. Make sure that the page
    <var>loggedout.html</var> is not password protected, otherwise the page will not be
    displayed.</p>

</usage>
</directivesynopsis>

<directivesynopsis>
<name>AuthFormDisableNoStore</name>
<description>Disable the CacheControl no-store header on the login page</description>
<syntax>AuthFormDisableNoStore On|Off</syntax>
<default>AuthFormDisableNoStore Off</default>
<contextlist><context>directory</context>
</contextlist>
<override>AuthConfig</override>
<compatibility>Available in Apache HTTP Server 2.3.0 and later</compatibility>

<usage>
    <p>The <directive module="mod_auth_form">AuthFormDisableNoStore</directive> flag
    disables the sending of a <code>Cache-Control no-store</code> header with the
    error 401 page returned when the user is not yet logged in. The purpose of the header
    is to make it difficult for an <code>ecmascript</code> application to attempt to resubmit the
    login form, and reveal the username and password to the backend application. Disable
    at your own risk.</p>

</usage>
</directivesynopsis>

<directivesynopsis>
<name>AuthFormSitePassphrase</name>
<description>Bypass authentication checks for high traffic sites</description>
<syntax>AuthFormSitePassphrase <var>secret</var></syntax>
<default>none</default>
<contextlist><context>directory</context>
</contextlist>
<override>AuthConfig</override>
<compatibility>Available in Apache HTTP Server 2.3.0 and later</compatibility>

<usage>
    <p>The <directive module="mod_auth_form">AuthFormSitePassphrase</directive> directive
    specifies a passphrase which, if present in the user session, causes Apache httpd to
    bypass authentication checks for the given URL. It can be used on high traffic websites
    to reduce the load induced on authentication infrastructure.</p>

    <p>The passphrase can be inserted into a user session by adding this directive to the
    configuration for the <var>form-login-handler</var>. The <var>form-login-handler</var>
    itself will always run the authentication checks, regardless of whether a passphrase
    is specified or not.</p>

    <note type="warning"><title>Warning</title>
      <p>If the session is exposed to the user through the use of
      <module>mod_session_cookie</module>, and the session is not protected with
      <module>mod_session_crypto</module>, the passphrase is open to potential exposure
      through a dictionary attack. Regardless of how the session is configured,
      ensure that this directive is not used within URL spaces where private user data
      could be exposed, or sensitive transactions can be conducted. Use at own risk.</p>
    </note>

</usage>
</directivesynopsis>

</modulesynopsis>
