配置Apache服务的basicdigest摘要认证
系统环境:RHEL5 [ <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />2.6.18-8.el5xen ]
软件环境:

    httpd-2.2.3-6.el5
目标功能:
   
针对Apache网站目录或URL位置实现用户访问认证(basic基本认证、digest摘要认证)
    ——basic
认证、digest认证任选一种即可。
   
注:以尽量减少对Web服务器性能的影响为出发点,仅在需要认证的目录(Directory)或位置(Location)范围作认证即可,避免在层次结构较复杂的目录(如网站根目录)使用.htaccess文件;如果用户认证的配置不多,可以直接在httpd.conf文件中相关区段进行配置,无需使用单独的.htaccess文件。
################################################################
一、安装httpd软件包
   
本处以RHEL5光盘自带的rpm包安装,过程略。
   
httpd.conf文件中,几个主要认证模块配置如下(默认已配置)
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
二、修改httpd.conf文件,添加对目录或位置的用户验证配置
  1
、创建网站测试文件
    # mkdir -p /var/www/html/auth
    # echo "Root Directory." > /var/www/html/index.html
    # echo "Auth Directory." > /var/www/html/auth/index.html
  2
、修改/etc/httpd/conf/httpd.conf文件,确认修改或添加以下内容:
DocumentRoot "/var/www/html"
    Options Indexes
    AllowOverride AuthConfig        #//
允许读取.htaccess文件中的认证配置(AuthConfig),其他目录应按默认值None
    Order allow,deny
    Allow from all

DirectoryIndex index.html index.php
  3
、启动httpd服务

    # /etc/init.d/httpd start
    # chkconfig --level 35 httpd on
三、配置基本认证(basic)
  
方式一:使用文本格式用户数据库

    1
、创建认证用户数据库文件(文本格式)
      # htpasswd -c /etc/httpd/conf/users_txt.pwd admin        #//
创建文本格式用户文件,同时添加用户
admin
      # htpasswd /etc/httpd/conf/users_txt.pwd jerry        #//
在数据库文件中添加用户
jerry
    2
、创建.htaccess配置文件

      # vi /var/www/html/auth/.htaccess
AuthName "Private Contents."
AuthType basic
AuthUserFile /etc/httpd/conf/users_txt.pwd
Require admin jerry        #//
允许用户adminjerry通过认证后访问,若用户较多,可以改为“Require valid-user”
    3
、测试

      
在客户端浏览器(必要时清空缓存)访问http://Server_IP/auth/,以adminjerry用户进行认证访问
  
方式二:使用dbm格式用户数据库(若用户较多,可采用dbm用户数据库以加快检索速度)
    1
、创建认证用户数据库文件(Berkeley DB格式
)
      # htdbm -TDB -c /etc/httpd/conf/users_dbm.db kitty        #//
创建DB格式(其他格式参考man)用户文件,同时添加用户
kitty
    2
、修改.htaccess配置文件

      # vi /var/www/html/auth/.htaccess
AuthName "Private Contents."
AuthType basic
AuthBasicProvider dbm
AuthDBMType DB
AuthDBMUserFile "/etc/httpd/conf/users_dbm.db"
Require kitty
    3
、测试
      
在客户端浏览器(必要时清空缓存)访问http://Server_IP/auth/,以kitty用户进行认证访问
四、配置摘要认证(digest)
  1
、创建digest认证用户数据库文件(文本格式)        #//digest认证貌似无法使用dbm用户文件

    # htdigest -c /etc/httpd/conf/users_digest.pwd "Private Contents." kenthy
  2
、修改.htaccess配置文件
AuthName "Private Contents."
AuthType digest
#AuthDigestDomain /auth/        #//
在目录区段(Directory)配置digest认证时,此行可有可无
AuthUserFile /etc/httpd/conf/users_digest.pwd
Require kenthy
  3
、测试
   
在客户端浏览器(必要时清空缓存)访问http://Server_IP/auth/,以kenthy用户进行认证访问
******************************** End *********************************
声明:技术来自学习,文档来自chinaunix,坚持学习,每天进步------------------Bhanv 01-03-09
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />