mirror of
				https://github.com/apache/httpd.git
				synced 2025-10-30 08:05:39 +03:00 
			
		
		
		
	git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@96735 13f79535-47bb-0310-9956-ffa450edef68
		
			
				
	
	
		
			726 lines
		
	
	
		
			47 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			726 lines
		
	
	
		
			47 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| <?xml version="1.0" encoding="ISO-8859-1"?>
 | ||
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 | ||
| <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!--
 | ||
|         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 | ||
|               This file is generated from xml source: DO NOT EDIT
 | ||
|         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 | ||
|       --><title>mod_auth_ldap - Apache HTTP Server</title><link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /><link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /><link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link href="../images/favicon.ico" rel="shortcut icon" /></head><body><div id="page-header"><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><p class="apache">Apache HTTP Server Version 2.0</p><img alt="" src="../images/feather.gif" /></div><div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div><div id="path"><a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Server</a> > <a href="http://httpd.apache.org/docs-project/">Documentation</a> > <a href="../">Version 2.0</a> > <a href="./">Modules</a></div><div id="page-content"><div id="preamble"><h1>Apache Module mod_auth_ldap</h1><table class="module"><tr><th><a href="module-dict.html#Description">Description:
 | ||
|                   </a></th><td>Allows an LDAP directory to be used to store the database
 | ||
| for HTTP Basic authentication.</td></tr><tr><th><a href="module-dict.html#Status">Status:
 | ||
|                   </a></th><td>experimental</td></tr><tr><th><a href="module-dict.html#ModuleIdentifier">Module<EFBFBD>Identifier:
 | ||
|                   </a></th><td>auth_ldap_module</td></tr><tr><th><a href="module-dict.html#SourceFile">Source<EFBFBD>File:
 | ||
|                   </a></th><td>mod_auth_ldap.c</td></tr><tr><th><a href="module-dict.html#Compatibility">Compatibility:
 | ||
|                   </a></th><td>Available in version 2.0.41 and later</td></tr></table><h3>Summary</h3>
 | ||
|     <p><code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> supports the following features:</p>
 | ||
| 
 | ||
|     <ul>
 | ||
|       <li>Known to support the <a href="http://www.openldap.org/">OpenLDAP SDK</a> (both 1.x
 | ||
|       and 2.x), and the <a href="http://www.iplanet.com/downloads/developer/">iPlanet
 | ||
|       (Netscape)</a> SDK.</li>
 | ||
| 
 | ||
|       <li>Complex authorization policies can be implemented by
 | ||
|       representing the policy with LDAP filters.</li>
 | ||
| 
 | ||
|       <li>Support for Microsoft FrontPage allows FrontPage users to
 | ||
|       control access to their webs, while retaining LDAP for user
 | ||
|       authentication.</li>
 | ||
| 
 | ||
|       <li>Uses extensive caching of LDAP operations via <a href="mod_ldap.html">mod_ldap</a>.</li>
 | ||
| 
 | ||
|       <li>Support for LDAP over SSL (requires the Netscape SDK) or
 | ||
|       TLS (requires the OpenLDAP 2.x SDK).</li>
 | ||
|     </ul>
 | ||
| </div><div id="quickview"><h3 class="directives">Directives</h3><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#authldapauthoritative">AuthLDAPAuthoritative</a></li><li><img alt="" src="../images/down.gif" /> <a href="#authldapbinddn">AuthLDAPBindDN</a></li><li><img alt="" src="../images/down.gif" /> <a href="#authldapbindpassword">AuthLDAPBindPassword</a></li><li><img alt="" src="../images/down.gif" /> <a href="#authldapcomparednonserver">AuthLDAPCompareDNOnServer</a></li><li><img alt="" src="../images/down.gif" /> <a href="#authldapdereferencealiases">AuthLDAPDereferenceAliases</a></li><li><img alt="" src="../images/down.gif" /> <a href="#authldapenabled">AuthLDAPEnabled</a></li><li><img alt="" src="../images/down.gif" /> <a href="#authldapfrontpagehack">AuthLDAPFrontPageHack</a></li><li><img alt="" src="../images/down.gif" /> <a href="#authldapgroupattribute">AuthLDAPGroupAttribute</a></li><li><img alt="" src="../images/down.gif" /> <a href="#authldapgroupattributeisdn">AuthLDAPGroupAttributeIsDN</a></li><li><img alt="" src="../images/down.gif" /> <a href="#authldapremoteuserisdn">AuthLDAPRemoteUserIsDN</a></li><li><img alt="" src="../images/down.gif" /> <a href="#authldapstarttls directive">AuthLDAPStartTLS directive</a></li><li><img alt="" src="../images/down.gif" /> <a href="#authldapurl">AuthLDAPUrl</a></li></ul><h3>Topics</h3><ul id="topics"><li><img alt="" src="../images/down.gif" /> <a href="#contents">Contents</a></li><li><img alt="" src="../images/down.gif" /> <a href="#operation">Operation</a></li><li><img alt="" src="../images/down.gif" /> <a href="#requiredirectives">The require Directives</a></li><li><img alt="" src="../images/down.gif" /> <a href="#examples">Examples</a></li><li><img alt="" src="../images/down.gif" /> <a href="#usingtls">Using TLS</a></li><li><img alt="" src="../images/down.gif" /> <a href="#usingssl">Using SSL</a></li><li><img alt="" src="../images/down.gif" /> <a href="#frontpage">Using Microsoft
 | ||
|     FrontPage with mod_auth_ldap</a></li></ul><h3>See also</h3><ul class="seealso"><li><code class="module"><a href="../mod/mod_ldap.html">mod_ldap</a></code></li></ul></div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><h2><a name="contents" id="contents">Contents</a></h2>
 | ||
| 
 | ||
|     <ul>
 | ||
|       <li>
 | ||
|         <a href="#operation">Operation</a> 
 | ||
| 
 | ||
|         <ul>
 | ||
|           <li><a href="#authenphase">The Authentication
 | ||
|           Phase</a></li>
 | ||
| 
 | ||
|           <li><a href="#authorphase">The Authorization
 | ||
|           Phase</a></li>
 | ||
|         </ul>
 | ||
|       </li>
 | ||
| 
 | ||
|       <li>
 | ||
|         <a href="#requiredirectives">The require Directives</a> 
 | ||
| 
 | ||
|         <ul>
 | ||
|           <li><a href="#reqvaliduser">require valid-user</a></li>
 | ||
| 
 | ||
|           <li><a href="#requser">require user</a></li>
 | ||
| 
 | ||
|           <li><a href="#reqgroup">require group</a></li>
 | ||
| 
 | ||
