diff options
author | hongbotian <hongbo.tianhongbo@huawei.com> | 2015-11-30 01:45:08 -0500 |
---|---|---|
committer | hongbotian <hongbo.tianhongbo@huawei.com> | 2015-11-30 01:45:08 -0500 |
commit | e8ec7aa8e38a93f5b034ac74cebce5de23710317 (patch) | |
tree | aa031937bf856c1f8d6ad7877b8d2cb0224da5ef /rubbos/app/httpd-2.0.64/docs/manual/howto/auth.html.en | |
parent | cc40af334e619bb549038238507407866f774f8f (diff) |
upload http
JIRA: BOTTLENECK-10
Change-Id: I7598427ff904df438ce77c2819ee48ac75ffa8da
Signed-off-by: hongbotian <hongbo.tianhongbo@huawei.com>
Diffstat (limited to 'rubbos/app/httpd-2.0.64/docs/manual/howto/auth.html.en')
-rw-r--r-- | rubbos/app/httpd-2.0.64/docs/manual/howto/auth.html.en | 355 |
1 files changed, 355 insertions, 0 deletions
diff --git a/rubbos/app/httpd-2.0.64/docs/manual/howto/auth.html.en b/rubbos/app/httpd-2.0.64/docs/manual/howto/auth.html.en new file mode 100644 index 00000000..f410577f --- /dev/null +++ b/rubbos/app/httpd-2.0.64/docs/manual/howto/auth.html.en @@ -0,0 +1,355 @@ +<?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>Authentication, Authorization and Access Control - 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 id="manual-page"><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/">Documentation</a> > <a href="../">Version 2.0</a> > <a href="./">How-To / Tutorials</a></div><div id="page-content"><div id="preamble"><h1>Authentication, Authorization and Access Control</h1> +<div class="toplang"> +<p><span>Available Languages: </span><a href="../en/howto/auth.html" title="English"> en </a> | +<a href="../es/howto/auth.html" hreflang="es" rel="alternate" title="Espaņol"> es </a> | +<a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p> +</div> + + <p>Authentication is any process by which you verify that + someone is who they claim they are. Authorization is any + process by which someone is allowed to be where they want to + go, or to have information that they want to have.</p> +</div> +<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Related Modules and Directives</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#introduction">Introduction</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#theprerequisites">The Prerequisites</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#gettingitworking">Getting it working</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#lettingmorethanonepersonin">Letting more than one +person in</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#possibleproblems">Possible problems</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#whatotherneatstuffcanido">What other neat stuff can I +do?</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#moreinformation">More information</a></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="related" id="related">Related Modules and Directives</a></h2> + <table class="related"><tr><th>Related Modules</th><th>Related Directives</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_auth.html">mod_auth</a></code></li><li><code class="module"><a href="../mod/mod_access.html">mod_access</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/mod_access.html#allow">Allow</a></code></li><li><code class="directive"><a href="../mod/mod_auth.html#authgroupfile">AuthGroupFile</a></code></li><li><code class="directive"><a href="../mod/core.html#authname">AuthName</a></code></li><li><code class="directive"><a href="../mod/core.html#authtype">AuthType</a></code></li><li><code class="directive"><a href="../mod/mod_auth.html#authuserfile">AuthUserFile</a></code></li><li><code class="directive"><a href="../mod/mod_access.html#deny">Deny</a></code></li><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/core.html#require">Require</a></code></li></ul></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="introduction" id="introduction">Introduction</a></h2> + <p>If you have information on your web site that is sensitive + or intended for only a small group of people, the techniques in + this article will help you make sure that the people that see + those pages are the people that you wanted to see them.</p> + + <p>This article covers the "standard" way of protecting parts + of your web site that most of you are going to use.</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="theprerequisites" id="theprerequisites">The Prerequisites</a></h2> + <p>The directives discussed in this article will need to go + either in your main server configuration file (typically in a + <code class="directive"><a href="../mod/core.html#directory"><Directory></a></code> section), or + in per-directory configuration files (<code>.htaccess</code> files).</p> + + <p>If you plan to use <code>.htaccess</code> files, you will + need to have a server configuration that permits putting + authentication directives in these files. This is done with the + <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> directive, which + specifies which directives, if any, may be put in per-directory + configuration files.</p> + + <p>Since we're talking here about authentication, you will need + an <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> directive like the + following:</p> + + <div class="example"><p><code> + AllowOverride AuthConfig + </code></p></div> + + <p>Or, if you are just going to put the directives directly in + your main server configuration file, you will of course need to + have write permission to that file.</p> + + <p>And you'll need to know a little bit about the directory + structure of your server, in order to know where some files are + kept. This should not be terribly difficult, and I'll try to + make this clear when we come to that point.</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="gettingitworking" id="gettingitworking">Getting it working</a></h2> + <p>Here's the basics of password protecting a directory on your + server.</p> + + <p>You'll need to create a password file. This file should be + placed somewhere not accessible from the web. This is so that + folks cannot download the password file. For example, if your + documents are served out of <code>/usr/local/apache/htdocs</code> you + might want to put the password file(s) in + <code>/usr/local/apache/passwd</code>.</p> + + <p>To create the file, use the <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> utility that + came with Apache. This will be located in the <code>bin</code> directory + of wherever you installed Apache. To create the file, type:</p> + + <div class="example"><p><code> + htpasswd -c /usr/local/apache/passwd/passwords rbowen + </code></p></div> + + <p><code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> will ask you for the password, and + then ask you to type it again to confirm it:</p> + + <div class="example"><p><code> + # htpasswd -c /usr/local/apache/passwd/passwords rbowen<br /> + New password: mypassword<br /> + Re-type new password: mypassword<br /> + Adding password for user rbowen + </code></p></div> + + <p>If <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> is not in your path, of course + you'll have to type the full path to the file to get it to run. + On my server, it's located at + <code>/usr/local/apache/bin/htpasswd</code></p> + + <p>Next, you'll need to configure the server to request a + password and tell the server which users are allowed access. + You can do this either by editing the <code>httpd.conf</code> + file or using an <code>.htaccess</code> file. For example, if + you wish to protect the directory + <code>/usr/local/apache/htdocs/secret</code>, you can use the + following directives, either placed in the file + <code>/usr/local/apache/htdocs/secret/.htaccess</code>, or + placed in <code>httpd.conf</code> inside a <Directory + /usr/local/apache/apache/htdocs/secret> section.</p> + + <div class="example"><p><code> + AuthType Basic<br /> + AuthName "Restricted Files"<br /> + AuthUserFile /usr/local/apache/passwd/passwords<br /> + Require user rbowen + </code></p></div> + + <p>Let's examine each of those directives individually. The <code class="directive"><a href="../mod/core.html#authtype">AuthType</a></code> directive selects + that method that is used to authenticate the user. The most + common method is <code>Basic</code>, and this is the method + implemented by <code class="module"><a href="../mod/mod_auth.html">mod_auth</a></code>. It is important to be aware, + however, that Basic authentication sends the password from the client to + the browser unencrypted. This method should therefore not be used for + highly sensitive data. Apache supports one other authentication method: + <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. Only the most recent + versions of clients are known to support Digest authentication.</p> + + <p>The <code class="directive"><a href="../mod/core.html#authname">AuthName</a></code> directive sets + the <dfn>Realm</dfn> to be used in the authentication. The realm serves + two major functions. First, the client often presents this information to + the user as part of the password dialog box. Second, it is used by the + client to determine what password to send for a given authenticated + area.</p> + + <p>So, for example, once a client has authenticated in the + <code>"Restricted Files"</code> area, it will automatically + retry the same password for any area on the same server that is + marked with the <code>"Restricted Files"</code> Realm. + Therefore, you can prevent a user from being prompted more than + once for a password by letting multiple restricted areas share + the same realm. Of course, for security reasons, the client + will always need to ask again for the password whenever the + hostname of the server changes.</p> + + <p>The <code class="directive"><a href="../mod/mod_auth.html#authuserfile">AuthUserFile</a></code> + directive sets the path to the password file that we just + created with <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code>. If you have a large number + of users, it can be quite slow to search through a plain text + file to authenticate the user on each request. Apache also has + the ability to store user information in fast database files. + The <code class="module"><a href="../mod/mod_auth_dbm.html">mod_auth_dbm</a></code> module provides the <code class="directive"><a href="../mod/mod_auth_dbm.html#authdbmuserfile">AuthDBMUserFile</a></code> directive. These + files can be created and manipulated with the <code class="program"><a href="../programs/dbmmanage.html">dbmmanage</a></code> program. Many + other types of authentication options are available from third + party modules in the <a href="http://modules.apache.org/">Apache Modules + Database</a>.</p> + + <p>Finally, the <code class="directive"><a href="../mod/core.html#require">Require</a></code> + directive provides the authorization part of the process by + setting the user that is allowed to access this region of the + server. In the next section, we discuss various ways to use the + <code class="directive"><a href="../mod/core.html#require">Require</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="lettingmorethanonepersonin" id="lettingmorethanonepersonin">Letting more than one +person in</a></h2> + <p>The directives above only let one person (specifically + someone with a username of <code>rbowen</code>) into the + directory. In most cases, you'll want to let more than one + person in. This is where the <code class="directive"><a href="../mod/mod_auth.html#authgroupfile">AuthGroupFile</a></code> comes in.</p> + + <p>If you want to let more than one person in, you'll need to + create a group file that associates group names with a list of + users in that group. The format of this file is pretty simple, + and you can create it with your favorite editor. The contents + of the file will look like this:</p> + + <div class="example"><p><code> + GroupName: rbowen dpitts sungo rshersey + </code></p></div> + + <p>That's just a list of the members of the group in a long + line separated by spaces.</p> + + <p>To add a user to your already existing password file, + type:</p> + + <div class="example"><p><code> + htpasswd /usr/local/apache/passwd/passwords dpitts + </code></p></div> + + <p>You'll get the same response as before, but it will be + appended to the existing file, rather than creating a new file. + (It's the <code>-c</code> that makes it create a new password + file).</p> + + <p>Now, you need to modify your <code>.htaccess</code> file to + look like the following:</p> + + <div class="example"><p><code> + AuthType Basic<br /> + AuthName "By Invitation Only"<br /> + AuthUserFile /usr/local/apache/passwd/passwords<br /> + AuthGroupFile /usr/local/apache/passwd/groups<br /> + Require group GroupName + </code></p></div> + + <p>Now, anyone that is listed in the group <code>GroupName</code>, + and has an entry in the <code>password</code> file, will be let in, if + they type the correct password.</p> + + <p>There's another way to let multiple users in that is less + specific. Rather than creating a group file, you can just use + the following directive:</p> + + <div class="example"><p><code> + Require valid-user + </code></p></div> + + <p>Using that rather than the <code>Require user rbowen</code> + line will allow anyone in that is listed in the password file, + and who correctly enters their password. You can even emulate + the group behavior here, by just keeping a separate password + file for each group. The advantage of this approach is that + Apache only has to check one file, rather than two. The + disadvantage is that you have to maintain a bunch of password + files, and remember to reference the right one in the + <code class="directive"><a href="../mod/mod_auth.html#authuserfile">AuthUserFile</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="possibleproblems" id="possibleproblems">Possible problems</a></h2> + <p>Because of the way that Basic authentication is specified, + your username and password must be verified every time you + request a document from the server. This is even if you're + reloading the same page, and for every image on the page (if + they come from a protected directory). As you can imagine, this + slows things down a little. The amount that it slows things + down is proportional to the size of the password file, because + it has to open up that file, and go down the list of users + until it gets to your name. And it has to do this every time a + page is loaded.</p> + + <p>A consequence of this is that there's a practical limit to + how many users you can put in one password file. This limit + will vary depending on the performance of your particular + server machine, but you can expect to see slowdowns once you + get above a few hundred entries, and may wish to consider a + different authentication method at that time.</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="whatotherneatstuffcanido" id="whatotherneatstuffcanido">What other neat stuff can I +do?</a></h2> + <p>Authentication by username and password is only part of the + story. Frequently you want to let people in based on something + other than who they are. Something such as where they are + coming from.</p> + + <p>The <code class="directive"><a href="../mod/mod_access.html#allow">Allow</a></code> and + <code class="directive"><a href="../mod/mod_access.html#deny">Deny</a></code> directives let + you allow and deny access based on the host name, or host + address, of the machine requesting a document. The + <code class="directive"><a href="../mod/mod_access.html#order">Order</a></code> directive goes + hand-in-hand with these two, and tells Apache in which order to + apply the filters.</p> + + <p>The usage of these directives is:</p> + + <div class="example"><p><code> + Allow from <var>address</var> + </code></p></div> + + <p>where <var>address</var> is an IP address (or a partial IP + address) or a fully qualified domain name (or a partial domain + name); you may provide multiple addresses or domain names, if + desired.</p> + + <p>For example, if you have someone spamming your message + board, and you want to keep them out, you could do the + following:</p> + + <div class="example"><p><code> + Deny from 10.252.46.165 + </code></p></div> + + <p>Visitors coming from that address will not be able to see + the content covered by this directive. If, instead, you have a + machine name, rather than an IP address, you can use that.</p> + + <div class="example"><p><code> + Deny from <var>host.example.com</var> + </code></p></div> + + <p>And, if you'd like to block access from an entire domain, + you can specify just part of an address or domain name:</p> + + <div class="example"><p><code> + Deny from <var>192.168.205</var><br /> + Deny from <var>phishers.example.com</var> <var>moreidiots.example</var><br /> + Deny from ke + </code></p></div> + + <p>Using <code class="directive"><a href="../mod/mod_access.html#order">Order</a></code> will let you be + sure that you are actually restricting things to the group that you want + to let in, by combining a <code class="directive"><a href="../mod/mod_access.html#deny">Deny</a></code> + and an <code class="directive"><a href="../mod/mod_access.html#allow">Allow</a></code> directive:</p> + + <div class="example"><p><code> + Order deny,allow<br /> + Deny from all<br /> + Allow from <var>dev.example.com</var> + </code></p></div> + + <p>Listing just the <code class="directive"><a href="../mod/mod_access.html#allow">Allow</a></code> + directive would not do what you want, because it will let folks from that + host in, in addition to letting everyone in. What you want is to let + <em>only</em> those folks in.</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="moreinformation" id="moreinformation">More information</a></h2> + <p>You should also read the documentation for <code class="module"><a href="../mod/mod_auth.html">mod_auth</a></code> + and <code class="module"><a href="../mod/mod_access.html">mod_access</a></code> which contain some more information + about how this all works.</p> +</div></div> +<div class="bottomlang"> +<p><span>Available Languages: </span><a href="../en/howto/auth.html" title="English"> en </a> | +<a href="../es/howto/auth.html" hreflang="es" rel="alternate" title="Espaņol"> es </a> | +<a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p> +</div><div id="footer"> +<p class="apache">Copyright 2009 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> +<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>
\ No newline at end of file |