SQUID的ncsa_auth认证原理

王朝厨房·作者佚名  2007-01-02
宽屏版  字体: |||超大  

前天看了一下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加了数据库查询语句就行了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有