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

apache用户认证

时间:2017-12-21 21:44:59      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:用户认证

1.apache用户认证

当用户访问某些页面的时候,可以设置用户密码的路后显示内容。但是为了更进一步提升安全性,可以将页面本身加密,让部分制定用户输入账号密码后才显示页面本身的内容。

在虚拟主机配置文件/usr/local/apache2.4/conf/extra/httpd-vhosts.conf中已经配置好了一台主机名为111.com的虚拟主机。在浏览器中输入该主机名可以得到如下页面:

技术分享图片

①将虚拟主机配置文件/usr/local/apache2.4/conf/extra/httpd-vhosts.conf配置如下:

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
    <Directory /data/wwwroot/111.com>
        AllowOverride AuthConfig
        AuthName "111.com user auth"
        AuthType Basic
        AuthUserFile /data/.htpasswd
        require valid-user
    </Directory>
</VirtualHost>

说明:

<Directory /data/wwwroot/www.123.com>  ? 指定认证的目录

        AllowOverride AuthConfig  ? 这个相当于打开认证的开关

        AuthName "123.com user auth"  ? 自定义认证的名

        AuthType Basic  ? 认证的类型,一般为Basic

        AuthUserFile /data/.htpasswd   ? 指定密码文件所在位置

        require valid-user  ? 指定需要认证的用户为全部可用用户

</Directory>

②创建认证用户

-c:创建,只有第一次创建文件的时候需要加上该选项

-m:以MD5方式对密码加密

[root@test_01 ~]# /usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd wennan
New password:
Re-type new password:
Adding password for user wennan
[root@test_01 ~]# cat /data/.htpasswd
wennan:$apr1$GxAVVmNA$fb12xm6BUmPR4N1Ro2S2O/

③检查配置文件,重新启动服务

[root@test_01 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@test_01 ~]# /usr/local/apache2.4/bin/apachectl graceful

④测试

使用curl测试,得到401的错误代码,表示需要经过用户认证。

[root@test_01 ~]# curl -x127.0.0.1:80 111.com -I
HTTP/1.1 401 Unauthorized
Date: Thu, 21 Dec 2017 12:02:16 GMT
Server: Apache/2.4.28 (Unix) PHP/5.6.30
WWW-Authenticate: Basic realm="111.com user auth"
Content-Type: text/html; charset=iso-8859-1

使用curl命令的-u选项输入用户密码则得到了200的反馈代码。

[root@test_01 ~]# curl -x192.168.231.128:80 -uwennan:P@ssw0rd 111.com -I
HTTP/1.1 200 OK
Date: Thu, 21 Dec 2017 12:43:25 GMT
Server: Apache/2.4.28 (Unix) PHP/5.6.30
X-Powered-By: PHP/5.6.30
Content-Type: text/html; charset=UTF-8

2.对个别文件进行加密

除了针对整个页面内容进行加密之外,也可以针对某些关联的文件进行加密。

①将虚拟主机配置文件/usr/local/apache2.4/conf/extra/httpd-vhosts.conf配置如下,只针对123.php文件进行加密

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
    #<Directory /data/wwwroot/111.com>
    #    AllowOverride AuthConfig
    #    AuthName "111.com user auth"
    #    AuthType Basic
    #    AuthUserFile /data/.htpasswd
    #    require valid-user
    #</Directory>
    <FilesMatch 123.php>
         AllowOverride AuthConfig
         AuthName "111.com user auth"
         AuthType Basic
         AuthUserFile /data/.htpasswd
         require valid-user
    </FilesMatch>

</VirtualHost>

②测试

[root@test_01 ~]# curl -x127.0.0.1:80 111.com/123.php -I
HTTP/1.1 401 Unauthorized
Date: Thu, 21 Dec 2017 12:53:21 GMT
Server: Apache/2.4.28 (Unix) PHP/5.6.30
WWW-Authenticate: Basic realm="111.com user auth"
Content-Type: text/html; charset=iso-8859-1

[root@test_01 ~]# curl -x192.168.231.128:80 -uwennan:P@ssw0rd 111.com/123.php -I
HTTP/1.1 200 OK
Date: Thu, 21 Dec 2017 12:53:36 GMT
Server: Apache/2.4.28 (Unix) PHP/5.6.30
X-Powered-By: PHP/5.6.30
Content-Type: text/html; charset=UTF-8

[root@test_01 ~]# curl -x192.168.231.128:80 -uwennan:P@ssw0rd 111.com/123.php
123.php authorization passed



apache用户认证

标签:用户认证

原文地址:http://blog.51cto.com/lavender7n/2053089

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