13、基于用户的访问控制
认证质询:WWW-Authenticate:响应码为401,拒绝客户端请求,并说明要求客户端提供账号和密码
认证:Authorization:客户端用户填入账号和密码后再次发送请求报文;认证通过时,则服务器发送响应的资源
认证方式两种:
basic:明文
digest:消息摘要认证,兼容性差
安全域:需要用户认证后方能访问的路径;应该通过名称对其进行标识,以便于告知用户认证的原因
用户的账号和密码
虚拟账号:仅用于访问某服务时用到的认证标识
存储:文本文件,SQL数据库,ldap目录存储,nis等
basic认证配置
(1) 定义安全域
<Directory “/path">
Options None
AllowOverride None
#Require all granted
AuthType Basic #认证方式
AuthName "String“ #登录描述信息
AuthUserFile "/PATH/HTTPD_USER_PASSWD_FILE" #账号路径文件,由htpasswd命令生成
Require user username1 username2 ... #允许文件中特定用户登录访问
Require valid-user #允许账号文件中的所有用户登录访问
</Directory>
(2) 提供账号和密码存储(文本文件)
使用专用命令完成此类文件的创建及用户管理
htpasswd [options] /PATH/HTTPD_PASSWD_FILE username
-c 自动创建文件,仅应该在文件不存在时使用
-p 明文密码
-d CRYPT格式加密,默认
-m md5格式加密
-s sha格式加密
-D 删除指定用户
方法一:
1.使用htpasswd -c /etc/http/conf.d/user.list zzhz
2.配置文件设置
<directory /var/www/html/admin>
AuthType Basic
AuthName "aaaaaaa"
AuthUserFile "/etc/http/conf.d/user.list"
Require valid-user
</directory>
方法二:
1.在/var/www/html/admin下创建.htaccess文件并设置
AuthType Basic
AuthName "aaaaaaa"
AuthUserFile "/etc/http/conf.d/user.list"
Require valid-user
2.设置配置文件
<directory /var/www/html/admin>
AllowOverride AuthConfig
</directory>
基于组账号进行认证
创建用户账号和组账号文件
组文件:每一行定义一个组(组名在文件中随意取名,用户要使用htpasswd生成)
GRP_NAME: username1 username2 ...
示例:
vim /etc/httpd/conf.d/.htgroup
webadmins:wang mage
<Directory "/www/htdocs/admin">
Options None
AllowOverride None
AuthType Basic
AuthName "Administator private"
AuthUserFile "/etc/httpd/conf.d/.htpasswd"
AuthGroupFile "/etc/httpd/conf.d/.htgroup"
Require group webadmins
</Directory>
远程客户端和用户验证的控制(用户验证的控制有基于IP/用户的访问控制的两种)
Satisfy ALL|Any
ALL 客户机IP和用户验证都需要通过才可以
Any 客户机IP和用户验证,有一个满足即可
示例:
Require valid-user
<RequireAll>
Require all granted
Require not ip 172.16.1.1
</RequireAll>
Satisfy Any
14、实现用户家目录的http共享
基于模块mod_userdir.so实现
相关设置:
vim /etc/httpd/conf.d/userdir.conf
<IfModule mod_userdir.c>
#UserDir disabled
UserDir public_html #指定共享目录的名称
</IfModule>
<directory /home/wang/public_html>
Require all granted
#AuthType Basic
#AuthName "wanghome Page"
#AuthUserFile "/etc/httpd/conf.d/.httpuser"
#Require valid-user
</directory>
准备目录
su – wang;
mkdir ~/public_html
setfacl –m u:apache:x /home/wang
访问 http://localhost/~wang/index.html