⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 auth.html

📁 这个是我在web培训时老师提供的手册
💻 HTML
📖 第 1 页 / 共 2 页
字号:
      AuthName "Restricted Files"<br />
      AuthUserFile /usr/local/apache/passwd/passwords<br />
      Require user rbowen
    </code></p></div>

    <p>让我们逐个解释这些指令。<code class="directive"><a href="../mod/core.html#authtype">AuthType</a></code>指令选择对用户实施认证的方法,最常用的是由<code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code>提供的<code>Basic</code> 。必须认识到的很重要的一点是,Basic认证方法并不加密来自用户浏览器的密码,因此,不应该用于高度敏感的数据。Apache中还有另一种更安全的认证方法"<code>AuthType Digest</code>",即由<code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code>供的摘要认证。目前,只有最新的浏览器版本才支持摘要认证。</p>

    <p><code class="directive"><a href="../mod/core.html#authname">AuthName</a></code>指令设置了使用认证的<dfn>域(Realm)</dfn>,它起两个作用,首先,此域会出现在显示给用户的密码提问对话框中,其次,也帮助客户端程序确定应该发送哪个密码。</p>

    <p>所以,如果一个用户已经在<code>"Restricted Files"</code>域通过了认证,则客户端就可以尝试使用同样的密码来访问同一个服务器上任何名为<code>"Restricted Files"</code>域的其他部分,从而使多个受限区域使用同一个密码,以避免用户重复输入。当然,出于安全考虑,如果服务器变了,客户端始终会要求重新输入密码。</p>

    <p><code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code>指令设置了密码文件的位置,也就是刚才我们用<code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code>建立的文件。如果用户很多则认证速度会很慢,因为对每个请求都必须搜索这个纯文本文件,对此,Apache还支持把用户信息存入快速的数据库文件,<code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code>模块提供了<code class="directive"><a href="../mod/mod_authn_dbm.html#authdbmuserfile">AuthDBMUserFile</a></code>指令,并可以用<code class="program"><a href="../programs/dbmmanage.html">dbmmanage</a></code>程序建立和操作这些数据库。<a href="http://modules.apache.org/">Apache模块数据库</a>中还提供了许多其他第三方模块提供的认证选项。</p>

    <p>最后,<code class="directive"><a href="../mod/core.html#require">Require</a></code>指令设置了允许访问受保护区域的用户,下一节将对<code class="directive"><a href="../mod/core.html#require">Require</a></code>指令作详细说明。</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">允许多人访问</a></h2>
    <p>上述指令只允许一个人(一个叫<code>rbowen</code>的用户)访问这个目录,但是多数情况下,都需要允许多人访问,所以就要用到<code class="directive"><a href="../mod/mod_authz_groupfile.html#authgroupfile">AuthGroupFile</a></code>指令。</p>

    <p>如果想允许多人访问,那么就必须建立一个组文件以确定组中的用户。其格式很简单,可以用你喜欢的编辑器建立,例如:</p>

   <div class="example"><p><code>
     GroupName: rbowen dpitts sungo rshersey
   </code></p></div>

    <p>它只是每组一行的一个用空格分隔的组成员列表。</p>

    <p>向已有的密码文件中增加一个用户,可以输入:</p>

    <div class="example"><p><code>
      htpasswd /usr/local/apache/passwd/passwords dpitts
    </code></p></div>

    <p>程序的提示和上面的一样,但是它会追加到已有的文件中,而不是建一个新文件(参数 <code>-c</code> 可以强制建立新的密码文件)。</p>

    <p>现在,需要将<code>.htaccess</code>文件修改成这样:</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>现在,<code>GroupName</code>组中的成员都在<code>password</code>文件中有一个相应的记录,从而允许他们输入正确的密码进行访问。</p>

    <p>除了建立组文件,还有另一种途径允许多人访问,就是使用如下指令:</p>

    <div class="example"><p><code>
      Require valid-user
    </code></p></div>

    <p>使用上述指令,而不是 <code>Require user rbowen</code> ,可以允许密码文件中的所有用户使用正确的密码进行访问。通过为每个组建立一个密码文件,这里甚至允许列举各个组,其优点是Apache只需要检查一个文件(而不是两个),其缺点是,必须维护众多密码文件,而且要确保<code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code>指定了一个正确的密码文件。</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">可能存在的问题</a></h2>
    <p>由于采用了Basic认证的方法,每次向服务器请求甚至刷新一个受保护的页面或图片时都必须校验用户名和密码,为此,必须打开密码文件并逐行搜索用户名,因此,服务器响应速度会受一些影响,受影响的程度与密码文件的大小成正比。</p>

    <p>所以,对密码文件中的用户总数存在一个实际上的上限,此上限取决于特定的服务器机器的性能,但是一般有几百个用户就会对响应速度有非常明显的影响,在这种情况下,可以考虑用其他认证方法。</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">其他认证方法</a></h2>
    <p>基于用户名和密码的认证只是方法之一,时常会有不需要知道来访者是谁,只需要知道来自哪里的情况。</p>

    <p><code class="directive"><a href="../mod/mod_authz_host.html#allow">Allow</a></code>和<code class="directive"><a href="../mod/mod_authz_host.html#deny">Deny</a></code>指令可以允许或拒绝来自特定主机名或主机地址的访问,同时,<code class="directive"><a href="../mod/mod_authz_host.html#order">Order</a></code>指令告诉Apache处理这两个指令的顺序,以改变过滤器。</p>

    <p>这些指令的用法:</p>

    <div class="example"><p><code>
      Allow from <var>address</var>
    </code></p></div>

    <p><var>address</var>可以是一个IP地址(或者IP地址的一部分),也可以是一个完整的域名(或者域名的一部分),还可以同时指定多个IP地址和域名。</p>

    <p>比如,要拒绝不受欢迎的兜售垃圾的站点:</p>

    <div class="example"><p><code>
      Deny from 205.252.46.165
    </code></p></div>

    <p>这样,这个指令所管辖的区域将拒绝所有来自该地址的访问。除了指定IP地址,也可以指定域名,如:</p>

    <div class="example"><p><code>
      Deny from <var>host.example.com</var>
    </code></p></div>

    <p>另外,还可以指定地址或域名的一部分来阻止一个群体:</p>

    <div class="example"><p><code>
      Deny from <var>192.101.205</var><br />
      Deny from <var>cyberthugs.com</var> <var>moreidiots.com</var><br />
      Deny from ke
    </code></p></div>

    <p><code class="directive"><a href="../mod/mod_authz_host.html#order">Order</a></code>可以组合<code class="directive"><a href="../mod/mod_authz_host.html#deny">Deny</a></code>和<code class="directive"><a href="../mod/mod_authz_host.html#allow">Allow</a></code>指令,以保证在允许一个群体访问的同时,对其中的一些又加以限制:</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>只列出<code class="directive"><a href="../mod/mod_authz_host.html#allow">Allow</a></code>指令不会得到你想要的结果,因为它在允许指定对象访问的同时<em>并不禁止</em>其他未列出的对象的访问。所以上例使用的方法是:首先拒绝任何人,然后允许来自特定主机的访问。</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">更多信息</a></h2>
    <p><code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code>和<code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code>文档中有更多的有关资料。<code class="module"><a href="../mod/mod_authn_alias.html">mod_authn_alias</a></code>同样有助于简化认证配置。</p>
</div></div>
<div id="footer">
<p class="apache">本文允许自由使用、分发、转载,但必须保留译者署名;详见:<a href="../translator_announcement.html#announcement">译者声明</a>。</p>
<p class="menu"><a href="../mod/index.html">模块索引</a> | <a href="../mod/directives.html">指令索引</a> | <a href="../faq/index.html">常见问题</a> | <a href="../glossary.html">词汇表</a> | <a href="../sitemap.html">站点导航</a></p></div>
</body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -