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 <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7 This file is generated from xml source: DO NOT EDIT
8 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
10 <title>mod_auth_basic - Apache HTTP Server Version 2.5</title>
11 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
12 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
13 <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" />
14 <script src="../style/scripts/prettify.min.js" type="text/javascript">
17 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
19 <div id="page-header">
20 <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>
21 <p class="apache">Apache HTTP Server Version 2.5</p>
22 <img alt="" src="../images/feather.png" /></div>
23 <div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
25 <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Server</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.5</a> > <a href="./">Modules</a></div>
26 <div id="page-content">
27 <div id="preamble"><h1>Apache Module mod_auth_basic</h1>
29 <p><span>Available Languages: </span><a href="../en/mod/mod_auth_basic.html" title="English"> en </a> |
30 <a href="../fr/mod/mod_auth_basic.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
31 <a href="../ja/mod/mod_auth_basic.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
32 <a href="../ko/mod/mod_auth_basic.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
34 <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Basic HTTP authentication</td></tr>
35 <tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
36 <tr><th><a href="module-dict.html#ModuleIdentifier">Module Identifier:</a></th><td>auth_basic_module</td></tr>
37 <tr><th><a href="module-dict.html#SourceFile">Source File:</a></th><td>mod_auth_basic.c</td></tr></table>
40 <p>This module allows the use of HTTP Basic Authentication to
41 restrict access by looking up users in the given providers.
42 HTTP Digest Authentication is provided by
43 <code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code>. This module should
44 usually be combined with at least one authentication module
45 such as <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code> and one authorization
46 module such as <code class="module"><a href="../mod/mod_authz_user.html">mod_authz_user</a></code>.</p>
48 <div id="quickview"><h3 class="directives">Directives</h3>
50 <li><img alt="" src="../images/down.gif" /> <a href="#authbasicauthoritative">AuthBasicAuthoritative</a></li>
51 <li><img alt="" src="../images/down.gif" /> <a href="#authbasicfake">AuthBasicFake</a></li>
52 <li><img alt="" src="../images/down.gif" /> <a href="#authbasicprovider">AuthBasicProvider</a></li>
53 <li><img alt="" src="../images/down.gif" /> <a href="#authbasicusedigestalgorithm">AuthBasicUseDigestAlgorithm</a></li>
55 <h3>Bugfix checklist</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">httpd changelog</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&list_id=144532&product=Apache%20httpd-2&query_format=specific&order=changeddate%20DESC%2Cpriority%2Cbug_severity&component=mod_auth_basic">Known issues</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&component=mod_auth_basic">Report a bug</a></li></ul><h3>See also</h3>
57 <li><code class="directive"><a href="../mod/mod_authn_core.html#authname">AuthName</a></code></li>
58 <li><code class="directive"><a href="../mod/mod_authn_core.html#authtype">AuthType</a></code></li>
59 <li><code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code></li>
60 <li><a href="../howto/auth.html">Authentication howto</a></li>
61 <li><a href="#comments_section">Comments</a></li></ul></div>
63 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
64 <div class="directive-section"><h2><a name="AuthBasicAuthoritative" id="AuthBasicAuthoritative">AuthBasicAuthoritative</a> <a name="authbasicauthoritative" id="authbasicauthoritative">Directive</a></h2>
65 <table class="directive">
66 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets whether authorization and authentication are passed to
67 lower level modules</td></tr>
68 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthBasicAuthoritative On|Off</code></td></tr>
69 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthBasicAuthoritative On</code></td></tr>
70 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
71 <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
72 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
73 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_basic</td></tr>
75 <p>Normally, each authorization module listed in <code class="directive"><a href="#authbasicprovider">AuthBasicProvider</a></code> will attempt
76 to verify the user, and if the user is not found in any provider,
77 access will be denied. Setting the
78 <code class="directive">AuthBasicAuthoritative</code> directive explicitly
79 to <code>Off</code> allows for both authentication and
80 authorization to be passed on to other non-provider-based modules
81 if there is <strong>no userID</strong> or <strong>rule</strong>
82 matching the supplied userID. This should only be necessary when
83 combining <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> with third-party modules
84 that are not configured with the <code class="directive"><a href="#authbasicprovider">AuthBasicProvider</a></code>
85 directive. When using such modules, the order of processing
86 is determined in the modules' source code and is not configurable.</p>
89 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
90 <div class="directive-section"><h2><a name="AuthBasicFake" id="AuthBasicFake">AuthBasicFake</a> <a name="authbasicfake" id="authbasicfake">Directive</a></h2>
91 <table class="directive">
92 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Fake basic authentication using the given expressions for
93 username and password</td></tr>
94 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthBasicFake off|username [password]</code></td></tr>
95 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>none</code></td></tr>
96 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
97 <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
98 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
99 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_basic</td></tr>
100 <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Apache HTTP Server 2.4.5 and later</td></tr>
102 <p>The username and password specified are combined into an
103 Authorization header, which is passed to the server or service
104 behind the webserver. Both the username and password fields are
105 interpreted using the <a href="../expr.html">expression parser</a>,
106 which allows both the username and password to be set based on
107 request parameters.</p>
109 <p>If the password is not specified, the default value "password"
110 will be used. To disable fake basic authentication for an URL
111 space, specify "AuthBasicFake off".</p>
113 <p>In this example, we pass a fixed username and password to a
116 <div class="example"><h3>Fixed Example</h3><pre class="prettyprint lang-config"><Location "/demo">
117 AuthBasicFake demo demopass
118 </Location></pre>
121 <p>In this example, we pass the email address extracted from a client
122 certificate, extending the functionality of the FakeBasicAuth option
123 within the <code class="directive"><a href="../mod/mod_ssl.html#ssloptions">SSLOptions</a></code>
124 directive. Like the FakeBasicAuth option, the password is set to the
125 fixed string "password".</p>
127 <div class="example"><h3>Certificate Example</h3><pre class="prettyprint lang-config"><Location "/secure">
128 AuthBasicFake "%{SSL_CLIENT_S_DN_Email}"
129 </Location></pre>
132 <p>Extending the above example, we generate a password by hashing the
133 email address with a fixed passphrase, and passing the hash to the
134 backend server. This can be used to gate into legacy systems that do
135 not support client certificates.</p>
137 <div class="example"><h3>Password Example</h3><pre class="prettyprint lang-config"><Location "/secure">
138 AuthBasicFake "%{SSL_CLIENT_S_DN_Email}" "%{sha1:passphrase-%{SSL_CLIENT_S_DN_Email}}"
139 </Location></pre>
142 <div class="example"><h3>Exclusion Example</h3><pre class="prettyprint lang-config"><Location "/public">
144 </Location></pre>
149 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
150 <div class="directive-section"><h2><a name="AuthBasicProvider" id="AuthBasicProvider">AuthBasicProvider</a> <a name="authbasicprovider" id="authbasicprovider">Directive</a></h2>
151 <table class="directive">
152 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the authentication provider(s) for this location</td></tr>
153 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthBasicProvider <var>provider-name</var>
154 [<var>provider-name</var>] ...</code></td></tr>
155 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthBasicProvider file</code></td></tr>
156 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
157 <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
158 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
159 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_basic</td></tr>
161 <p>The <code class="directive">AuthBasicProvider</code> directive sets
162 which provider is used to authenticate the users for this location.
163 The default <code>file</code> provider is implemented
164 by the <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code> module. Make sure
165 that the chosen provider module is present in the server.</p>
166 <div class="example"><h3>Example</h3><pre class="prettyprint lang-config"><Location "/secure">
168 AuthName "private area"
169 AuthBasicProvider dbm
171 AuthDBMUserFile "/www/etc/dbmpasswd"
173 </Location></pre>
175 <p> Providers are queried in order until a provider finds a match
176 for the requested username, at which point this sole provider will
177 attempt to check the password. A failure to verify the password does
178 not result in control being passed on to subsequent providers.</p>
180 <p>Providers are implemented by <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code>,
181 <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>,
182 <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>
185 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
186 <div class="directive-section"><h2><a name="AuthBasicUseDigestAlgorithm" id="AuthBasicUseDigestAlgorithm">AuthBasicUseDigestAlgorithm</a> <a name="authbasicusedigestalgorithm" id="authbasicusedigestalgorithm">Directive</a></h2>
187 <table class="directive">
188 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Check passwords against the authentication providers as if
189 Digest Authentication was in force instead of Basic Authentication.
191 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthBasicUseDigestAlgorithm MD5|Off</code></td></tr>
192 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthBasicUseDigestAlgorithm Off</code></td></tr>
193 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
194 <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
195 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
196 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_basic</td></tr>
197 <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Apache HTTP Server 2.4.7 and later</td></tr>
199 <p>Normally, when using Basic Authentication, the providers listed in
200 <code class="directive"><a href="#authbasicprovider">AuthBasicProvider</a></code>
201 attempt to verify a user by checking their data stores for
202 a matching username and associated password. The stored passwords
203 are usually encrypted, but not necessarily so; each provider may
204 choose its own storage scheme for passwords.</p>
206 <p>When using <code class="directive"><a href="../mod/mod_auth_digest.html#authdigestprovider">AuthDigestProvider</a></code> and Digest
207 Authentication, providers perform a similar check to find a matching
208 username in their data stores. However, unlike in the Basic
209 Authentication case, the value associated with each stored username
210 must be an encrypted string composed from the username, realm name,
212 <a href="http://tools.ietf.org/html/rfc2617#section-3.2.2.2">
213 RFC 2617, Section 3.2.2.2</a> for more details on the format used
214 for this encrypted string.)</p>
216 <p>As a consequence of the difference in the stored values between
217 Basic and Digest Authentication, converting from Digest
218 Authentication to Basic Authentication generally requires that all
219 users be assigned new passwords, as their existing passwords cannot
220 be recovered from the password storage scheme imposed on those
221 providers which support Digest Authentication.</p>
223 <p>Setting the <code class="directive"><a href="#authbasicusedigestalgorithm">AuthBasicUseDigestAlgorithm</a></code> directive
224 to <code>MD5</code> will cause the user's Basic Authentication password
225 to be checked using the same encrypted format as for Digest
226 Authentication. First a string composed from the username, realm name,
227 and password is hashed with MD5; then the username and this encrypted
228 string are passed to the providers listed in
229 <code class="directive"><a href="#authbasicprovider">AuthBasicProvider</a></code>
231 <code class="directive"><a href="../mod/mod_authn_core.html#authtype">AuthType</a></code>
232 was set to <code>Digest</code> and Digest Authentication was in force.
235 <p>Through the use of <code class="directive"><a href="#authbasicusedigestalgorithm">AuthBasicUseDigestAlgorithm</a></code>
236 a site may switch from Digest to Basic Authentication without
237 requiring users to be assigned new passwords.</p>
240 The inverse process of switching from Basic to Digest
241 Authentication without assigning new passwords is generally
242 not possible. Only if the Basic Authentication passwords
243 have been stored in plain text or with a reversable encryption
244 scheme will it be possible to recover them and generate a
245 new data store following the Digest Authentication password
250 Only providers which support Digest Authentication will be able
251 to authenticate users when <code class="directive"><a href="#authbasicusedigestalgorithm">AuthBasicUseDigestAlgorithm</a></code>
252 is set to <code>MD5</code>. Use of other providers will result
253 in an error response and the client will be denied access.
258 <div class="bottomlang">
259 <p><span>Available Languages: </span><a href="../en/mod/mod_auth_basic.html" title="English"> en </a> |
260 <a href="../fr/mod/mod_auth_basic.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
261 <a href="../ja/mod/mod_auth_basic.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
262 <a href="../ko/mod/mod_auth_basic.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
263 </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&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>
264 <script type="text/javascript"><!--//--><![CDATA[//><!--
265 var comments_shortname = 'httpd';
266 var comments_identifier = 'http://httpd.apache.org/docs/trunk/mod/mod_auth_basic.html';
268 if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
269 d.write('<div id="comments_thread"><\/div>');
270 var s = d.createElement('script');
271 s.type = 'text/javascript';
273 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
274 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
277 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
279 })(window, document);
280 //--><!]]></script></div><div id="footer">
281 <p class="apache">Copyright 2016 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>
282 <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[//><!--
283 if (typeof(prettyPrint) !== 'undefined') {