|           <li><a href="#reqdn">require dn</a></li>
 | ||
|         </ul>
 | ||
|       </li>
 | ||
| 
 | ||
|       <li><a href="#examples">Examples</a></li>
 | ||
| 
 | ||
|       <li><a href="#usingtls">Using TLS</a></li>
 | ||
| 
 | ||
|       <li><a href="#usingssl">Using SSL</a></li>
 | ||
| 
 | ||
|       <li>
 | ||
|         <a href="#frontpage">Using Microsoft FrontPage with
 | ||
|         <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code></a> 
 | ||
| 
 | ||
|         <ul>
 | ||
|           <li><a href="#howitworks">How It Works</a></li>
 | ||
| 
 | ||
|           <li><a href="#fpcaveats">Caveats</a></li>
 | ||
|         </ul>
 | ||
|       </li>
 | ||
|     </ul>
 | ||
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><h2><a name="operation" id="operation">Operation</a></h2>
 | ||
| 
 | ||
|     <p>There are two phases in granting access to a user. The first
 | ||
|     phase is authentication, in which <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code>
 | ||
|     verifies that the user's credentials are valid. This also called
 | ||
|     the <em>search/bind</em> phase. The second phase is
 | ||
|     authorization, in which <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> determines
 | ||
|     if the authenticated user is allowed access to the resource in
 | ||
|     question. This is also known as the <em>compare</em>
 | ||
|     phase.</p>
 | ||
| 
 | ||
| <h3><a name="authenphase" id="authenphase">The Authentication
 | ||
|     Phase</a></h3>
 | ||
| 
 | ||
|     <p>During the authentication phase, <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code>
 | ||
|     searches for an entry in the directory that matches the username
 | ||
|     that the HTTP client passes. If a single unique match is found,
 | ||
|     then <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> attempts to bind to the
 | ||
|     directory server using the DN of the entry plus the password
 | ||
|     provided by the HTTP client. Because it does a search, then a
 | ||
|     bind, it is often referred to as the search/bind phase. Here are
 | ||
|     the steps taken during the search/bind phase.</p>
 | ||
| 
 | ||
|     <ol>
 | ||
|       <li>Generate a search filter by combining the attribute and
 | ||
|       filter provided in the <code class="directive"><a href="#authldapurl">AuthLDAPURL</a></code> directive with
 | ||
|       the username passed by the HTTP client.</li>
 | ||
| 
 | ||
|       <li>Search the directory using the generated filter. If the
 | ||
|       search does not return exactly one entry, deny or decline
 | ||
|       access.</li>
 | ||
| 
 | ||
|       <li>Fetch the distinguished name of the entry retrieved from
 | ||
|       the search and attempt to bind to the LDAP server using the
 | ||
|       DN and the password passed by the HTTP client. If the bind is
 | ||
|       unsuccessful, deny or decline access.</li>
 | ||
|     </ol>
 | ||
| 
 | ||
|     <p>The following directives are used during the search/bind
 | ||
|     phase</p>
 | ||
| 
 | ||
|     <table>
 | ||
|       <tr>
 | ||
|         <td><code class="directive"><a href="#authldapurl">AuthLDAPURL</a></code></td>
 | ||
| 
 | ||
|         <td>Specifies the LDAP server, the
 | ||
|         base DN, the attribute to use in the search, as well as the
 | ||
|         extra search filter to use.</td>
 | ||
|       </tr>
 | ||
| 
 | ||
|       <tr>
 | ||
|         <td><code class="directive"><a href="#authldapbinddn">AuthLDAPBindDN</a></code></td>
 | ||
| 
 | ||
|         <td>An optional DN to bind with
 | ||
|         during the search phase.</td>
 | ||
|       </tr>
 | ||
| 
 | ||
|       <tr>
 | ||
|         <td><code class="directive"><a href="#authldapbindpassword">AuthLDAPBindPassword</a></code></td>
 | ||
| 
 | ||
|         <td>An optional password to bind
 | ||
|         with during the search phase.</td>
 | ||
|       </tr>
 | ||
|     </table>
 | ||
| 
 | ||
| 
 | ||
| <h3><a name="authorphase" id="authorphase">The Authorization
 | ||
|     Phase</a></h3>
 | ||
| 
 | ||
|     <p>During the authorization phase, <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code>
 | ||
|     attempts to determine if the user is authorized to access the
 | ||
|     resource.  Many of these checks require
 | ||
|     <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> to do a compare operation on the
 | ||
|     LDAP server. This is why this phase is often referred to as the
 | ||
|     compare phase. <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> accepts the
 | ||
|     following <code class="directive"><a href="../mod/core.html#require">Require</a></code>
 | ||
|     directives to determine if the credentials are acceptable:</p>
 | ||
| 
 | ||
|     <ul>
 | ||
|       <li>Grant access if there is a <a href="#requser"><code>require
 | ||
|       valid-user</code></a> directive.</li>
 | ||
| 
 | ||
|       <li>Grant access if there is a <a href="#reqgroup"><code>require user</code></a> directive, and the
 | ||
|       username in the directive matches the username passed by the
 | ||
|       client.</li>
 | ||
| 
 | ||
|       <li>Grant access if there is a <a href="#reqdn"><code>require
 | ||
|       dn</code></a> directive, and the DN in the directive matches
 | ||
|       the DN fetched from the LDAP directory.</li>
 | ||
| 
 | ||
|       <li>Grant access if there is a <a href="#reqgroup"><code>require group</code></a> directive, and
 | ||
|       the DN fetched from the LDAP directory (or the username
 | ||
|       passed by the client) occurs in the LDAP group.</li>
 | ||
| 
 | ||
|       <li>otherwise, deny or decline access</li>
 | ||
|     </ul>
 | ||
| 
 | ||
|     <p><code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> uses the following directives during the
 | ||
|     compare phase:</p>
 | ||
| 
 | ||
|     <table>
 | ||
|       <tr>
 | ||
|         <td><code class="directive"><a href="#authldapurl">AuthLDAPURL</a></code> </td>
 | ||
| 
 | ||
|         <td>The attribute specified in the
 | ||
|         URL is used in compare operations for the <code>require
 | ||
|         user</code> operation.</td>
 | ||
|       </tr>
 | ||
| 
 | ||
|       <tr>
 | ||
|         <td><code class="directive"><a href="#authldapcomparednonserver">AuthLDAPCompareDNOnServer</a></code></td>
 | ||
| 
 | ||
|         <td>Determines the behavior of the
 | ||
|         <code>require dn</code> directive.</td>
 | ||
|       </tr>
 | ||
| 
 | ||
|       <tr>
 | ||
