1、简介
对经常上网的用户有时会遇到这种情况:当访问一些网站的某些资源时,浏览器弹出一个对话框,要求输入用户名和密码才能获取资源的访问。实际上,这是用户认证的一种技术。用户认证是保护网络系统资源的第一道防线,它控制着所有登录并检查访问用户的合法性,其目标是仅让合法用户以合法的权限访问网络系统的资源。基本的用户认证技术是“用户名+密码”。
2、Apache的用户认证,基本认证方式Basic配置
(1)Basic 认证是HTTP 中非常简单的认证方式,因为简单,所以不是很安全,不过仍然非常常用。当一个客户端向一个需要认证的HTTP服务器进行数据请求时,如果之前没有认证过,HTTP服务器会返回401状态码,要求客户端输入用户名和密码。用户输入用户名和密码后,用户名和密码会经过BASE64加密附加到请求信息中再次请求HTTP服务器,HTTP服务器会根据请求头携带的认证信息,决定是否认证成功及做出相应的响应。
(2)配置一个本地目录的basic认证:
①创建目录:
②在子配置文件中添加:
vim /etc/httpd/conf.d/test.conf
<Directory "/var/www/html/secret">
AuthType Basic 认证方式
AuthName "Secret" 提示信息
AuthUserFile "/etc/httpd/conf.d/.htusers" 存放用户的文件 (需创建验证文件htpasswd -c /etc/httpd/conf.d/.htpusers wang)
Require user http1 http2 定义允许访问的用户
</Directory>
允许账号文件中的所有用户登录访问:Require valid-user
③使用专用命令完成此类文件的创建及用户管理:
htpasswd [options] /PATH/HTTPD_PASSWD_FILE username
-c:自动创建文件,仅应该在文件不存在时使用
-m:md5格式加密,默认方式
-s: sha格式加密
-D:删除指定用户
例:htpasswd -c /etc/httpd/conf.d/.htpusers wang 创建用户和设置密码,默认使用md5加密
htpasswd /etc/httpd/conf.d/.htpusers mage
注意:只有当第一次创建用户时需要加-c,否则后面创建用户会覆盖之前的用户
④重新启动服务:service httpd start
⑤测试:在linux上:
curl http://192.168.159.125/secret
在windows上测试:http://192.168.159.125/secret,会弹出用户认证界面
比较常见的错误:
一个是http的80端口被占用,我们需要修改/etc/httpd/conf/httpd.conf中两处地方:Listen 8080 ServerName localhost:8080,这里统一改成8080了