~ubuntu-branches/ubuntu/feisty/apache2/feisty

« back to all changes in this revision

Viewing changes to docs/manual/howto/auth.html.en

  • Committer: Bazaar Package Importer
  • Author(s): Andreas Barth
  • Date: 2006-12-09 21:05:45 UTC
  • mfrom: (0.6.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20061209210545-h70s0xaqc2v8vqr2
Tags: 2.2.3-3.2
* Non-maintainer upload.
* 043_ajp_connection_reuse: Patch from upstream Bugzilla, fixing a critical
  issue with regard to connection reuse in mod_proxy_ajp.
  Closes: #396265

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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>Authentication, Authorization and Access Control - Apache HTTP Server</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" />
 
12
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
 
13
<body id="manual-page"><div id="page-header">
 
14
<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>
 
15
<p class="apache">Apache HTTP Server Version 2.2</p>
 
16
<img alt="" src="../images/feather.gif" /></div>
 
17
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
 
18
<div id="path">
 
19
<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.2</a> &gt; <a href="./">How-To / Tutorials</a></div><div id="page-content"><div id="preamble"><h1>Authentication, Authorization and Access Control</h1>
 
20
<div class="toplang">
 
21
<p><span>Available Languages: </span><a href="../en/howto/auth.html" title="English">&nbsp;en&nbsp;</a> |
 
22
<a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
 
23
<a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
 
24
</div>
 
25
 
 
26
    <p>Authentication is any process by which you verify that
 
27
    someone is who they claim they are. Authorization is any
 
28
    process by which someone is allowed to be where they want to
 
29
    go, or to have information that they want to have.</p>
 
30
</div>
 
31
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Related Modules and Directives</a></li>
 
32
<li><img alt="" src="../images/down.gif" /> <a href="#introduction">Introduction</a></li>
 
33
<li><img alt="" src="../images/down.gif" /> <a href="#theprerequisites">The Prerequisites</a></li>
 
34
<li><img alt="" src="../images/down.gif" /> <a href="#gettingitworking">Getting it working</a></li>
 
35
<li><img alt="" src="../images/down.gif" /> <a href="#lettingmorethanonepersonin">Letting more than one
 
36
person in</a></li>
 
37
<li><img alt="" src="../images/down.gif" /> <a href="#possibleproblems">Possible problems</a></li>
 
38
<li><img alt="" src="../images/down.gif" /> <a href="#dbmdbd">Alternate password storage</a></li>
 
39
<li><img alt="" src="../images/down.gif" /> <a href="#moreinformation">More information</a></li>
 
40
</ul></div>
 
41
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
 
42
<div class="section">
 
43
<h2><a name="related" id="related">Related Modules and Directives</a></h2>
 
44
 
 
45
<p>There are three types of modules involved in the authentication and
 
46
authorization process.  You will usually need to choose at least one
 
47
module from each group.</p>
 
48
 
 
49
<ul>
 
50
  <li>Authentication type (see the 
 
51
      <code class="directive"><a href="../mod/core.html#authtype">AuthType</a></code> directive)
 
52
    <ul>
 
53
      <li><code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code></li>
 
54
      <li><code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code></li>
 
55
    </ul>
 
56
  </li>
 
57
  <li>Authentication provider
 
58
    <ul>
 
59
      <li><code class="module"><a href="../mod/mod_authn_alias.html">mod_authn_alias</a></code></li>
 
60
      <li><code class="module"><a href="../mod/mod_authn_anon.html">mod_authn_anon</a></code></li>
 
61
      <li><code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code></li>
 
62
      <li><code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code></li>
 
63
      <li><code class="module"><a href="../mod/mod_authn_default.html">mod_authn_default</a></code></li>
 
64
      <li><code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code></li>
 
65
      <li><code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code></li>
 
66
    </ul>
 
67
  </li>
 
68
  <li>Authorization (see the 
 
69
      <code class="directive"><a href="../mod/core.html#require">Require</a></code> directive)
 
70
    <ul>
 
71
      <li><code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code></li>
 
72
      <li><code class="module"><a href="../mod/mod_authz_dbm.html">mod_authz_dbm</a></code></li>
 
73
      <li><code class="module"><a href="../mod/mod_authz_default.html">mod_authz_default</a></code></li>
 
74
      <li><code class="module"><a href="../mod/mod_authz_groupfile.html">mod_authz_groupfile</a></code></li>
 
75
      <li><code class="module"><a href="../mod/mod_authz_owner.html">mod_authz_owner</a></code></li>
 
76
      <li><code class="module"><a href="../mod/mod_authz_user.html">mod_authz_user</a></code></li>
 
77
    </ul>
 
78
  </li>
 
79
</ul>
 
80
 
 
81
  <p>The module <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> is both an
 
82
  authentication and authorization provider.  The module
 
83
  <code class="module"><a href="../mod/mod_authn_alias.html">mod_authn_alias</a></code> is not an authentication provider
 
84
  in itself, but allows other authentication providers to be
 
85
  configured in a flexible manner.</p>
 
86
 
 
87
  <p>The module <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code> provides authorization
 
88
  and access control based on hostname, IP address or characteristics
 
89
  of the request, but is not part of the authentication provider
 
90
  system.</p>
 
91
 
 
92
  <p>You probably also want to take a look at the <a href="access.html">Access Control</a> howto, which discusses the
 
93
  various ways to control access to your server.</p>
 
94
 
 
95
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
 
96
<div class="section">
 
97
<h2><a name="introduction" id="introduction">Introduction</a></h2>
 
98
    <p>If you have information on your web site that is sensitive
 
99
    or intended for only a small group of people, the techniques in
 
100
    this article will help you make sure that the people that see
 
101
    those pages are the people that you wanted to see them.</p>
 
102
 
 
103
    <p>This article covers the "standard" way of protecting parts
 
104
    of your web site that most of you are going to use.</p>
 
105
 
 
106
    <div class="note"><h3>Note:</h3>
 
107
    <p>If your data really needs to be secure, consider using
 
108
    <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> in addition to any authentication.</p>
 
109
    </div>
 
110
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
 
111
<div class="section">
 
112
<h2><a name="theprerequisites" id="theprerequisites">The Prerequisites</a></h2>
 
113
    <p>The directives discussed in this article will need to go
 
114
    either in your main server configuration file (typically in a
 
115
    <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> section), or
 
116
    in per-directory configuration files (<code>.htaccess</code> files).</p>
 
117
 
 
118
    <p>If you plan to use <code>.htaccess</code> files, you will
 
119
    need to have a server configuration that permits putting
 
120
    authentication directives in these files. This is done with the
 
121
    <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> directive, which
 
122
    specifies which directives, if any, may be put in per-directory
 
123
    configuration files.</p>
 
124
 
 
125
    <p>Since we're talking here about authentication, you will need
 
126
    an <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> directive like the
 
127
    following:</p>
 
128
 
 
129
    <div class="example"><p><code>
 
130
      AllowOverride AuthConfig
 
131
    </code></p></div>
 
132
 
 
133
    <p>Or, if you are just going to put the directives directly in
 
134
    your main server configuration file, you will of course need to
 
135
    have write permission to that file.</p>
 
136
 
 
137
    <p>And you'll need to know a little bit about the directory
 
138
    structure of your server, in order to know where some files are
 
139
    kept. This should not be terribly difficult, and I'll try to
 
140
    make this clear when we come to that point.</p>
 
141
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
 
142
<div class="section">
 
143
<h2><a name="gettingitworking" id="gettingitworking">Getting it working</a></h2>
 
144
    <p>Here's the basics of password protecting a directory on your
 
145
    server.</p>
 
146
 
 
147
    <p>First, you need to create a password file. Exactly how you do
 
148
    this will vary depending on what authentication provider you have
 
149
    chosen. More on that later. To start with, we'll use a text password
 
150
    file.</p>
 
151
 
 
152
    <p>This file should be
 
153
    placed somewhere not accessible from the web. This is so that
 
154
    folks cannot download the password file. For example, if your
 
155
    documents are served out of <code>/usr/local/apache/htdocs</code> you
 
156
    might want to put the password file(s) in
 
157
    <code>/usr/local/apache/passwd</code>.</p>
 
158
 
 
159
    <p>To create the file, use the <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> utility that
 
160
    came with Apache. This will be located in the <code>bin</code> directory
 
161
    of wherever you installed Apache. If you have installed Apache from
 
162
    a third-party package, it may be in your execution path.</p>
 
163
    
 
164
    <p>To create the file, type:</p>
 
165
 
 
166
    <div class="example"><p><code>
 
167
      htpasswd -c /usr/local/apache/passwd/passwords rbowen
 
168
    </code></p></div>
 
169
 
 
170
    <p><code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> will ask you for the password, and
 
171
    then ask you to type it again to confirm it:</p>
 
172
 
 
173
    <div class="example"><p><code>
 
174
      # htpasswd -c /usr/local/apache/passwd/passwords rbowen<br />
 
175
      New password: mypassword<br />
 
176
      Re-type new password: mypassword<br />
 
177
      Adding password for user rbowen
 
178
    </code></p></div>
 
179
 
 
180
    <p>If <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> is not in your path, of course
 
181
    you'll have to type the full path to the file to get it to run.
 
182
    With a default installation, it's located at
 
183
    <code>/usr/local/apache2/bin/htpasswd</code></p>
 
184
 
 
185
    <p>Next, you'll need to configure the server to request a
 
186
    password and tell the server which users are allowed access.
 
187
    You can do this either by editing the <code>httpd.conf</code>
 
188
    file or using an <code>.htaccess</code> file. For example, if
 
189
    you wish to protect the directory
 
190
    <code>/usr/local/apache/htdocs/secret</code>, you can use the
 
191
    following directives, either placed in the file
 
192
    <code>/usr/local/apache/htdocs/secret/.htaccess</code>, or
 
193
    placed in <code>httpd.conf</code> inside a &lt;Directory
 
194
    /usr/local/apache/apache/htdocs/secret&gt; section.</p>
 
195
 
 
196
    <div class="example"><p><code>
 
197
      AuthType Basic<br />
 
198
      AuthName "Restricted Files"<br />
 
199
      # (Following line optional)<br />
 
200
      AuthBasicProvider file<br />
 
201
      AuthUserFile /usr/local/apache/passwd/passwords<br />
 
202
      Require user rbowen
 
203
    </code></p></div>
 
204
 
 
205
    <p>Let's examine each of those directives individually. The <code class="directive"><a href="../mod/core.html#authtype">AuthType</a></code> directive selects
 
206
    that method that is used to authenticate the user. The most
 
207
    common method is <code>Basic</code>, and this is the method
 
208
    implemented by <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code>. It is important to be aware,
 
209
    however, that Basic authentication sends the password from the client to
 
210
    the server unencrypted. This method should therefore not be used for
 
211
    highly sensitive data, unless accompanied by <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>.
 
212
    Apache supports one other authentication method:
 
213
    <code>AuthType Digest</code>. This method is implemented by <code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code> and is much more secure. Most recent
 
214
    browsers support Digest authentication.</p>
 
215
 
 
216
    <p>The <code class="directive"><a href="../mod/core.html#authname">AuthName</a></code> directive sets
 
217
    the <dfn>Realm</dfn> to be used in the authentication. The realm serves
 
218
    two major functions. First, the client often presents this information to
 
219
    the user as part of the password dialog box. Second, it is used by the
 
220
    client to determine what password to send for a given authenticated
 
221
    area.</p>
 
222
 
 
223
    <p>So, for example, once a client has authenticated in the
 
224
    <code>"Restricted Files"</code> area, it will automatically
 
225
    retry the same password for any area on the same server that is
 
226
    marked with the <code>"Restricted Files"</code> Realm.
 
227
    Therefore, you can prevent a user from being prompted more than
 
228
    once for a password by letting multiple restricted areas share
 
229
    the same realm. Of course, for security reasons, the client
 
230
    will always need to ask again for the password whenever the
 
231
    hostname of the server changes.</p>
 
232
 
 
233
    <p>The <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code> is,
 
234
    in this case, optional, since <code>file</code> is the default value
 
235
    for this directive. You'll need to use this directive if you are
 
236
    choosing a different source for authentication, such as
 
237
    <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> or <code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code>.</p>
 
238
 
 
239
    <p>The <code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code>
 
240
    directive sets the path to the password file that we just
 
241
    created with <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code>. If you have a large number
 
242
    of users, it can be quite slow to search through a plain text
 
243
    file to authenticate the user on each request. Apache also has
 
244
    the ability to store user information in fast database files.
 
245
    The <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> module provides the <code class="directive"><a href="../mod/mod_authn_dbm.html#authdbmuserfile">AuthDBMUserFile</a></code> directive. These
 
246
    files can be created and manipulated with the <code class="program"><a href="../programs/dbmmanage.html">dbmmanage</a></code> program. Many
 
247
    other types of authentication options are available from third
 
248
    party modules in the <a href="http://modules.apache.org/">Apache Modules
 
249
    Database</a>.</p>
 
250
 
 
251
    <p>Finally, the <code class="directive"><a href="../mod/core.html#require">Require</a></code>
 
252
    directive provides the authorization part of the process by
 
253
    setting the user that is allowed to access this region of the
 
254
    server. In the next section, we discuss various ways to use the
 
255
    <code class="directive"><a href="../mod/core.html#require">Require</a></code> directive.</p>
 
256
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
 
257
<div class="section">
 
258
<h2><a name="lettingmorethanonepersonin" id="lettingmorethanonepersonin">Letting more than one
 
259
person in</a></h2>
 
260
    <p>The directives above only let one person (specifically
 
261
    someone with a username of <code>rbowen</code>) into the
 
262
    directory. In most cases, you'll want to let more than one
 
263
    person in. This is where the <code class="directive"><a href="../mod/mod_authz_groupfile.html#authgroupfile">AuthGroupFile</a></code> comes in.</p>
 
264
 
 
265
    <p>If you want to let more than one person in, you'll need to
 
266
    create a group file that associates group names with a list of
 
267
    users in that group. The format of this file is pretty simple,
 
268
    and you can create it with your favorite editor. The contents
 
269
    of the file will look like this:</p>
 
270
 
 
271
   <div class="example"><p><code>
 
272
     GroupName: rbowen dpitts sungo rshersey
 
273
   </code></p></div>
 
274
 
 
275
    <p>That's just a list of the members of the group in a long
 
276
    line separated by spaces.</p>
 
277
 
 
278
    <p>To add a user to your already existing password file,
 
279
    type:</p>
 
280
 
 
281
    <div class="example"><p><code>
 
282
      htpasswd /usr/local/apache/passwd/passwords dpitts
 
283
    </code></p></div>
 
284
 
 
285
    <p>You'll get the same response as before, but it will be
 
286
    appended to the existing file, rather than creating a new file.
 
287
    (It's the <code>-c</code> that makes it create a new password
 
288
    file).</p>
 
289
 
 
290
    <p>Now, you need to modify your <code>.htaccess</code> file to
 
291
    look like the following:</p>
 
292
 
 
293
    <div class="example"><p><code>
 
294
      AuthType Basic<br />
 
295
      AuthName "By Invitation Only"<br />
 
296
      # Optional line:
 
297
      AuthBasicProvider file
 
298
      AuthUserFile /usr/local/apache/passwd/passwords<br />
 
299
      AuthGroupFile /usr/local/apache/passwd/groups<br />
 
300
      Require group GroupName
 
301
    </code></p></div>
 
302
 
 
303
    <p>Now, anyone that is listed in the group <code>GroupName</code>,
 
304
    and has an entry in the <code>password</code> file, will be let in, if
 
305
    they type the correct password.</p>
 
306
 
 
307
    <p>There's another way to let multiple users in that is less
 
308
    specific. Rather than creating a group file, you can just use
 
309
    the following directive:</p>
 
310
 
 
311
    <div class="example"><p><code>
 
312
      Require valid-user
 
313
    </code></p></div>
 
314
 
 
315
    <p>Using that rather than the <code>Require user rbowen</code>
 
316
    line will allow anyone in that is listed in the password file,
 
317
    and who correctly enters their password. You can even emulate
 
318
    the group behavior here, by just keeping a separate password
 
319
    file for each group. The advantage of this approach is that
 
320
    Apache only has to check one file, rather than two. The
 
321
    disadvantage is that you have to maintain a bunch of password
 
322
    files, and remember to reference the right one in the
 
323
    <code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code> directive.</p>
 
324
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
 
325
<div class="section">
 
326
<h2><a name="possibleproblems" id="possibleproblems">Possible problems</a></h2>
 
327
    <p>Because of the way that Basic authentication is specified,
 
328
    your username and password must be verified every time you
 
329
    request a document from the server. This is even if you're
 
330
    reloading the same page, and for every image on the page (if
 
331
    they come from a protected directory). As you can imagine, this
 
332
    slows things down a little. The amount that it slows things
 
333
    down is proportional to the size of the password file, because
 
334
    it has to open up that file, and go down the list of users
 
335
    until it gets to your name. And it has to do this every time a
 
336
    page is loaded.</p>
 
337
 
 
338
    <p>A consequence of this is that there's a practical limit to
 
339
    how many users you can put in one password file. This limit
 
340
    will vary depending on the performance of your particular
 
341
    server machine, but you can expect to see slowdowns once you
 
342
    get above a few hundred entries, and may wish to consider a
 
343
    different authentication method at that time.</p>
 
344
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
 
345
<div class="section">
 
346
<h2><a name="dbmdbd" id="dbmdbd">Alternate password storage</a></h2>
 
347
 
 
348
    <p>Because storing passwords in plain text files has the above
 
349
    problems, you may wish to store your passwords somewhere else, such
 
350
    as in a database.</p>
 
351
 
 
352
    <p><code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> and <code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code>
 
353
    are two modules which make this possible. Rather than selecting
 
354
    <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicsource">AuthBasicSource</a></code> file,
 
355
    instead you can choose <code>dbm</code> or <code>dbd</code> as your
 
356
    storage format.</p>
 
357
 
 
358
    <p>To select a dbd file rather than a text file, for example:</p>
 
359
 
 
360
    <div class="example"><p><code>
 
361
    &lt;Directory /www/docs/private&gt;<br />
 
362
    AuthName "Private"<br />
 
363
    AuthType Basic<br />
 
364
    AuthBasicProvider dbm<br />
 
365
    AuthDBMUserFile /www/passwords/passwd.dbm<br />
 
366
    Require valid-user
 
367
    </code></p></div>
 
368
 
 
369
    <p>Other options are available. Consult the
 
370
    <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> documentation for more details.</p>
 
371
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
 
372
<div class="section">
 
373
<h2><a name="moreinformation" id="moreinformation">More information</a></h2>
 
374
    <p>You should also read the documentation for
 
375
    <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> and <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code> which
 
376
    contain some more information about how this all works.
 
377
    <code class="module"><a href="../mod/mod_authn_alias.html">mod_authn_alias</a></code> can also help in simplifying certain
 
378
    authentication configurations.</p>
 
379
 
 
380
    <p>And you may want to look at the <a href="access.html">Access
 
381
    Control</a> howto, which discusses a number of related topics.</p>
 
382
 
 
383
</div></div>
 
384
<div class="bottomlang">
 
385
<p><span>Available Languages: </span><a href="../en/howto/auth.html" title="English">&nbsp;en&nbsp;</a> |
 
386
<a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
 
387
<a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
 
388
</div><div id="footer">
 
389
<p class="apache">Copyright 2006 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>
 
390
<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>
 
391
</body></html>
 
 
b'\\ No newline at end of file'