|         <td><code class="directive"><a href="#authldapgroupattribute">AuthLDAPGroupAttribute</a></code></td>
 | ||
| 
 | ||
|         <td>Determines the attribute to
 | ||
|         use for comparisons in the <code>require group</code>
 | ||
|         directive.</td>
 | ||
|       </tr>
 | ||
| 
 | ||
|       <tr>
 | ||
|         <td><code class="directive"><a href="#authldapgroupattributeisdn">AuthLDAPGroupAttributeIsDN</a></code></td>
 | ||
| 
 | ||
|         <td>Specifies whether to use the
 | ||
|         user DN or the username when doing comparisons for the
 | ||
|         <code>require group</code> directive.</td>
 | ||
|       </tr>
 | ||
|     </table>
 | ||
| 
 | ||
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><h2><a name="requiredirectives" id="requiredirectives">The require Directives</a></h2>
 | ||
| 
 | ||
|     <p>Apache's <code class="directive"><a href="../mod/core.html#require">Require</a></code>
 | ||
|     directives are used during the authorization phase to ensure that
 | ||
|     a user is allowed to access a resource.</p>
 | ||
| 
 | ||
| <h3><a name="reqvaliduser" id="reqvaliduser">require
 | ||
|     valid-user</a></h3>
 | ||
| 
 | ||
|     <p>If this directive exists, <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> grants
 | ||
|     access to any user that has successfully authenticated during the
 | ||
|     search/bind phase.</p>
 | ||
| 
 | ||
| 
 | ||
| <h3><a name="requser" id="requser">require user</a></h3>
 | ||
| 
 | ||
|     <p>The <code>require user</code> directive specifies what
 | ||
|     usernames can access the resource. Once
 | ||
|     <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> has retrieved a unique DN from the
 | ||
|     directory, it does an LDAP compare operation using the username
 | ||
|     specified in the <code>require user</code> to see if that username
 | ||
|     is part of the just-fetched LDAP entry.  Multiple users can be
 | ||
|     granted access by putting multiple usernames on the line,
 | ||
|     separated with spaces. If a username has a space in it, then it
 | ||
|     must be the only user on the line. In this case, multiple users
 | ||
|     can be granted access by using multiple <code>require user</code>
 | ||
|     directives, with one user per line. For example, with a <code class="directive"><a href="#authldapurl">AuthLDAPURL</a></code> of
 | ||
|     <code>ldap://ldap/o=Airius?cn</code> (i.e., <code>cn</code> is
 | ||
|     used for searches), the following require directives could be used
 | ||
|     to restrict access:</p>
 | ||
| <div class="example"><p><code>
 | ||
| require user Barbara Jenson<br />
 | ||
| require user Fred User<br />
 | ||
| require user Joe Manager<br />
 | ||
| </code></p></div>
 | ||
| 
 | ||
|     <p>Because of the way that <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> handles this
 | ||
|     directive, Barbara Jenson could sign on as <em>Barbara
 | ||
|     Jenson</em>, <em>Babs Jenson</em> or any other <code>cn</code> that
 | ||
|     she has in her LDAP entry. Only the single <code>require
 | ||
|     user</code> line is needed to support all values of the attribute
 | ||
|     in the user's entry.</p>
 | ||
| 
 | ||
|     <p>If the <code>uid</code> attribute was used instead of the
 | ||
|     <code>cn</code> attribute in the URL above, the above three lines
 | ||
|     could be condensed to</p>
 | ||
| <div class="example"><p><code>require user bjenson fuser jmanager</code></p></div>
 | ||
| 
 | ||
| 
 | ||
| <h3><a name="reqgroup" id="reqgroup">require group</a></h3>
 | ||
| 
 | ||
|     <p>This directive specifies an LDAP group whose members are
 | ||
|     allowed access. It takes the distinguished name of the LDAP
 | ||
|     group. For example, assume that the following entry existed in
 | ||
|     the LDAP directory:</p>
 | ||
| <div class="example"><p><code>
 | ||
| dn: cn=Administrators, o=Airius<br />
 | ||
| objectClass: groupOfUniqueNames<br />
 | ||
| uniqueMember: cn=Barbara Jenson, o=Airius<br />
 | ||
| uniqueMember: cn=Fred User, o=Airius<br />
 | ||
| </code></p></div>
 | ||
| 
 | ||
|     <p>The following directive would grant access to both Fred and
 | ||
|     Barbara:</p>
 | ||
| <div class="example"><p><code>require group cn=Administrators, o=Airius</code></p></div>
 | ||
| 
 | ||
|     <p>Behavior of this directive is modified by the <code class="directive"><a href="#authldapgroupattribute">AuthLDAPGroupAttribute</a></code> and
 | ||
|     <code class="directive"><a href="#authldapgroupattributeisdn">AuthLDAPGroupAttributeIsDN</a></code>
 | ||
|     directives.</p>
 | ||
| 
 | ||
| 
 | ||
| <h3><a name="reqdn" id="reqdn">require dn</a></h3>
 | ||
| 
 | ||
|     <p>The <code>require dn</code> directive allows the administrator
 | ||
|     to grant access based on distinguished names. It specifies a DN
 | ||
|     that must match for access to be granted. If the distinguished
 | ||
|     name that was retrieved from the directory server matches the
 | ||
|     distinguished name in the <code>require dn</code>, then
 | ||
|     authorization is granted.</p>
 | ||
| 
 | ||
|     <p>The following directive would grant access to a specific
 | ||
|     DN:</p>
 | ||
| <div class="example"><p><code>require dn cn=Barbara Jenson, o=Airius</code></p></div>
 | ||
| 
 | ||
|     <p>Behavior of this directive is modified by the <code class="directive"><a href="#authldapcomparednonserver">AuthLDAPCompareDNOnServer</a></code>
 | ||
|     directive.</p>
 | ||
| 
 | ||
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><h2><a name="examples" id="examples">Examples</a></h2>
 | ||
| 
 | ||
|     <ul>
 | ||
|       <li>
 | ||
|         Grant access to anyone who exists in the LDAP directory,
 | ||
|         using their UID for searches. 
 | ||
| <div class="example"><p><code>
 | ||
| AuthLDAPURL ldap://ldap1.airius.com:389/ou=People, o=Airius?uid?sub?(objectClass=*)<br />
 | ||
| require valid-user
 | ||
| </code></p></div>
 | ||
|       </li>
 | ||
| 
 | ||
|       <li>
 | ||
|         The next example is the same as above; but with the fields
 | ||
|         that have useful defaults omitted. Also, note the use of a
 | ||
|         redundant LDAP server. 
 | ||
