apache用户认证

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了apache用户认证相关的知识,希望对你有一定的参考价值。

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方式对密码加密

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

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

[[email protected]_01 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[[email protected]_01 ~]# /usr/local/apache2.4/bin/apachectl graceful

④测试

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

[[email protected]_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的反馈代码。

[[email protected]_01 ~]# curl -x192.168.231.128:80 -uwennan:[email protected] 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>

②测试

[[email protected]_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

[[email protected]_01 ~]# curl -x192.168.231.128:80 -uwennan:[email protected] 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

[[email protected]_01 ~]# curl -x192.168.231.128:80 -uwennan:[email protected] 111.com/123.php
123.php authorization passed



以上是关于apache用户认证的主要内容,如果未能解决你的问题,请参考以下文章

Django REST框架--认证和权限

Apache Shiro 使用手册Shiro 认证

Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段

关闭 apache 的用户认证

apache用户认证域名跳转

Apache用户认证