apache2使用mod_authnz_external对系统用户进行验证

这件事情的起因是我在代码服务器上配置了一个cgit,直接通过浏览器查看代码,但是这个页面需要访问权限,我觉得直接使用系统账户是个好主意,但是不确定安全性如何。

实现方法是为apache2配置mod_authnz_external,让这个模块调用一个自己写的外部验证程序。帐号密码等参数的传递有若干种方式,我采用了环境变量,因为需要的代码最少,就是上一篇文章的那个

在/etc/apache2/http.conf中加入

AddExternalAuth cgit_auth /usr/bin/cgitauth
SetExternalAuthMethod cgit_auth environment

<Directory "/srv/www/htdocs/cgit/">
 AllowOverride None
 Options casino online  ExecCGI
 DirectoryIndex /cgi-bin/cgit/cgit.cgi
 Order allow,deny
 Allow from all
</Directory>

<Directory "/srv/www/cgi-bin/">
 AuthType Basic
 AuthName "What"s up?"
 AuthBasicProvider external
 AuthExternal cgit_auth
 Require valid-user
</Directory>

cgit_auth 是验证程序的标识符,/usr/sbin/cgitauth是其路径,environment 表示使用环境变量传递参数。

第一个Directory只是把/cgit/的index指定为cgit的cgi程序(这话怪怪的……)

第一个Directory对所有/cgi-bin开始的路径进行验证,反正服务器不跑别的东西,这就没关系了。

updatedupdated2022-02-222022-02-22