| <div class="example"><p><code>AuthLDAPURL ldap://ldap1.airius.com ldap2.airius.com/ou=People, o=Airius<br />
 | ||
| require valid-user
 | ||
| </code></p></div>
 | ||
|       </li>
 | ||
| 
 | ||
|       <li>
 | ||
|         The next example is similar to the previous one, but is
 | ||
|         uses the common name instead of the UID. Note that this
 | ||
|         could be problematical if multiple people in the directory
 | ||
|         share the same <code>cn</code>, because a search on <code>cn</code>
 | ||
|         <strong>must</strong> return exactly one entry. That's why
 | ||
|         this approach is not recommended: it's a better idea to
 | ||
|         choose an attribute that is guaranteed unique in your
 | ||
|         directory, such as <code>uid</code>. 
 | ||
| <div class="example"><p><code>
 | ||
| AuthLDAPURL ldap://ldap.airius.com/ou=People, o=Airius?cn<br />
 | ||
| require valid-user
 | ||
| </code></p></div>
 | ||
|       </li>
 | ||
| 
 | ||
|       <li>
 | ||
|         Grant access to anybody in the Administrators group. The
 | ||
|         users must authenticate using their UID. 
 | ||
| <div class="example"><p><code>
 | ||
| AuthLDAPURL ldap://ldap.airius.com/o=Airius?uid<br />
 | ||
| require group cn=Administrators, o=Airius
 | ||
| </code></p></div>
 | ||
|       </li>
 | ||
| 
 | ||
|       <li>
 | ||
|         The next example assumes that everyone at Airius who
 | ||
|         carries an alphanumeric pager will have an LDAP attribute
 | ||
|         of <code>qpagePagerID</code>. The example will grant access
 | ||
|         only to people (authenticated via their UID) who have
 | ||
|         alphanumeric pagers: 
 | ||
| <div class="example"><p><code>
 | ||
| AuthLDAPURL ldap://ldap.airius.com/o=Airius?uid??(qpagePagerID=*)<br />
 | ||
| require valid-user
 | ||
| </code></p></div>
 | ||
|       </li>
 | ||
| 
 | ||
|       <li>
 | ||
|         <p>The next example demonstrates the power of using filters
 | ||
|         to accomplish complicated administrative requirements.
 | ||
|         Without filters, it would have been necessary to create a
 | ||
|         new LDAP group and ensure that the group's members remain
 | ||
|         synchronized with the pager users. This becomes trivial
 | ||
|         with filters. The goal is to grant access to anyone who has
 | ||
|         a filter, plus grant access to Joe Manager, who doesn't
 | ||
|         have a pager, but does need to access the same
 | ||
|         resource:</p>
 | ||
| <div class="example"><p><code>
 | ||
| AuthLDAPURL ldap://ldap.airius.com/o=Airius?uid??(|(qpagePagerID=*)(uid=jmanager))<br />
 | ||
| require valid-user
 | ||
| </code></p></div>
 | ||
| 
 | ||
|         <p>This last may look confusing at first, so it helps to
 | ||
|         evaluate what the search filter will look like based on who
 | ||
|         connects, as shown below. The text in blue is the part that
 | ||
|         is filled in using the attribute specified in the URL. The
 | ||
|         text in red is the part that is filled in using the filter
 | ||
|         specified in the URL. The text in green is filled in using
 | ||
|         the information that is retrieved from the HTTP client. If
 | ||
|         Fred User connects as <code>fuser</code>, the filter would look
 | ||
|         like</p>
 | ||
| 
 | ||
|         <div class="example"><p><code>(&<font color="red">(|(qpagePagerID=*)(uid=jmanager))</font>(<font color="blue">uid</font>=<font color="green">fuser</font>))</code></p></div>
 | ||
| 
 | ||
|         <p>The above search will only succeed if <em>fuser</em> has a
 | ||
|         pager. When Joe Manager connects as <em>jmanager</em>, the
 | ||
|         filter looks like</p>
 | ||
| 
 | ||
|         <div class="example"><p><code>(&<font color="red">(|(qpagePagerID=*)(uid=jmanager))</font>(<font color="blue">uid</font>=<font color="green">jmanager</font>))</code></p></div>
 | ||
| 
 | ||
|         <p>The above search will succeed whether <em>jmanager</em>
 | ||
|         has a pager or not.</p>
 | ||
|       </li>
 | ||
|     </ul>
 | ||
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><h2><a name="usingtls" id="usingtls">Using TLS</a></h2>
 | ||
| 
 | ||
|     <p>To use TLS, simply set the <code class="directive"><a href="#authldapstarttls">AuthLDAPStartTLS</a></code> to on.
 | ||
|     Nothing else needs to be done (other than ensure that your LDAP
 | ||
|     server is configured for TLS).</p>
 | ||
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><h2><a name="usingssl" id="usingssl">Using SSL</a></h2>
 | ||
| 
 | ||
|     <p>If <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> is linked against the
 | ||
|     Netscape/iPlanet LDAP SDK, it will not talk to any SSL server
 | ||
|     unless that server has a certificate signed by a known Certificate
 | ||
|     Authority. As part of the configuration
 | ||
|     <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> needs to be told where it can find
 | ||
|     a database containing the known CAs. This database is in the same
 | ||
|     format as Netscape Communicator's <code>cert7.db</code>
 | ||
|     database. The easiest way to get this file is to start up a fresh
 | ||
|     copy of Netscape, and grab the resulting
 | ||
|     <code>$HOME/.netscape/cert7.db</code> file.</p>
 | ||
| 
 | ||
|     <p>To specify a secure LDAP server, use <em>ldaps://</em> in the
 | ||
|     <code class="directive"><a href="#authldapurl">AuthLDAPURL</a></code>
 | ||
|     directive, instead of <em>ldap://</em>.</p>
 | ||
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><h2><a name="frontpage" id="frontpage">Using Microsoft
 | ||
|     FrontPage with mod_auth_ldap</a></h2>
 | ||
| 
 | ||
|     <p>Normally, FrontPage uses FrontPage-web-specific user/group
 | ||
|     files (i.e., the <code class="module"><a href="../mod/mod_auth.html">mod_auth</a></code> module) to handle all
 | ||
|     authentication. Unfortunately, it is not possible to just
 | ||
|     change to LDAP authentication by adding the proper directives,
 | ||
|     because it will break the <em>Permissions</em> forms in
 | ||
|     the FrontPage client, which attempt to modify the standard
 | ||
|     text-based authorization files.</p>
 | ||
| 
 | ||
|     <p>Once a FrontPage web has been created, adding LDAP
 | ||
