Ubuntu下Apache基于用户名/口令简单认证

环境:Ubuntu Linux

这种认证方式其实相当简单,当WWW浏览器请求经此认证模式保护的URL 时,将会出现一个对话框,要求用户键入用户名和口令。用户输入后,传给WWW服务器,WWW服务器验证它的正确性,如果正确,返回页面,否则返回401错误。要说明的一点是,这种认证模式是基本的,并不能用于安全性要求极高的场合。

Apache 中有许多模块可以支持这种认证方式,下面我们就介绍一下最基本、最标准的mod_auth模块。正如前面提到的一样,mod_auth模块使用存储在文本文件中的用户名、组名和口令来实现认证。这种方法非常适合处理少量用户,它能工作得很好。如果你需要对大量的用户,如数以千计的用户做认证时,这种方法的性能将急剧下降到不可忍受,所以当这种情况下,就需要考虑使用mod_dbm模块或mod_mysql模块来获得更好的性能。

实战:需要用户名和口令的访问控制

1、若是开启虚拟主机,则将/etc/apache2/site-enabled/000-default中的<Direct></Direct>块全部注释掉(里面有访问规则,影响配置结果)。没开启虚拟主机的则将/etc/apache2/apache.conf中的Include /etc/apache2/site-enabled/ 注释掉。

2、在httpd.conf(一般为空)中,填入ServerName xxxxx            #(xxxxx为你的服务器名称)

DocumentRoot /xxx/xxx       #(网站根目录的路径)

AccessFileName .htaccess    #(认证的配置文件)

3、建立.htpasswd文档(用于保存用户名和密码)touch /xxx/xxx/.htpasswd

用htpasswd命令建立用户名、密码

htpasswd -c /xxx/xxx/.htpasswd yyy  (yyy为用户名)

接着输入密码,然后确认一遍。添加一个用户完成。如果还有其他用户,则继续用htpasswd命令(注意不加-c,加了则将覆盖前面添加内容)

4、在需要认证的网站根目录下建立.htaccess文档(要和httpd.conf中的DocumentRoot保持一致)

在.htaccess中填入一下内容

AuthName xxxxxxx (在弹出对话框中显示的标题名称)

AuthType Basic

AuthUserFile /xxx/xxx/.htpasswd(路径为.htpasswd的绝对路径)

require user xxx   (xxx为用户名)

如果有不止一个的用户的话,则在第三步再建立个.htgroup文档 并在其中写入ggg:yyy zzz www(ggg为组名;yyy、zzz、www为用户名,要在.htpasswd中有对应的用户名和密码)

在第四步中添加 AuthGroupFile /xxx/xxx/.htgroup

require group ggg (ggg为.htgroup中的组名)

5、配置完毕,重启apache   /etc/init.d/apache2 restart

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wyddwx.html