]> granicus.if.org Git - apache/blobdiff - docs/manual/mod/mod_authnz_ldap.xml
Merge in APR[-util] macros from branches/trunk-buildconf-noapr
[apache] / docs / manual / mod / mod_authnz_ldap.xml
index 7f743b71ac0d3c4e5fe409171c6d448e27af8fce..8e3210cd3a9b28db695ca29ed9bccdd0363e3db6 100644 (file)
@@ -67,8 +67,8 @@ for HTTP Basic authentication.</description>
 <section id="contents"><title>Contents</title>
 
     <ul>
-      <li>
-        <a href="#operation">Operation</a>
+      <li> <a href="#gcaveats">General caveats</a> </li>
+      <li> <a href="#operation">Operation</a>
 
         <ul>
           <li><a href="#authenphase">The Authentication
@@ -109,6 +109,16 @@ for HTTP Basic authentication.</description>
     </ul>
 </section>
 
+<section id="gcaveats"><title>General caveats</title>
+<p> This module caches authentication and authorization results based
+on the configuration of <module>mod_ldap</module>. Changes
+made to the backing LDAP server will not be immediately reflected on the
+HTTP Server, including but not limited to user lockouts/revocations, 
+password changes, or changes to group memberships.  Consult the directives 
+in <module>mod_ldap</module> for details of the cache tunables.
+</p>
+</section>
+
 <section id="operation"><title>Operation</title>
 
     <p>There are two phases in granting access to a user. The first
@@ -364,7 +374,9 @@ Require ldap-user "Joe Manager"
     <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>
-<highlight language="config">Require ldap-user bjenson fuser jmanager</highlight>
+<highlight language="config">
+Require ldap-user bjenson fuser jmanager
+</highlight>
 </section>
 
 <section id="reqgroup"><title>Require ldap-group</title>
@@ -383,7 +395,9 @@ uniqueMember: cn=Fred User, o=Example
 
     <p>The following directive would grant access to both Fred and
     Barbara:</p>
-<highlight language="config">Require ldap-group cn=Administrators, o=Example</highlight>
+<highlight language="config">
+Require ldap-group cn=Administrators, o=Example
+</highlight>
 
     <p>Members can also be found within sub-groups of a specified LDAP group
     if <directive module="mod_authnz_ldap">AuthLDAPMaxSubGroupDepth</directive>
@@ -448,7 +462,9 @@ AuthLDAPMaxSubGroupDepth 1
 
     <p>The following directive would grant access to a specific
     DN:</p>
-<highlight language="config">Require ldap-dn cn=Barbara Jenson, o=Example</highlight>
+<highlight language="config">
+Require ldap-dn cn=Barbara Jenson, o=Example
+</highlight>
 
     <p>Behavior of this directive is modified by the <directive
     module="mod_authnz_ldap">AuthLDAPCompareDNOnServer</directive>
@@ -465,7 +481,9 @@ AuthLDAPMaxSubGroupDepth 1
     <p>The following directive would grant access to anyone with
     the attribute employeeType = active</p>
 
-    <highlight language="config">Require ldap-attribute employeeType=active</highlight>
+    <highlight language="config">
+Require ldap-attribute "employeeType=active"
+</highlight>
 
     <p>Multiple attribute/value pairs can be specified on the same line
     separated by spaces or they can be specified in multiple
@@ -478,7 +496,9 @@ AuthLDAPMaxSubGroupDepth 1
     <p>The following directive would grant access to anyone with
     the city attribute equal to "San Jose" or status equal to "Active"</p>
 
-    <highlight language="config">Require ldap-attribute city="San Jose" status=active</highlight>
+    <highlight language="config">
+Require ldap-attribute city="San Jose" "status=active"
+</highlight>
 
 </section>
 
@@ -492,7 +512,9 @@ AuthLDAPMaxSubGroupDepth 1
     <p>The following directive would grant access to anyone having a cell phone
     and is in the marketing department</p>
 
-    <highlight language="config">Require ldap-filter &amp;(cell=*)(department=marketing)</highlight>
+    <highlight language="config">
+Require ldap-filter "&amp;(cell=*)(department=marketing)"
+</highlight>
 
     <p>The difference between the <code>Require ldap-filter</code> directive and the
     <code>Require ldap-attribute</code> directive is that <code>ldap-filter</code>
@@ -507,8 +529,8 @@ AuthLDAPMaxSubGroupDepth 1
     LDAP injection. The ldap function can be used for this purpose.</p>
 
 <highlight language="config">