|     authentication to it is a matter of adding the following
 | ||
|     directives to <em>every</em> <code>.htaccess</code> file
 | ||
|     that gets created in the web</p>
 | ||
| <div class="example"><pre>
 | ||
| AuthLDAPURL            the url
 | ||
| AuthLDAPAuthoritative  off
 | ||
| AuthLDAPFrontPageHack  on
 | ||
| </pre></div>
 | ||
| 
 | ||
|     <p><code class="directive"><a href="#authldapauthoritative">AuthLDAPAuthoritative</a></code> must be
 | ||
|     off to allow <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> to decline group
 | ||
|     authentication so that Apache will fall back to file
 | ||
|     authentication for checking group membership. This allows the
 | ||
|     FrontPage-managed group file to be used.</p>
 | ||
| 
 | ||
| <h3><a name="howitworks" id="howitworks">How It Works</a></h3>
 | ||
| 
 | ||
|     <p>FrontPage restricts access to a web by adding the <code>require
 | ||
|     valid-user</code> directive to the <code>.htaccess</code>
 | ||
|     files. If <code class="directive"><a href="#authldapfrontpagehack">AuthLDAPFrontPageHack</a></code> is not
 | ||
|     on, the <code>require valid-user</code> directive will succeed for
 | ||
|     any user who is valid <em>as far as LDAP is
 | ||
|     concerned</em>. This means that anybody who has an entry in
 | ||
|     the LDAP directory is considered a valid user, whereas FrontPage
 | ||
|     considers only those people in the local user file to be
 | ||
|     valid. The purpose of the hack is to force Apache to consult the
 | ||
|     local user file (which is managed by FrontPage) - instead of LDAP
 | ||
|     - when handling the <code>require valid-user</code> directive.</p>
 | ||
| 
 | ||
|     <p>Once directives have been added as specified above,
 | ||
|     FrontPage users will be able to perform all management
 | ||
|     operations from the FrontPage client.</p>
 | ||
| 
 | ||
| 
 | ||
| <h3><a name="fpcaveats" id="fpcaveats">Caveats</a></h3>
 | ||
| 
 | ||
|     <ul>
 | ||
|       <li>When choosing the LDAP URL, the attribute to use for
 | ||
|       authentication should be something that will also be valid
 | ||
|       for putting into a <code class="module"><a href="../mod/mod_auth.html">mod_auth</a></code> user file. The user ID is
 | ||
|       ideal for this.</li>
 | ||
| 
 | ||
|       <li>When adding users via FrontPage, FrontPage administrators
 | ||
|       should choose usernames that already exist in the LDAP
 | ||
|       directory (for obvious reasons). Also, the password that the
 | ||
|       administrator enters into the form is ignored, since Apache
 | ||
|       will actually be authenticating against the password in the
 | ||
|       LDAP database, and not against the password in the local user
 | ||
|       file. This could cause confusion for web administrators.</li>
 | ||
| 
 | ||
|       <li>Apache must be compiled with <code class="module"><a href="../mod/mod_auth.html">mod_auth</a></code> in order to
 | ||
|       use FrontPage support. This is because Apache will still use
 | ||
|       the <code class="module"><a href="../mod/mod_auth.html">mod_auth</a></code> group file for determine the extent of a
 | ||
|       user's access to the FrontPage web.</li>
 | ||
| 
 | ||
|       <li>The directives must be put in the <code>.htaccess</code>
 | ||
|       files. Attempting to put them inside <code class="directive"><a href="../mod/core.html#location"><Location></a></code> or <code class="directive"><a href="../mod/core.html#directory"><Directory></a></code> directives won't work. This
 | ||
|       is because <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> has to be able to grab
 | ||
|       the <code class="directive"><a href="../mod/mod_auth.html#authuserfile">AuthUserFile</a></code>
 | ||
|       directive that is found in FrontPage <code>.htaccess</code>
 | ||
|       files so that it knows where to look for the valid user list. If
 | ||
|       the <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> directives aren't in the same
 | ||
|       <code>.htaccess</code> file as the FrontPage directives, then
 | ||
|       the hack won't work, because <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> will
 | ||
|       never get a chance to process the <code>.htaccess</code> file,
 | ||
|       and won't be able to find the FrontPage-managed user file.</li>
 | ||
|     </ul>
 | ||
| 
 | ||
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="directive-section"><h2><a name="AuthLDAPAuthoritative" id="AuthLDAPAuthoritative">AuthLDAPAuthoritative</a> <a name="authldapauthoritative" id="authldapauthoritative">Directive</a></h2><table class="directive"><tr><th><a href="directive-dict.html#Description">Description: 
 | ||
|               </a></th><td /></tr><tr><th><a href="directive-dict.html#Syntax">Syntax:
 | ||
|               </a></th><td>AuthLDAPAuthoritative on|off</td></tr><tr><th><a href="directive-dict.html#Default">Default: 
 | ||
|               </a></th><td><code>AuthLDAPAuthoritative on</code></td></tr><tr><th><a href="directive-dict.html#Context">Context:
 | ||
|               </a></th><td>directory, .htaccess</td></tr><tr><th><a href="directive-dict.html#Override">Override:
 | ||
|               </a></th><td>AuthConfig</td></tr><tr><th><a href="directive-dict.html#Status">Status:
 | ||
|               </a></th><td>experimental</td></tr><tr><th><a href="directive-dict.html#Module">Module:
 | ||
|               </a></th><td>mod_auth_ldap</td></tr></table>
 | ||
|     <p>Set to <code>off</code> if this module should let other
 | ||
|     authentication modules attempt to authenticate the user, should
 | ||
|     authentication with this module fail. Control is only passed on
 | ||
|     to lower modules if there is no DN or rule that matches the
 | ||
|     supplied user name (as passed by the client).</p>
 | ||
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="directive-section"><h2><a name="AuthLDAPBindDN" id="AuthLDAPBindDN">AuthLDAPBindDN</a> <a name="authldapbinddn" id="authldapbinddn">Directive</a></h2><table class="directive"><tr><th><a href="directive-dict.html#Description">Description: 
 | ||
|               </a></th><td /></tr><tr><th><a href="directive-dict.html#Syntax">Syntax:
 | ||
|               </a></th><td>AuthLDAPBindDN <em>distinguished-name</em></td></tr><tr><th><a href="directive-dict.html#Context">Context:
 | ||
|               </a></th><td>directory, .htaccess</td></tr><tr><th><a href="directive-dict.html#Override">Override:
 | ||
|               </a></th><td>AuthConfig</td></tr><tr><th><a href="directive-dict.html#Status">Status:
 | ||
