实现基于basic验证的目录访问

一:实验背景;

1、为了实现安全的登陆机制,使用基于basic的认证登陆;

2、认证方式有两种:基于basic明文的认证(以后配合https可以实现加密认证);digest消息摘要认证,此认证兼容性差,目前基本上都不使用了;

3、虚拟账号:仅用于访问某特定服务时的认证标识;

4、虚拟账号可以存放在文本文件中,也可以放在比较安全非SQL数据库中,,,,,,,;

5、生成虚拟用户工具:htpasswd;来自httpd-tools包,(使用前可以先检查一下包是否安装);

格式:htpasswd [options]  /PATH/HTTPD_PASSWD_FILE username 

选项:

-c:自动创建文件,仅应该在文件不存在时使用     ------》若创建多个账号,第一次创建时加上-c,以后就不需要加了

-mmd5格式加密                                                             -----》默认的加密方式

-s: sha格式加密

-D:删除指定用户



二:实验步骤;

一:基于用户的basic认证;

1、建一个secrettest测试文件;

[root@Centos6 /app]# mkdir secrettest
[root@Centos6 /app]# echo "hello,weclome to my secret base" > secrettest/index.html

2、、定义配置文件;

[root@Centos6 /app]# vim /etc/httpd/conf.d/test.conf                            #在子配置文件中定义
<directory /app/secrettest>                        
authname "Secret DIR"                                                            #弹框提示符(用火狐浏览器可以看到)
authtype basic                                                                   #验证类型 basic
authuserfile /etc/httpd/conf.d/.httpusers                                        #指明虚拟用户的存放路径,一般为了安全,可以放在一个隐藏文件中
require user http1 http3                                                         #在/etc/httpd/conf.d/.httpusers定义的用户中允许通过验证的用户;允许所有用户Require valid-user
</directory>
3、使用特定命令生成虚拟用户;

[root@Centos6 /app]# htpasswd -c /etc/httpd/conf.d/.httpusers http1                 #创建第一个用户,文件还没有生成,所以需要加上-c指定生成文件
New password:                                                                       #回车后要在此处输入密码;
Re-type new password:                                                               #重复输入上面的密码;
Adding password for user http1    
[root@Centos6 /app]# htpasswd -s /etc/httpd/conf.d/.httpusers http2                 #创建第二个用户,不需要-c选项;-s是用sha加密方式
New password: 
Re-type new password: 
Adding password for user http2
[root@Centos6 /app]# htpasswd -m /etc/httpd/conf.d/.httpusers http3                 #创建第三个用户,-m使用md5加密方式,其实默认的就是md5加密
New password: 
Re-type new password: 
Adding password for user http3
[root@Centos6 /app]# cat /etc/httpd/conf.d/.httpusers                               #查看一下虚拟用户是否创建成功
http1:8GqhwrSVFG4eM
http2:{SHA}AAXfhrY/nwrcGaafjs69saZnPt4=
http3:$apr1$YzZRNDmP$HXYxM.HfSpVX0ENS9Z/S/0
[root@Centos6 /app]# 
[root@Centos6 /app]# service httpd restart                             #重启服务

二:基于组的basic认证;

在基于用户的basic的基础上添加;
1、修改上面定义好的配置文件;
[root@Centos6 /app]# vim /etc/httpd/conf.d/test.conf 
<directory /var/www/html/secrettest>
authname "Secret DIR"
authtype basic
authuserfile /etc/httpd/conf.d/.httpusers
authgroupfile /etc/httpd/conf.d/.httgroups                 #在之前的基础上,加上了关于组存放的文件路径(此文件需要自己手工创建)
require group  httpgroup1                                 #这里改成允许访问的组
</directory>
2、定义组存放的文件;
[root@Centos6 /app]# vim /etc/httpd/conf.d/.httpgroups
httpgroup1:http1 http2
httpgroup2:http1 http3
[root@Centos6 /app]# service httpd restart                     #重启服务

三:实验测试;

一:基于用户的测试;

打开浏览器,输入服务器(我用的是Centos 6的192.168.242.202)的ip;我电脑上只有火狐和谷歌,所以如下图所示,第一个是火狐浏览器结果,看到“Secret DIR”的提示;第二张图是谷歌浏览器的提示框;


因为我们总共创建了三个用户,允许http1和http3访问,所以,你可以输入http2和其密码试试,还是在原界面;输入http1或者http3及其密码后,会出现如下图所示,出现/var/www/html/secrettest/index.html的内容;




二:基于组的测试;

步骤同基于用户的测试;只不过区别是定义在组httpgroup1中的http1和http2用户可以密码登录访问;

四:实验总结;

1、要有修改配置文件的操作,建议在其子配置文件中定义,尽量不要动主配置文件;

2、切记,只要是修改了配置文件,就一定要重启httpd服务使其生效;

发布了39 篇原创文章 · 获赞 5 · 访问量 3万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章