【原创】Apache HTTP Server认证初探

啃了几天的 原版文档,并经过一些实测,关于Apache HTTP Server认证,有些心得,记录于此。闲话少说,这就开始。以下叙述均基于Apache HTTP Server 2.2。
所谓认证,最常见的场景就是在设置家庭路由器时,需要输入用户名和密码,如果输入错误或者取消认证,则页面会提示HTTP 401错误——"Authorization Required"。
HTTPD的认证分为Basic和Digest两种模式,Basic方式以明文方式向服务器端提交用户名和密码,而Digest方式以加密方式向服务器端提交用户名和密码。Digest方式显然更安全一些。
两种认证方式是可以并存的,至少在2.2版及windows平台上是这样的。网上有描述说二者不能并存的说法是错误的,至少不完全正确。

HTTP Server要对用户身份进行认证,必须得能访问到存储用户凭据的东东——认证源。认证源可以是文件(file)、DBM文件(DBM File)、LDAP、DBD(SQL Database),目前我就知道这四个,后面没有“等”字。解释一下DBM,它有SDBM、GDBM、NDBM和DB等格式,它实质上是一个非常简单的可以高效访问的Key-Value数据库,其中的“DB”指的就是“Berkeley DB 2”。SQL Database?对,你没看错, HTTPD支持从SQL Database中获取信息来认证用户,包括Oracle、MySql、PostgreSQL、SqLite等,也可以通过ODBC接口连接到其他数据库(例如MSSQL)。例如,你可以在httpd.conf中像下面这样配置,通过DB认证一个用户是否合法:
# mod_dbd configuration
DBDriver pgsql
DBDParams "dbname=apacheauth user=apache password=xxxxxx"

DBDMin 4
DBDKeep 8
DBDMax 20
DBDExptime 300


# core authentication and mod_auth_basic configuration
# for mod_authn_dbd
AuthType Basic
AuthName "My Server"
AuthBasicProvider dbd

# core authorization configuration
Require valid-user

# mod_authn_dbd SQL query to authenticate a user
AuthDBDUserPWQuery \
"SELECT password FROM authn WHERE user = %s"

这使得HTTPD的认证源更加安全,因为其完全可以部署在另外一台服务器上。(可以避免被破坏,但http服务器被攻破后,别人是可以从配置文件中查到数据库的连接信息从而获得用户的认证凭据的)

HTTPD的安装包里同样提供了很多认证相关的工具,比如htdbm、htdigest、htpasswd、httxt2dbm,这几个是可以直接运行的,还有个dbmmanage,是perl脚本写的,在windows下,你必须安装一个perl的环境才能使用。详阅http://win32.perl.org/



ps:关于DBM File,摘录一段简明扼要的说明给大家看:
DBM is an acronym which stands for Data Base Management
A DBM file is simply a binary database of key-value pairs
Perl enables you to "bind" an associative array variable to a DBM file using the dbmopen() function
The contents of the DBM file may then be manipulated by simply referencing or assigning to the associative array variable!

关于DBM 文件的源码研究可以参考 这里

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29867/viewspace-708246/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29867/viewspace-708246/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值