|               </a></th><td>experimental</td></tr><tr><th><a href="directive-dict.html#Module">Module:
 | ||
|               </a></th><td>mod_auth_ldap</td></tr></table>
 | ||
|     <p>An optional DN used to bind to the server when searching for
 | ||
|     entries. If not provided, <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> will use
 | ||
|     an anonymous bind.</p>
 | ||
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="directive-section"><h2><a name="AuthLDAPBindPassword" id="AuthLDAPBindPassword">AuthLDAPBindPassword</a> <a name="authldapbindpassword" id="authldapbindpassword">Directive</a></h2><table class="directive"><tr><th><a href="directive-dict.html#Description">Description: 
 | ||
|               </a></th><td /></tr><tr><th><a href="directive-dict.html#Syntax">Syntax:
 | ||
|               </a></th><td>AuthLDAPBindPassword <em>password</em></td></tr><tr><th><a href="directive-dict.html#Context">Context:
 | ||
|               </a></th><td>directory, .htaccess</td></tr><tr><th><a href="directive-dict.html#Override">Override:
 | ||
|               </a></th><td>AuthConfig</td></tr><tr><th><a href="directive-dict.html#Status">Status:
 | ||
|               </a></th><td>experimental</td></tr><tr><th><a href="directive-dict.html#Module">Module:
 | ||
|               </a></th><td>mod_auth_ldap</td></tr></table>
 | ||
|     <p>A bind password to use in conjunction with the bind DN. Note
 | ||
|     that the bind password is probably sensitive data, and should be
 | ||
|     properly protected. You should only use the <code class="directive"><a href="#authldapbinddn">AuthLDAPBindDN</a></code> and <code class="directive"><a href="#authldapbindpassword">AuthLDAPBindPassword</a></code> if you
 | ||
|     absolutely need them to search the directory.</p> 
 | ||
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="directive-section"><h2><a name="AuthLDAPCompareDNOnServer" id="AuthLDAPCompareDNOnServer">AuthLDAPCompareDNOnServer</a> <a name="authldapcomparednonserver" id="authldapcomparednonserver">Directive</a></h2><table class="directive"><tr><th><a href="directive-dict.html#Description">Description: 
 | ||
|               </a></th><td /></tr><tr><th><a href="directive-dict.html#Syntax">Syntax:
 | ||
|               </a></th><td>AuthLDAPCompareDNOnServer on|off</td></tr><tr><th><a href="directive-dict.html#Default">Default: 
 | ||
|               </a></th><td><code>AuthLDAPCompareDNOnServer on</code></td></tr><tr><th><a href="directive-dict.html#Context">Context:
 | ||
|               </a></th><td>directory, .htaccess</td></tr><tr><th><a href="directive-dict.html#Override">Override:
 | ||
|               </a></th><td>AuthConfig</td></tr><tr><th><a href="directive-dict.html#Status">Status:
 | ||
|               </a></th><td>experimental</td></tr><tr><th><a href="directive-dict.html#Module">Module:
 | ||
|               </a></th><td>mod_auth_ldap</td></tr></table>
 | ||
|     <p>When set, <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> will use the LDAP
 | ||
|     server to compare the DNs. This is the only foolproof way to
 | ||
|     compare DNs.  <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> will search the
 | ||
|     directory for the DN specified with the <a href="#reqdn"><code>require dn</code></a> directive, then,
 | ||
|     retrieve the DN and compare it with the DN retrieved from the user
 | ||
|     entry. If this directive is not set,
 | ||
|     <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> simply does a string comparison. It
 | ||
|     is possible to get false negatives with this approach, but it is
 | ||
|     much faster. Note the <code class="module"><a href="../mod/mod_ldap.html">mod_ldap</a></code> cache can speed up
 | ||
|     DN comparison in most situations.</p>
 | ||
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="directive-section"><h2><a name="AuthLDAPDereferenceAliases" id="AuthLDAPDereferenceAliases">AuthLDAPDereferenceAliases</a> <a name="authldapdereferencealiases" id="authldapdereferencealiases">Directive</a></h2><table class="directive"><tr><th><a href="directive-dict.html#Description">Description: 
 | ||
|               </a></th><td /></tr><tr><th><a href="directive-dict.html#Syntax">Syntax:
 | ||
|               </a></th><td>AuthLDAPDereferenceAliases never|searching|finding|always</td></tr><tr><th><a href="directive-dict.html#Default">Default: 
 | ||
|               </a></th><td><code>AuthLDAPDereferenceAliases Always</code></td></tr><tr><th><a href="directive-dict.html#Context">Context:
 | ||
|               </a></th><td>directory, .htaccess</td></tr><tr><th><a href="directive-dict.html#Override">Override:
 | ||
|               </a></th><td>AuthConfig</td></tr><tr><th><a href="directive-dict.html#Status">Status:
 | ||
|               </a></th><td>experimental</td></tr><tr><th><a href="directive-dict.html#Module">Module:
 | ||
|               </a></th><td>mod_auth_ldap</td></tr></table>
 | ||
|     <p>This directive specifies when <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> will
 | ||
|     de-reference aliases during LDAP operations. The default is
 | ||
|     <code>always</code>.</p>
 | ||
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="directive-section"><h2><a name="AuthLDAPEnabled" id="AuthLDAPEnabled">AuthLDAPEnabled</a> <a name="authldapenabled" id="authldapenabled">Directive</a></h2><table class="directive"><tr><th><a href="directive-dict.html#Description">Description: 
 | ||
|               </a></th><td /></tr><tr><th><a href="directive-dict.html#Syntax">Syntax:
 | ||
|               </a></th><td> AuthLDAPEnabled on|off</td></tr><tr><th><a href="directive-dict.html#Default">Default: 
 | ||
|               </a></th><td><code>AuthLDAPEnabled on</code></td></tr><tr><th><a href="directive-dict.html#Context">Context:
 | ||
|               </a></th><td>directory, .htaccess</td></tr><tr><th><a href="directive-dict.html#Override">Override:
 | ||
|               </a></th><td>AuthConfig</td></tr><tr><th><a href="directive-dict.html#Status">Status:
 | ||
|               </a></th><td>experimental</td></tr><tr><th><a href="directive-dict.html#Module">Module:
 | ||
|               </a></th><td>mod_auth_ldap</td></tr></table>
 | ||
|     <p>Set to <code>off</code> to disable
 | ||
|     <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> in certain directories. This is
 | ||
|     useful if you have <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> enabled at or
 | ||
|     near the top of your tree, but want to disable it completely in
 | ||
