如何添加Apache服务器用户验证AllowOverride AuthConfig

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何添加Apache服务器用户验证AllowOverride AuthConfig相关的知识,希望对你有一定的参考价值。

参考技术A apache服务器已经内置用户验证机制,大家只要适当的加以设置,便可以控制网站的某些部分要用户验证。
通常分为以下三步:
1、在apache的配置文件httpd.conf中声明要进行验证的目录
2、在要进行验证的目录中创建.htaccess文件,在此文件中指明用于验证的文件存放的位置
3、根据.htaccess指明的位置,用apache自带的htpasswd命令创建用于验证的文件
步骤说明:
假设要对/home/ddd这个目录进行访问控制。(这个目录不在APACHE的主目录中,因此要用alias 添加为虚拟目录)
1、在apache的配置文件httpd.conf中声明要进行验证的目录
编辑httpd.conf
LoadModule auth_module modules/mod_auth.so #需要加载此模块进行认证
Alias /test "/home/ddd" #添加为虚拟目录
Options Indexes MultiViews
AllowOverride All #允许用.htaccess文件中指定的验证文件进行身份验证
Order allow,deny
Allow from all
#AllowOverride all 表示进行身份验证 这是关键的设置
此外,也可用AllowOverride AuthConfig
实例:
ServerName test.xxx.com
ServerAlias xxx.com 123.123.123.123
DocumentRoot /data/ddd/
Options Indexes FollowSymlinks MultiViews
AllowOverride All
ErrorLog /error.log
2、在要进行验证的目录中创建.htaccess文件,在此文件中指明用于验证的文件存放的位置
在/home/ddd下创建.htaccess文件
vi /home/ddd/.htaccess,内容如下:
AuthName "请输入用户名及口令"
AuthType Basic
AuthUserFile /home/.htpasswd
require valid-user
#AuthName 描述,出现在验证对话框标题栏中
#AuthUserFile /home/.htpasswd (指定验证文件存放于/home中,文件名为.htpasswd,此文件具有隐含属性,其中包括允许访问的用户名及密码。
#require valid-user 使用验证文件中的有效用户进行验证
也可使用 require user <用户> 来指定特定用户进行验证
#密码文件推荐取名为.htpasswd,因为apache默认系统对“.ht”开头的文件默认不允许外部读取,安全系数会高一些。
3、根据.htaccess指明的位置,用apache自带的htpasswd命令创建用于验证的文件
由于已经在第2步中指定验证文件为/home/.htpasswd文件,所以下面创建这个文件
htpasswd -c /home/.htpasswd jp #创建.htpasswd文件,并添加用户jp,会要求输入口令
htpasswd /home/.htpasswd test #.htpasswd文件中添加第二个用户:test)
也可以不通过交互方式,直接在命令行,将口令添加到.htpasswd文件中
htpasswd -bc /home/.htpasswd jp 111 (创建.htpasswd文件,并添加用户jp,密码为111)
htpasswd -b /home/.htpasswd test 222 (.htpasswd文件中添加第二个用户:test 密码为222)
#第一次创建用户要用到-c 参数 第2次添加用户,就不用-c参数,因为已经有.htpasswd文件,就不用再创建了。-b表示从命令行直接获取参数值,添加到验证文件.htpasswd中
如果想修改密码,可以用如下命令:
htpasswd -m .htpasswd jp
对存放于.htpasswd文件中的用户jp进行口令更改

如何在 PHP 和 Apache 中启动服务器用户身份验证?

【中文标题】如何在 PHP 和 Apache 中启动服务器用户身份验证?【英文标题】:How to start Server user authentication in PHP and Apache? 【发布时间】:2012-05-12 08:06:28 【问题描述】:

我有一个生产服务器,用于在授予访问权限之前对用户进行身份验证。我设置了一台新机器并从旧服务器复制了文件。现在,我可以正常访问页面,但它不要求输入用户名和密码。当我检查$_SERVER['PHP_AUTH_USER'] 的值时,什么都不返回。

是一种在服务器上激活它的方法还是我在从旧服务器复制它时错过了任何文件?

【问题讨论】:

你试过了吗:serverfault.com? 【参考方案1】:

检查旧服务器上的 .htaccess 文件。大概是这样的:

AuthGroupFile /dev/null
AuthName "admin"
AuthType Basic
AuthUserFile /home/path/to/.htpasswd/public_html/admin/.htpasswd
require valid-user

这是在做身份验证,而不是 PHP。

【讨论】:

但我也复制了 .htaccess 文件。但它仍然不要求用户名和密码! 您是否也复制了 .htpasswd 文件? .htpassword 的路径是否相同?

以上是关于如何添加Apache服务器用户验证AllowOverride AuthConfig的主要内容,如果未能解决你的问题,请参考以下文章

lamp用户认证

如何在 PHP 和 Apache 中启动服务器用户身份验证?

如何验证 Apache 缓存是不是正常工作?

php学习之bbs论坛项目-web架构和MVC思想

如何集成Apache NiFi和Azure Active Directory以进行用户身份验证?

如何在Apache Axis Web Service(SOAP)中添加基本身份验证?