]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_auth_basic.html.en
rebuild
[apache] / docs / manual / mod / mod_auth_basic.html.en
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!--
4         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5               This file is generated from xml source: DO NOT EDIT
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7       -->
8 <title>mod_auth_basic - Apache HTTP Server Version 2.5</title>
9 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11 <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
12 <script src="../style/scripts/prettify.min.js" type="text/javascript">
13 </script>
14
15 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
16 <body>
17 <div id="page-header">
18 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
19 <p class="apache">Apache HTTP Server Version 2.5</p>
20 <img alt="" src="../images/feather.gif" /></div>
21 <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
22 <div id="path">
23 <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.5</a> &gt; <a href="./">Modules</a></div>
24 <div id="page-content">
25 <div id="preamble"><h1>Apache Module mod_auth_basic</h1>
26 <div class="toplang">
27 <p><span>Available Languages: </span><a href="../en/mod/mod_auth_basic.html" title="English">&nbsp;en&nbsp;</a> |
28 <a href="../fr/mod/mod_auth_basic.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
29 <a href="../ja/mod/mod_auth_basic.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
30 <a href="../ko/mod/mod_auth_basic.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
31 </div>
32 <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Basic HTTP authentication</td></tr>
33 <tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
34 <tr><th><a href="module-dict.html#ModuleIdentifier">Module Identifier:</a></th><td>auth_basic_module</td></tr>
35 <tr><th><a href="module-dict.html#SourceFile">Source File:</a></th><td>mod_auth_basic.c</td></tr></table>
36 <h3>Summary</h3>
37
38     <p>This module allows the use of HTTP Basic Authentication to
39     restrict access by looking up users in the given providers.
40     HTTP Digest Authentication is provided by
41     <code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code>.  This module should
42     usually be combined with at least one authentication module
43     such as <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code> and one authorization
44     module such as <code class="module"><a href="../mod/mod_authz_user.html">mod_authz_user</a></code>.</p>
45 </div>
46 <div id="quickview"><h3 class="directives">Directives</h3>
47 <ul id="toc">
48 <li><img alt="" src="../images/down.gif" /> <a href="#authbasicauthoritative">AuthBasicAuthoritative</a></li>
49 <li><img alt="" src="../images/down.gif" /> <a href="#authbasicfake">AuthBasicFake</a></li>
50 <li><img alt="" src="../images/down.gif" /> <a href="#authbasicprovider">AuthBasicProvider</a></li>
51 <li><img alt="" src="../images/down.gif" /> <a href="#authbasicusedigestalgorithm">AuthBasicUseDigestAlgorithm</a></li>
52 </ul>
53 <h3>See also</h3>
54 <ul class="seealso">
55 <li><code class="directive"><a href="../mod/mod_authn_core.html#authname">AuthName</a></code></li>
56 <li><code class="directive"><a href="../mod/mod_authn_core.html#authtype">AuthType</a></code></li>
57 <li><code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code></li>
58 <li><a href="../howto/auth.html">Authentication howto</a></li>
59 </ul><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div>
60
61 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
62 <div class="directive-section"><h2><a name="AuthBasicAuthoritative" id="AuthBasicAuthoritative">AuthBasicAuthoritative</a> <a name="authbasicauthoritative" id="authbasicauthoritative">Directive</a></h2>
63 <table class="directive">
64 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets whether authorization and authentication are passed to
65 lower level modules</td></tr>
66 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthBasicAuthoritative On|Off</code></td></tr>
67 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthBasicAuthoritative On</code></td></tr>
68 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
69 <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
70 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
71 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_basic</td></tr>
72 </table>
73     <p>Normally, each authorization module listed in <code class="directive"><a href="#authbasicprovider">AuthBasicProvider</a></code> will attempt
74     to verify the user, and if the user is not found in any provider,
75     access will be denied. Setting the
76     <code class="directive">AuthBasicAuthoritative</code> directive explicitly
77     to <code>Off</code> allows for both authentication and
78     authorization to be passed on to other non-provider-based modules
79     if there is <strong>no userID</strong> or <strong>rule</strong>
80     matching the supplied userID.  This should only be necessary when
81     combining <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> with third-party modules
82     that are not configured with the <code class="directive"><a href="#authbasicprovider">AuthBasicProvider</a></code>
83     directive.  When using such modules, the order of processing
84     is determined in the modules' source code and is not configurable.</p>
85
86 </div>
87 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
88 <div class="directive-section"><h2><a name="AuthBasicFake" id="AuthBasicFake">AuthBasicFake</a> <a name="authbasicfake" id="authbasicfake">Directive</a></h2>
89 <table class="directive">
90 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Fake basic authentication using the given expressions for
91 username and password</td></tr>
92 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthBasicFake off|username [password]</code></td></tr>
93 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>none</code></td></tr>
94 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
95 <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
96 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
97 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_basic</td></tr>
98 </table>
99     <p>The username and password specified are combined into an
100     Authorization header, which is passed to the server or service
101     behind the webserver. Both the username and password fields are
102     interpreted using the <a href="../expr.html">expression parser</a>,
103     which allows both the username and password to be set based on
104     request parameters.</p>
105
106     <p>If the password is not specified, the default value "password"
107     will be used. To disable fake basic authentication for an URL
108     space, specify "AuthBasicFake off".</p>
109
110     <p>In this example, we pass a fixed username and password to a
111     backend server.</p>
112
113     <div class="example"><h3>Fixed Example</h3><pre class="prettyprint lang-config">&lt;Location /demo&gt;
114     AuthBasicFake demo demopass
115 &lt;/Location&gt;</pre>
116 </div>
117
118     <p>In this example, we pass the email address extracted from a client
119     certificate, extending the functionality of the FakeBasicAuth option
120     within the <code class="directive"><a href="../mod/mod_ssl.html#ssloptions">SSLOptions</a></code>
121     directive. Like the FakeBasicAuth option, the password is set to the
122     fixed string "password".</p>
123
124     <div class="example"><h3>Certificate Example</h3><pre class="prettyprint lang-config">&lt;Location /secure&gt;
125     AuthBasicFake %{SSL_CLIENT_S_DN_Email}
126 &lt;/Location&gt;</pre>
127 </div>
128
129     <p>Extending the above example, we generate a password by hashing the
130     email address with a fixed passphrase, and passing the hash to the
131     backend server. This can be used to gate into legacy systems that do
132     not support client certificates.</p>
133
134     <div class="example"><h3>Password Example</h3><pre class="prettyprint lang-config">&lt;Location /secure&gt;
135     AuthBasicFake %{SSL_CLIENT_S_DN_Email} %{sha1:passphrase-%{SSL_CLIENT_S_DN_Email}}
136 &lt;/Location&gt;</pre>
137 </div>
138
139     <div class="example"><h3>Exclusion Example</h3><pre class="prettyprint lang-config">&lt;Location /public&gt;
140     AuthBasicFake off
141 &lt;/Location&gt;</pre>
142 </div>
143
144
145 </div>
146 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
147 <div class="directive-section"><h2><a name="AuthBasicProvider" id="AuthBasicProvider">AuthBasicProvider</a> <a name="authbasicprovider" id="authbasicprovider">Directive</a></h2>
148 <table class="directive">
149 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the authentication provider(s) for this location</td></tr>
150 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthBasicProvider <var>provider-name</var>
151 [<var>provider-name</var>] ...</code></td></tr>
152 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthBasicProvider file</code></td></tr>
153 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
154 <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
155 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
156 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_basic</td></tr>
157 </table>
158     <p>The <code class="directive">AuthBasicProvider</code> directive sets
159     which provider is used to authenticate the users for this location.
160     The default <code>file</code> provider is implemented
161     by the <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code> module.  Make sure
162     that the chosen provider module is present in the server.</p>
163     <div class="example"><h3>Example</h3><pre class="prettyprint lang-config">&lt;Location /secure&gt;
164     AuthType basic
165     AuthName "private area"
166     AuthBasicProvider  dbm
167     AuthDBMType        SDBM
168     AuthDBMUserFile    /www/etc/dbmpasswd
169     Require            valid-user
170 &lt;/Location&gt;</pre>
171 </div>
172     <p> Providers are queried in order until a provider finds a match
173     for the requested username, at which point this sole provider will
174     attempt to check the password.  A failure to verify the password does
175     not result in control being passed on to subsequent providers.</p>
176
177     <p>Providers are implemented by <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code>,
178     <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code>, <code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code>,
179     <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> and <code class="module"><a href="../mod/mod_authn_socache.html">mod_authn_socache</a></code>.</p>
180
181 </div>
182 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
183 <div class="directive-section"><h2><a name="AuthBasicUseDigestAlgorithm" id="AuthBasicUseDigestAlgorithm">AuthBasicUseDigestAlgorithm</a> <a name="authbasicusedigestalgorithm" id="authbasicusedigestalgorithm">Directive</a></h2>
184 <table class="directive">
185 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Check passwords against the authentication providers as if
186 Digest Authentication was in force instead of Basic Authentication.
187 </td></tr>
188 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthBasicUseDigestAlgorithm MD5|Off</code></td></tr>
189 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthBasicUseDigestAlgorithm Off</code></td></tr>
190 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
191 <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
192 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
193 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_basic</td></tr>
194 </table>
195     <p>Normally, when using Basic Authentication, the providers listed in
196     <code class="directive"><a href="#authbasicprovider">AuthBasicProvider</a></code>
197     attempt to verify a user by checking their data stores for
198     a matching username and associated password.  The stored passwords
199     are usually encrypted, but not necessarily so; each provider may
200     choose its own storage scheme for passwords.</p>
201
202     <p>When using <code class="directive"><a href="../mod/mod_auth_digest.html#authdigestprovider">AuthDigestProvider</a></code> and Digest
203     Authentication, providers perform a similar check to find a matching
204     username in their data stores.  However, unlike in the Basic
205     Authentication case, the value associated with each stored username
206     must be an encrypted string composed from the username, realm name,
207     and password.  (See
208     <a href="http://tools.ietf.org/html/rfc2617#section-3.2.2.2">
209     RFC 2617, Section 3.2.2.2</a> for more details on the format used
210     for this encrypted string.)</p>
211
212     <p>As a consequence of the difference in the stored values between
213     Basic and Digest Authentication, converting from Digest
214     Authentication to Basic Authentication generally requires that all
215     users be assigned new passwords, as their existing passwords cannot
216     be recovered from the password storage scheme imposed on those
217     providers which support Digest Authentication.</p>
218
219     <p>Setting the <code class="directive"><a href="#authbasicusedigestalgorithm">AuthBasicUseDigestAlgorithm</a></code> directive
220     to <code>MD5</code> will cause the user's Basic Authentication password
221     to be checked using the same encrypted format as for Digest
222     Authentication.  First a string composed from the username, realm name,
223     and password is hashed with MD5; then the username and this encrypted
224     string are passed to the providers listed in
225     <code class="directive"><a href="#authbasicprovider">AuthBasicProvider</a></code>
226     as if
227     <code class="directive"><a href="../mod/mod_authn_core.html#authtype">AuthType</a></code>
228     was set to <code>Digest</code> and Digest Authentication was in force.
229     </p>
230
231     <p>Through the use of <code class="directive"><a href="#authbasicusedigestalgorithm">AuthBasicUseDigestAlgorithm</a></code>
232     a site may switch from Digest to Basic Authentication without
233     requiring users to be assigned new passwords.</p>
234
235     <div class="note">
236       The inverse process of switching from Basic to Digest
237       Authentication without assigning new passwords is generally
238       not possible.  Only if the Basic Authentication passwords
239       have been stored in plain text or with a reversable encryption
240       scheme will it be possible to recover them and generate a
241       new data store following the Digest Authentication password
242       storage scheme.
243     </div>
244
245     <div class="note">
246       Only providers which support Digest Authentication will be able
247       to authenticate users when <code class="directive"><a href="#authbasicusedigestalgorithm">AuthBasicUseDigestAlgorithm</a></code>
248       is set to <code>MD5</code>.  Use of other providers will result
249       in an error response and the client will be denied access.
250     </div>
251
252 </div>
253 </div>
254 <div class="bottomlang">
255 <p><span>Available Languages: </span><a href="../en/mod/mod_auth_basic.html" title="English">&nbsp;en&nbsp;</a> |
256 <a href="../fr/mod/mod_auth_basic.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
257 <a href="../ja/mod/mod_auth_basic.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
258 <a href="../ko/mod/mod_auth_basic.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
259 </div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comments</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
260 <script type="text/javascript"><!--//--><![CDATA[//><!--
261 var comments_shortname = 'httpd';
262 var comments_identifier = 'http://httpd.apache.org/docs/trunk/mod/mod_auth_basic.html';
263 (function(w, d) {
264     if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
265         d.write('<div id="comments_thread"><\/div>');
266         var s = d.createElement('script');
267         s.type = 'text/javascript';
268         s.async = true;
269         s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
270         (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
271     }
272     else {
273         d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
274     }
275 })(window, document);
276 //--><!]]></script></div><div id="footer">
277 <p class="apache">Copyright 2014 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
278 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
279 if (typeof(prettyPrint) !== 'undefined') {
280     prettyPrint();
281 }
282 //--><!]]></script>
283 </body></html>