|     certain locations.</p> 
 | ||
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="directive-section"><h2><a name="AuthLDAPFrontPageHack" id="AuthLDAPFrontPageHack">AuthLDAPFrontPageHack</a> <a name="authldapfrontpagehack" id="authldapfrontpagehack">Directive</a></h2><table class="directive"><tr><th><a href="directive-dict.html#Description">Description: 
 | ||
|               </a></th><td /></tr><tr><th><a href="directive-dict.html#Syntax">Syntax:
 | ||
|               </a></th><td>AuthLDAPFrontPageHack on|off</td></tr><tr><th><a href="directive-dict.html#Default">Default: 
 | ||
|               </a></th><td><code>AuthLDAPFronPageHack off</code></td></tr><tr><th><a href="directive-dict.html#Context">Context:
 | ||
|               </a></th><td>directory, .htaccess</td></tr><tr><th><a href="directive-dict.html#Override">Override:
 | ||
|               </a></th><td>AuthConfig</td></tr><tr><th><a href="directive-dict.html#Status">Status:
 | ||
|               </a></th><td>experimental</td></tr><tr><th><a href="directive-dict.html#Module">Module:
 | ||
|               </a></th><td>mod_auth_ldap</td></tr></table>
 | ||
|     <p>See the section on <a href="#frontpage">using Microsoft
 | ||
|     FrontPage</a> with <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code>.</p>
 | ||
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="directive-section"><h2><a name="AuthLDAPGroupAttribute" id="AuthLDAPGroupAttribute">AuthLDAPGroupAttribute</a> <a name="authldapgroupattribute" id="authldapgroupattribute">Directive</a></h2><table class="directive"><tr><th><a href="directive-dict.html#Description">Description: 
 | ||
|               </a></th><td /></tr><tr><th><a href="directive-dict.html#Syntax">Syntax:
 | ||
|               </a></th><td>AuthLDAPGroupAttribute <em>attribute</em></td></tr><tr><th><a href="directive-dict.html#Context">Context:
 | ||
|               </a></th><td>directory, .htaccess</td></tr><tr><th><a href="directive-dict.html#Override">Override:
 | ||
|               </a></th><td>AuthConfig</td></tr><tr><th><a href="directive-dict.html#Status">Status:
 | ||
|               </a></th><td>experimental</td></tr><tr><th><a href="directive-dict.html#Module">Module:
 | ||
|               </a></th><td>mod_auth_ldap</td></tr></table>
 | ||
|     <p>This directive specifies which LDAP attributes are used to
 | ||
|     check for group membership. Multiple attributes can be used by
 | ||
|     specifying this directive multiple times. If not specified,
 | ||
|     then <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> uses the <code>member</code> and
 | ||
|     <code>uniquemember</code> attributes.</p>
 | ||
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="directive-section"><h2><a name="AuthLDAPGroupAttributeIsDN" id="AuthLDAPGroupAttributeIsDN">AuthLDAPGroupAttributeIsDN</a> <a name="authldapgroupattributeisdn" id="authldapgroupattributeisdn">Directive</a></h2><table class="directive"><tr><th><a href="directive-dict.html#Description">Description: 
 | ||
|               </a></th><td /></tr><tr><th><a href="directive-dict.html#Syntax">Syntax:
 | ||
|               </a></th><td>AuthLDAPGroupAttributeIsDN on|off</td></tr><tr><th><a href="directive-dict.html#Default">Default: 
 | ||
|               </a></th><td><code>AuthLDAPGroupAttributeIsDN on</code></td></tr><tr><th><a href="directive-dict.html#Context">Context:
 | ||
|               </a></th><td>directory, .htaccess</td></tr><tr><th><a href="directive-dict.html#Override">Override:
 | ||
|               </a></th><td>AuthConfig</td></tr><tr><th><a href="directive-dict.html#Status">Status:
 | ||
|               </a></th><td>experimental</td></tr><tr><th><a href="directive-dict.html#Module">Module:
 | ||
|               </a></th><td>mod_auth_ldap</td></tr></table>
 | ||
|     <p>When set <code>on</code>, this directive says to use the
 | ||
|     distinguished name of the client username when checking for group
 | ||
|     membership.  Otherwise, the username will be used. For example,
 | ||
|     assume that the client sent the username <code>bjenson</code>,
 | ||
|     which corresponds to the LDAP DN <code>cn=Babs Jenson,
 | ||
|     o=Airius</code>. If this directive is set,
 | ||
|     <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> will check if the group has
 | ||
|     <code>cn=Babs Jenson, o=Airius</code> as a member. If this
 | ||
|     directive is not set, then <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> will
 | ||
|     check if the group has <code>bjenson</code> as a member.</p>
 | ||
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="directive-section"><h2><a name="AuthLDAPRemoteUserIsDN" id="AuthLDAPRemoteUserIsDN">AuthLDAPRemoteUserIsDN</a> <a name="authldapremoteuserisdn" id="authldapremoteuserisdn">Directive</a></h2><table class="directive"><tr><th><a href="directive-dict.html#Description">Description: 
 | ||
|               </a></th><td /></tr><tr><th><a href="directive-dict.html#Syntax">Syntax:
 | ||
|               </a></th><td>AuthLDAPRemoteUserIsDN on|off</td></tr><tr><th><a href="directive-dict.html#Default">Default: 
 | ||
|               </a></th><td><code>AuthLDAPUserIsDN off</code></td></tr><tr><th><a href="directive-dict.html#Context">Context:
 | ||
|               </a></th><td>directory, .htaccess</td></tr><tr><th><a href="directive-dict.html#Override">Override:
 | ||
|               </a></th><td>AuthConfig</td></tr><tr><th><a href="directive-dict.html#Status">Status:
 | ||
|               </a></th><td>experimental</td></tr><tr><th><a href="directive-dict.html#Module">Module:
 | ||
|               </a></th><td>mod_auth_ldap</td></tr></table>
 | ||
|     <p>If this directive is set to on, the value of the
 | ||
|     <code>REMOTE_USER</code> environment variable will be set to the full
 | ||
|     distinguished name of the authenticated user, rather than just
 | ||
|     the username that was passed by the client. It is turned off by
 | ||
|     default.</p>
 | ||
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="directive-section"><h2><a name="AuthLDAPStartTLS directive" id="AuthLDAPStartTLS directive">AuthLDAPStartTLS directive</a> <a name="authldapstarttls directive" id="authldapstarttls directive">Directive</a></h2><table class="directive"><tr><th><a href="directive-dict.html#Description">Description: 
 | ||
|               </a></th><td /></tr><tr><th><a href="directive-dict.html#Syntax">Syntax:
 | ||
|               </a></th><td>AuthLDAPStartTLS on|off</td></tr><tr><th><a href="directive-dict.html#Default">Default: 
 | ||
