让apache2通过mysql做http digest认证

mysql里面要准备一张表

CREATE TABLE `users` (
  `userid` varchar(30) NOT NULL,
  `passwd` varchar(80) NOT NULL,
  `realm` varchar(80) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8

这里面的passwd其实是用MD5('userid:realm:明文密码')的方式算出来的。例如insert into users values ('snnn',MD5('snnn:host1:12345'),'host1');

然后在.htaccess或者httpd.conf中针对对应目录这样配置:

<Directory "/var/www/mtrg/">
   AuthType Digest
   AuthName "scm"
   AuthDigestDomain /mtrg

   AuthDigestProvider  dbd
   Require valid-user
   AuthDBDUserRealmQuery \
    "SELECT passwd FROM users WHERE userid = %s and realm=%s"
</Directory>

这里的AuthName就对应着数据库里面的realm。

参考文档:
http://httpd.apache.org/docs/current/mod/mod_dbd.html
http://httpd.apache.org/docs/current/mod/mod_auth_digest.html
http://httpd.apache.org/docs/current/mod/mod_authn_dbd.html

此博客中的热门博文

在windows下使用llvm+clang

少写代码,多读别人写的代码

tensorflow distributed runtime初窥