Apache Httpd服务器之认证与授权(2)

<Directory "/usr/local/httpd/htdocs">
AuthName auth
AuthType Basic
AuthBasicProvider dbm    #使用dbm认证
AuthDBMUserFile /usr/local/httpd/users/auth_sdbm #密码本位置
Require valid-user
</Directory>
   

再次提醒下,如果你要使用数据库认证,必须通过apr编译出apr_dbd_mysql.so动态链接库,并把它放在linux能自动搜索到的lib目录下。

方案3:明文认证+MySQL认证
    要使用MySQL认证,必须先安装MySQL服务器。那么MySQL的“密码本”该如何设置呢?那就是建立数据库和表咯。下面提供一下基本步骤。首先创建一个数据库,名为auth,在auth库内建立一个表,名为users,users内有3个字段,一个id为自增长数字,一个user列,用于存放用户名。一个password列,用来存放密码。然后将你想要设置的用户名密码存放在表内。密码必须是经过CRYPT函数加密过的,可以通过htpasswd脚本获取,如通过/usr/local/httpd/bin/htpasswd -c /usr/local/httpd/users/auth_mysql wangwei 创建一个用户名为wangwei的密码本,输入密码123456后,生成了名为auth_mysql的文件,查看auth_mysql后发现里面有一条记录为wangwei:$apr1$FXx0wpMP$zr4ot39Ef0qK1TdoVMNjR0,那么wangwei:后面的即为加密后的密码,把该字符串存入password列即可。


    Httpd配置文件内的配置如下:


#方案1中的LoadModule指令先加载进来
DBDriver mysql #DB驱动为mysql
DBDParams "host=192.168.1.11 port=3306 dbname=auth user=root pass=123456" #连接字符串,懂mysql的应该都认识
DBDMin 1
DBDKeep 2
DBDMax 10
DBDExptime 60
Listen 80
ServerName localhost
DocumentRoot "/usr/local/httpd/htdocs"
<Directory "/usr/local/httpd/htdocs">
AuthName auth
AuthType Basic
AuthBasicProvider dbd 设置使用dbd认证
AuthDBDUserPWQuery "SELECT `password` FROM users WHERE `user`=%s" #设置查询SQL
Require valid-user
</Directory>

方案4:摘要认证+文本认证
    摘要认证的配置与基本认证几乎一样,只有两点不同,一是摘要认证需用htdigest创建密码本,二是摘要认证需配置一个认证域。htdigest脚本与htpasswd脚本在同一目录层次。创建方法如下:./htdigest -c "密码本路径" "域名称" "用户名"。如./htdigest -c /usr/local/httpd/users/auth_digest auth wangwei。域名称必须与配置内的AuthName指令设置的一致。而认证域是一个URI,按照方案1的目的,我们将它设置为/。
   
        配置方法如下:

<Directory "/usr/local/httpd/htdocs">
AuthName auth
AuthType Digest #设置为摘要认证
AuthDigestProvider file
AuthDigestDomain / #摘要认证域为/
AuthUserFile /usr/local/httpd/users/auth_digest
Require valid-user
</Directory>


    Httpd的授权
    除了使用用户名及密码的方式进行浏览器认证外,我们还可以通过IP、子网的方式进一步对用户进行访问限制。这就需要用到Httpd的授权。为了说明用户,我们设计以下几种情景。
    情景1,对用户进行IP限制,让处于192.168.1.0网段的用户访问,但不让192.168.1.254的用户访问。配置方案如下:

LoadModule unixd_module modules/mod_unixd.so
LoadModule alias_module modules/mod_alias.so
LoadModule mime_module modules/mod_mime.so
LoadModule cgid_module modules/mod_cgid.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule access_compat_module modules/mod_access_compat.so #使用授权时必须加载的库
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule dbd_module modules/mod_dbd.so
LoadModule authn_dbd_module modules/mod_authn_dbd.so
Listen 80
ServerName localhost
DocumentRoot "/usr/local/httpd/htdocs"
<Directory "/usr/local/httpd/htdocs">
Allow from 192.168.1.0
Deny from 192.168.1.254
Order Allow,Deny    #验证顺序,先允许,后拒绝。
</Directory>

情景2,在认证的基础上进行授权,既需要浏览器验证,又进行IP限制。配置方案如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ddb1eaa70dca7362452da06d508ffad9.html