SQUID的ncsa_auth认证原理
前天看了一下ncsa_auth认证程序的源码,发现这个认证其实是非常简单的。
squid启动时运行ncsa_auth passwd密码文件
如果你的认证用户不是很多的话,写个sh就可以解决问题了
ncsa_auth.sh
内容如下
#认证用户名为abc密码123
[code:1:e0e520c5be]
while true ; do
read a
user=`echo a| /usr/bin/cut -d ' ' -f1`
pass=`echo a|/usr/bin/cut -d ' ' -f2`
if [ "$user" == "abc" ] ; then
if [ "$pass" == "123" ] ; then
echo OK;
else
echo ERR;
fi
else
echo ERR
fi
done
#结束
呵呵,如果你的认证不是很频繁的话。但是你希望与你的数据库认证集成在一起的话
你也可以用php连结数据库达到这个目的
在ncsa_auth.sh里的内容应该如下:
/usr/local/bin/php /usr/local/etc/ncsa_auth.php
在ncsa_auth.php内容
<?php
$fd = fopen('php://stdin', 'r');
while(true){
$buffer = fgets($fd, 4096);
$lsstr=explode(' ',$buffer);
$sql_str="select user from bbs_user where userid like '$lsstr[0]' and pass like '$lsstr[1]'";
#如果用户名与密码正确的话
if(true) echo 'OK';
else echo 'ERR';
}
?>
[/code:1:e0e520c5be]
抛砖引玉,希望大家在用squid认证能够有所启发,当然如果你觉得效率低下的话就使用C,直接修改squid自带的ncsa_auth.c加了数据库查询语句就行了。