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用户认证的主要内容,如果未能解决你的问题,请参考以下文章
Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段