-&lt;LocationMatch ^/dav/(?&lt;SITENAME&gt;[^/]+)/&gt;
-  Require ldap-filter (memberOf=cn=%{ldap:%{unescape:%{env:MATCH_SITENAME}},ou=Websites,o=Example)
+&lt;LocationMatch "^/dav/(?&lt;SITENAME&gt;[^/]+)/"&gt;
+  Require ldap-filter "(memberOf=cn=%{ldap:%{unescape:%{env:MATCH_SITENAME}},ou=Websites,o=Example)"
 &lt;/LocationMatch&gt;
 </highlight>
 
@@ -525,8 +547,8 @@ AuthLDAPMaxSubGroupDepth 1
     LDAP server:</p>
 
 <highlight language="config">
-&lt;LocationMatch ^/dav/(?&lt;SITENAME&gt;[^/]+)/&gt;
-Require ldap-search (cn=%{ldap:%{unescape:%{env:MATCH_SITENAME}} Website)
+&lt;LocationMatch "^/dav/(?&lt;SITENAME&gt;[^/]+)/"&gt;
+Require ldap-search "(cn=%{ldap:%{unescape:%{env:MATCH_SITENAME}} Website)"
 &lt;/LocationMatch&gt;
 </highlight>
 
@@ -554,7 +576,8 @@ Require valid-user
         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.
-<highlight language="config">AuthLDAPURL "ldap://ldap1.example.com ldap2.example.com/ou=People, o=Example"
+<highlight language="config">
+AuthLDAPURL "ldap://ldap1.example.com ldap2.example.com/ou=People, o=Example"
 Require valid-user
 </highlight>
       </li>
@@ -742,8 +765,8 @@ AuthLDAPURL ldap://10.0.0.1:3268/?userPrincipalName?sub
     that gets created in the web</p>
 <highlight language="config">
 AuthLDAPURL       "the url"
-AuthGroupFile     mygroupfile
-Require group     mygroupfile
+AuthGroupFile     "mygroupfile"
+Require group     "mygroupfile"
 </highlight>
 
 <section id="howitworks"><title>How It Works</title>
@@ -832,7 +855,7 @@ authorization</description>
 <directivesynopsis>
 <name>AuthLDAPBindAuthoritative</name>
 <description>Determines if other authentication providers are used when a user can be mapped to a DN but the server cannot successfully bind with the user's credentials.</description>
-<syntax>AuthLDAPBindAuthoritative<em>off|on</em></syntax>
+<syntax>AuthLDAPBindAuthoritative off|on</syntax>
 <default>AuthLDAPBindAuthoritative on</default>
 <contextlist><context>directory</context><context>.htaccess</context>
 </contextlist>
@@ -841,7 +864,7 @@ authorization</description>
     <p>By default, subsequent authentication providers are only queried if a
     user cannot be mapped to a DN, but not if the user can be mapped to a DN and their
     password cannot be verified with an LDAP bind.
-    If <directive module="mod_authnz_ldap">AuthLDAPBindAuthoritative</directive>
+    If <directive>AuthLDAPBindAuthoritative</directive>
     is set to <em>off</em>, other configured authentication modules will have
     a chance to validate the user if the LDAP bind (with the current user's credentials)
     fails for any reason.</p>
@@ -858,7 +881,7 @@ authorization</description>
 <name>AuthLDAPInitialBindAsUser</name>
 <description>Determines if the server does the initial DN lookup using the basic authentication users'
 own username, instead of anonymously or with hard-coded credentials for the server</description>
-<syntax>AuthLDAPInitialBindAsUser <em>off|on</em></syntax>
+<syntax>AuthLDAPInitialBindAsUser off|on</syntax>
 <default>AuthLDAPInitialBindAsUser off</default>
 <contextlist><context>directory</context><context>.htaccess</context>
 </contextlist>
@@ -895,7 +918,7 @@ own username, instead of anonymously or with hard-coded credentials for the serv
 <name>AuthLDAPInitialBindPattern</name>
 <description>Specifies the transformation of the basic authentication username to be used when binding to the LDAP server
 to perform a DN lookup</description>
-<syntax>AuthLDAPInitialBindPattern<em><var>regex</var> <var>substitution</var></em></syntax>
+<syntax>AuthLDAPInitialBindPattern <em><var>regex</var> <var>substitution</var></em></syntax>
 <default>AuthLDAPInitialBindPattern (.*) $1 (remote username used verbatim)</default>
 <contextlist><context>directory</context><context>.htaccess</context>
 </contextlist>
@@ -904,7 +927,7 @@ to perform a DN lookup</description>
 <usage>
     <p>If <directive module="mod_authnz_ldap">AuthLDAPInitialBindAsUser</directive> is set to
        <em>ON</em>, the basic authentication username will be transformed according to the
-       regular expression and substituion arguments.</p>
+       regular expression and substitution arguments.</p>
 
     <p> The regular expression argument is compared against the current basic authentication username.
         The substitution argument may contain backreferences, but has no other variable interpolation.</p>
@@ -914,8 +937,12 @@ to perform a DN lookup</description>
         <directive module="mod_authnz_ldap">AuthLDAPBindDN</directive>.
     </p>
 
-    <highlight language="config"> AuthLDAPInitialBindPattern (.+) $1@example.com </highlight>
-    <highlight language="config"> AuthLDAPInitialBindPattern (.+) cn=$1,dc=example,dc=com</highlight>
+    <highlight language="config">
+AuthLDAPInitialBindPattern (.+) $1@example.com
+    </highlight>
+    <highlight language="config">
+AuthLDAPInitialBindPattern (.+) cn=$1,dc=example,dc=com
+    </highlight>
 
     <note><title>Not available with authorization-only</title>
         This directive can only be used if this module authenticates the user, and
@@ -948,7 +975,7 @@ to perform a DN lookup</description>
 
 <directivesynopsis>
 <name>AuthLDAPBindPassword</name>
-<description>Password used in conjuction with the bind DN</description>
+<description>Password used in conjunction with the bind DN</description>
 <syntax>AuthLDAPBindPassword <em>password</em></syntax>
 <contextlist><context>directory</context><context>.htaccess</context>
 </contextlist>
@@ -960,7 +987,7 @@ to perform a DN lookup</description>
     that the bind password is probably sensitive data, and should be
     properly protected. You should only use the <directive
     module="mod_authnz_ldap">AuthLDAPBindDN</directive> and <directive
-    module="mod_authnz_ldap">AuthLDAPBindPassword</directive> if you
+    >AuthLDAPBindPassword</directive> if you
     absolutely need them to search the directory.</p>
 
     <p>If the value begins with exec: the resulting command will be
@@ -1145,8 +1172,8 @@ evaluated before the user search is discontinued.</description>
    <note><title>Nested groups performance</title>
    <p> When <directive>AuthLDAPSubGroupAttribute</directive> overlaps with
    <directive>AuthLDAPGroupAttribute</directive> (as it does by default and
-   as required by common LDAP schemas), uncached searching for subgroups in 
-   large groups can be very slow. If you use large, non-nested groups, keep 
+   as required by common LDAP schemas), uncached searching for subgroups in
+   large groups can be very slow. If you use large, non-nested groups, keep
    <directive>AuthLDAPMaxSubGroupDepth</directive> set to zero.</p>
    </note>
 
@@ -1174,7 +1201,7 @@ query to set the REMOTE_USER environment variable</description>
     directive is useful should you want people to log into a website
     using an email address, but a backend application expects the
     username as a userid.</p>
-    <p> This directive only has effect when this module is used for 
+    <p> This directive only has effect when this module is used for
     authentication.</p>
 </usage>
 </directivesynopsis>
@@ -1247,8 +1274,9 @@ are groups.</description>
 <usage>
     <p>An LDAP group object may contain members that are users and
     members that are groups (called nested or sub groups). The
-    <code>AuthLDAPSubGroupAttribute</code> directive identifies the
-    labels of group members and the <code>AuthLDAPGroupAttribute</code>
+    <directive>AuthLDAPSubGroupAttribute</directive> directive identifies the
+    labels of group members and the <directive module="mod_authnz_ldap"
+    >AuthLDAPGroupAttribute</directive>
     directive identifies the labels of the user members. Multiple
     attributes can be used by specifying this directive multiple times.
     If not specified, then <module>mod_authnz_ldap</module> uses the
@@ -1270,9 +1298,10 @@ objects that are groups during sub-group processing.</description>
 <usage>
     <p>An LDAP group object may contain members that are users and
     members that are groups (called nested or sub groups). The
-    <code>AuthLDAPSubGroupAttribute</code> directive identifies the
+    <directive module="mod_authnz_ldap">AuthLDAPSubGroupAttribute</directive>
+    directive identifies the
     labels of members that may be sub-groups of the current group
-    (as opposed to user members). The <code>AuthLDAPSubGroupClass</code>
+    (as opposed to user members). The <directive>AuthLDAPSubGroupClass</directive>
     directive specifies the LDAP objectClass values used in verifying that
     these potential sub-groups are in fact group objects. Verified sub-groups
     can then be searched for more user or sub-group members. Multiple
@@ -1295,7 +1324,9 @@ objects that are groups during sub-group processing.</description>
     to use. The syntax of the URL is</p>
 <example>ldap://host:port/basedn?attribute?scope?filter</example>
     <p>If you want to specify more than one LDAP URL that Apache should try in turn, the syntax is:</p>
-<highlight language="config">AuthLDAPUrl "ldap://ldap1.example.com ldap2.example.com/dc=..."</highlight>
+<highlight language="config">
+AuthLDAPUrl "ldap://ldap1.example.com ldap2.example.com/dc=..."
+</highlight>
 <p><em><strong>Caveat: </strong>If you specify multiple servers, you need to enclose the entire URL string in quotes;
 otherwise you will get an error: "AuthLDAPURL takes one argument, URL to define LDAP connection.." </em>
 You can of course use search parameters on each of these.</p>
@@ -1367,9 +1398,9 @@ You can of course use search parameters on each of these.</p>
         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 more than sufficient for any application. The keyword
-        <code>none</code> disables the use of a filter; this is required
-        by some primitive LDAP servers.</dd>
+        should be more than sufficient for any application. In 2.4.10 and later,
+        the keyword <code>none</code> disables the use of a filter; this is
+        required by some primitive LDAP servers.</dd>
 </dl>
 
     <p>When doing searches, the attribute, filter and username passed
@@ -1400,7 +1431,7 @@ You can of course use search parameters on each of these.</p>
 </dl>
 
     <p>See above for examples of <directive
-    module="mod_authnz_ldap">AuthLDAPURL</directive> URLs.</p>
+    module="mod_authnz_ldap">AuthLDAPUrl</directive> URLs.</p>
 </usage>
 </directivesynopsis>