|               </a></th><td><code>AuthLDAPStartTLS off</code></td></tr><tr><th><a href="directive-dict.html#Context">Context:
 | ||
|               </a></th><td>directory, .htaccess</td></tr><tr><th><a href="directive-dict.html#Override">Override:
 | ||
|               </a></th><td>AuthConfig</td></tr><tr><th><a href="directive-dict.html#Status">Status:
 | ||
|               </a></th><td>experimental</td></tr><tr><th><a href="directive-dict.html#Module">Module:
 | ||
|               </a></th><td>mod_auth_ldap</td></tr></table>
 | ||
|     <p>If this directive is set to <code>on</code>,
 | ||
|     <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> will start a secure TLS session
 | ||
|     after connecting to the LDAP server. This requires your LDAP
 | ||
|     server to support TLS.</p>
 | ||
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="directive-section"><h2><a name="AuthLDAPUrl" id="AuthLDAPUrl">AuthLDAPUrl</a> <a name="authldapurl" id="authldapurl">Directive</a></h2><table class="directive"><tr><th><a href="directive-dict.html#Description">Description: 
 | ||
|               </a></th><td /></tr><tr><th><a href="directive-dict.html#Syntax">Syntax:
 | ||
|               </a></th><td>AuthLDAPUrl <em>url</em></td></tr><tr><th><a href="directive-dict.html#Context">Context:
 | ||
|               </a></th><td>directory, .htaccess</td></tr><tr><th><a href="directive-dict.html#Override">Override:
 | ||
|               </a></th><td>AuthConfig</td></tr><tr><th><a href="directive-dict.html#Status">Status:
 | ||
|               </a></th><td>experimental</td></tr><tr><th><a href="directive-dict.html#Module">Module:
 | ||
|               </a></th><td>mod_auth_ldap</td></tr></table>
 | ||
|     <p>An RFC 2255 URL which specifies the LDAP search parameters
 | ||
|     to use. The syntax of the URL is</p>
 | ||
| <div class="example"><p><code>ldap://host:port/basedn?attribute?scope?filter</code></p></div>
 | ||
| 
 | ||
| <dl>
 | ||
| <dt>ldap</dt>
 | ||
| 
 | ||
|         <dd>For regular ldap, use the
 | ||
|         string <code>ldap</code>. For secure LDAP, use <code>ldaps</code>
 | ||
|         instead. Secure LDAP is only available if Apache was linked
 | ||
|         to an LDAP library with SSL support.</dd>
 | ||
| 
 | ||
| <dt>host:port</dt>
 | ||
| 
 | ||
|         <dd>
 | ||
|           <p>The name/port of the ldap server (defaults to
 | ||
|           <code>localhost:389</code> for <code>ldap</code>, and
 | ||
|           <code>localhost:636</code> for <code>ldaps</code>). To
 | ||
|           specify multiple, redundant LDAP servers, just list all
 | ||
|           servers, separated by spaces. <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code>
 | ||
|           will try connecting to each server in turn, until it makes a
 | ||
|           successful connection.</p>
 | ||
| 
 | ||
|           <p>Once a connection has been made to a server, that
 | ||
|           connection remains active for the life of the
 | ||
|           <code>httpd</code> process, or until the LDAP server goes
 | ||
|           down.</p>
 | ||
| 
 | ||
|           <p>If the LDAP server goes down and breaks an existing
 | ||
|           connection, <code class="module"><a href="../mod/mod_auth_ldap.html">mod_auth_ldap</a></code> will attempt to
 | ||
|           re-connect, starting with the primary server, and trying
 | ||
|           each redundant server in turn. Note that this is different
 | ||
|           than a true round-robin search.</p>
 | ||
|         </dd>
 | ||
| 
 | ||
| <dt>basedn</dt>
 | ||
| 
 | ||
|         <dd>The DN of the branch of the
 | ||
|         directory where all searches should start from. At the very
 | ||
|         least, this must be the top of your directory tree, but
 | ||
|         could also specify a subtree in the directory.</dd>
 | ||
| 
 | ||
| <dt>attribute</dt>
 | ||
| 
 | ||
|         <dd>The attribute to search for.
 | ||
|         Although RFC 2255 allows a comma-separated list of
 | ||
|         attributes, only the first attribute will be used, no
 | ||
|         matter how many are provided. If no attributes are
 | ||
|         provided, the default is to use <code>uid</code>. It's a good
 | ||
|         idea to choose an attribute that will be unique across all
 | ||
|         entries in the subtree you will be using.</dd>
 | ||
| 
 | ||
| <dt>scope</dt>
 | ||
| 
 | ||
|         <dd>The scope of the search. Can be either <code>one</code> or
 | ||
|         <code>sub</code>. Note that a scope of <code>base</code> is
 | ||
|         also supported by RFC 2255, but is not supported by this
 | ||
|         module. If the scope is not provided, or if <code>base</code> scope
 | ||
|         is specified, the default is to use a scope of
 | ||
|         <code>sub</code>.</dd>
 | ||
| 
 | ||
| <dt>filter</dt>
 | ||
| 
 | ||
|         <dd>A valid LDAP search filter. If
 | ||
|         not provided, defaults to <code>(objectClass=*)</code>, which
 | ||
|         will search for all objects in the tree. Filters are
 | ||
|         limited to approximately 8000 characters (the definition of
 | ||
|         <code>MAX_STRING_LEN</code> in the Apache source code). This
 | ||
|         should be than sufficient for any application.</dd>
 | ||
| </dl>
 | ||
| 
 | ||
|     <p>When doing searches, the attribute, filter and username passed
 | ||
|     by the HTTP client are combined to create a search filter that
 | ||
|     looks like
 | ||
|     <code>(&(<em>filter</em>)(<em>attribute</em>=<em>username</em>))</code>.</p>
 | ||
| 
 | ||
|     <p>For example, consider an URL of
 | ||
|     <code>ldap://ldap.airius.com/o=Airius?cn?sub?(posixid=*)</code>. When
 | ||
|     a client attempts to connect using a username of <code>Babs
 | ||
|     Jenson</code>, the resulting search filter will be
 | ||
|     <code>(&(posixid=*)(cn=Babs Jenson))</code>.</p>
 | ||
| 
 | ||
|     <p>See above for examples of <code class="directive"><a href="#authldapurl">AuthLDAPURL</a></code> URLs.</p>
 | ||
| </div></div><div id="footer"><p class="apache">Maintained by the <a href="http://httpd.apache.org/docs-project/">Apache HTTP Server Documentation Project</a></p><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></body></html> |