码迷,mamicode.com
首页 > Web开发 > 详细

apache的用户认证

时间:2015-12-31 19:00:23      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:

 

1. 限制用户访问的方式:

  1. 限制访问服务的客户端主机

  2. 需要用户名和密码

2. 行为用户验证需要两步:

  1. 创建一个包含用户名和密码的文件

  2. 服务器上的哪些资源需要保护,哪些用户可以进行访问

3. 创建用户数据库

  许多用户名和密码需要创建在一个文件中。出于安全考虑,这个文件不能放在文档目录里。在这个例子里,这个文件创建在/usr/local/etc/httpd目录里,名字叫users。

  这个文件包含许多用户名和密码。用户名和密码通过冒号分割,每个用户单独占一行。但是你不能直接在这个文件中直接输入用户名和密码,因为存储在这个文件中的密码是加密的。程序htpasswd可以用来创建该文件,添加或者修改用户。

  使用htpasswd创建该文件,添加用户名‘snow’,密码‘snow’的用户到该文件(/usr/local/httpd/user)

1 htpasswd -c /usr/local/etc/httpd/users snow

-c参数告诉htpasswd创建一个新的users文件。当你运行该命令时,将提示输入该用户的密码并确认。你可以添加其它的用户到该文件中,不过必须去掉-c参数。这个命名也可以用来修改密码。当你添加一个用户后,/usr/local/etc/httpd/users文件看起来想这样:

1 snow:$apr1$VmvJWi7o$diZjyiUiHkd8pSmb/8/gE0

第一个列是用户名,第二列是加密过后的密码。

4. 配置服务

为了让server使用在该文件中的用户名和密码,你需要配置一个realm,为了使用.htaccess文件限制一个目录的访问,你首先需要修改apache的配置文件(如何找到apache的配置文件),使目录使用.htaccess的形式限制访问,这个被AuthConfig属性控制,如果你想限制/var/www目录的访问,你修改apache的配置文件:

1 <Directory /var/www/>
2          Options Indexes FollowSymLinks
3          AllowOverride AuthConfig
4          Require all granted
5 </Directory>

然后在/var/www目录中建立一个.htaccess文件,内容如下:

AuthName "restricted stuff"
AuthType Basic
AuthUserFile /usr/local/etc/httpd/users

require valid-user

第一个指令AuthName,为这个资源配置一个realm名字,只要用户输入有效的用户名和密码,相同realm名字的其他资源也可以通过这个用户访问,这样做,主要是为了创建两个区域,使同一个用户可以访问这两个区域。

第二个指令AuthType告诉服务使用哪种协议进行认证,目前来说,仅有Baisc可用。但是出现了Digest,而且已经被标准化啦,只要浏览器实现了它,就可以使用它。digest认证比Basic认证更安全。

第三个指令AuthUserFile告诉服务被htpasswd创建的文件在哪里。

第四个指令require告诉服务该文件中的哪些用户可以访问该文件,valid-user参数是告诉服务该文件中的任何用户都可以访问该资源,你也可以配置特定用户可以访问该资源。例如:

require user snow john

只有snow,john两个用户可以访问该资源,其他用户都会被拒绝。

如果一个用户被允许访问不同的区域,他们仅仅需要输入一次密码,但是如果在不同的区域有不同的realm,用户需要再次输入他的密码。

5. 使用Groups

如果你想要users文件的一些用户访问一个资源,你需要在require行列出所有的用户,如果你有很多用户的话,这种方式是不太好的。有一种方式可以解决这种问题,就是用一个group文件,你可以使用require行限制到特定的group。例如:有一个叫作staff的组,它包含所有访问特定资源的用户。

1 require group staff

多个group也可以使用,用户也可以同时使用,

require group staff admin
require user adminuser

 

 它允许组staff和admin访问资源和用户adminuser访问资源。

group文件的形式:

staff: martin jane

admin: art adminuser

staff和admin是组,martin和jane属于staff组,art和adminuser属于admin组。

AuthGroupFile指令是告诉group文件在哪里。记住,在group文件中一行的最大长度是8000字符(大约8K),如果你有超过行的长度的用户数,你可以再写一行伴随着相同组。

apache的用户认证

标签:

原文地址:http://www.cnblogs.com/yandufeng/p/5092366.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!