首 页 教育新闻课件中心论文中心教学教案试题中心语文专题综合下载技术教程公务员  
设为首页
加入收藏
联系我们
您当前的位置:中国教育资源网 -> 技术教程 -> 网络相关 -> 服务器 -> 代理服务器 -> 技术内容 退出登录 用户管理

SQUID的ncsa_auth认证原理代理服务器教程

论文作者:佚名  论文来源:不详  论文发布时间:2006-6-19 18:15:15  论文发布人:chjchjchj

减小字体 增大字体

              摘要: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加了数据库查询语句就行了。

 ljily000 回复于:2005-03-06 21:11:31:em27: 

顶!
Good!

 段誉 回复于:2005-03-12 04:00:37顶上来,大家都了解一下。

BTW:请大家多多关注我们这个板子,多推荐好帖子,增加我们这个板子的精华数量。谢谢!!

 shitian8848 回复于:2005-03-12 09:32:49正在弄squid的认证呢,呵呵,谢谢楼主了。
UP!

 platinum 回复于:2005-03-12 10:45:27请教一下楼主
[code:1:4e08dde378]
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 
#结束 
[/code:1:4e08dde378]
这个shell用于哪里?
好像和squid认证无关啊~
另外,ncsa的密码是MD5后的,而楼主这个shell是明码

我只是想知道,这个shell是做什么的呢?

 60133056 回复于:2005-03-12 13:45:32观望 学习

 wingger 回复于:2005-03-12 14:28:08[quote:7f7046b6b5="platinum"]这个shell用于哪里?
好像和squid认证无关啊~
另外,ncsa的密码是MD5后的,而楼主这个shell是明码

我只是想知道,这个shell是做什么的呢?[/quote:7f7046b6b5]

我也想知道,是用这个来代替ncsa吗?
还是解剖他的原理?

 wxxszzz 回复于:2005-03-12 17:43:24看了上面大家的回贴,我就再解释一下吧。

我们使用htpasswd产生的那个密码文件里的密码是用MD5加密的。

但是squid传递给ncsa_auth认证程序的密码使用的是明码,
然后由ncsa_auth认证程序再用md5加密传给他的密码后
再与用htpasswd产生的那个密码文件里的密码相比较。
如果符合就认为密码正确。

另外以上的sh与使用php密码认证的程序。
就是接到squid的密码后,不使用md5加密接收到的密码,直接比较,

以上的两个程序
他们都是可以直接替代ncsa_auth这个认证程序的。

OK,如果还有疑问,可以再提问,不过我觉得SQUID他这样的认证是比较合理的。现时也比较直接明了,

设想一下,如果你的认证用户非常多,如有1000人以上同时认证,我们可以简单的使用上面的高级语言如C、php、perl、java等语言,只要他的代码里支持套接字sockets接口你就可以设计一个集中式的认证系统。

以PHP举例:

代码如顶搂的语言里只是稍微修改一下。
[code:1:d8bd213a3b]
在ncsa_auth.php内容 
<?php 

$fd = fopen('php://stdin', 'r'); 
while(true){ 
       $buffer = fgets($fd, 4096); 
       $lsstr=explode(' ',$buffer); 
#这里使用套接字把用户名与密码发送到后台认证中心去
     $sfd=fscoket("x.x.x.x",)
       write      
       read
       fclose($sfd);

fclose($fd);
?> 
[/code:1:d8bd213a3b]
这里之后,一个比较好的认证中心这可以产生了。之所以选用PHP认证,是因为这段时间用PHP比较多。
这样之后,你就可以使用多台SQUID,多台认证中心,一个中央数据库。

呵呵,不知道各位看过我的解释与说明之后,是不是有所启发呢?
没有做不到,只有想不到的事情。

 platinum 回复于:2005-03-16 07:21:21这个是ncsa_auth.c的源代码
[code:1:2a9999c6f7]
/*
 * ncsa_auth.c
 *
 * AUTHOR: Arjan de Vet <Arjan.deVet@adv.iae.nl>
 *
 * Example authentication program for Squid, based on the original
 * proxy_auth code from client_side.c, written by
 * Jon Thackray <jrmt@uk.gdscorp.com>.
 *
 * Uses a NCSA httpd style password file for authentication with the
 * following improvements suggested by various people:
 *
 * - comment lines are possible and should start with a '#';
 * - empty or blank lines are possible;
 * - extra fields in the password file are ignored; this makes it
 *   possible to use a Unix password file but I do not recommend that.
 *
 */

#include "config.h"
#if HAVE_STDIO_H
#include <stdio.h>
[] [返回上一页] [打 印] [收 藏]  
 ∷相关技术评论  (评论内容只代表网友观点,与本站立场无关!) [查看发表评论...]
 
 中国教育资源网免费技术教程下载中心-站内广告 站内广告 中国教育资源网免费技术教程下载中心-站内广告 
 中国教育资源网站内搜索 站内搜索 中国教育资源网站内搜索 
 

   
 中国教育资源网免费技术教程下载中心-栏目导航 栏目导航 中国教育资源网免费技术教程下载中心-栏目导航 
· Windows 9XMEXP · Windows NT20002003
· LinuxBSD · 系统综合
· IISApache · 硬件技术
· Web服务器 · FTP服务器
· 邮件服务器 · 域名服务器
· Windows服务器 · 代理服务器
· 服务器综合
 
中国教育资源网免费技术教程下载中心-相关教程  相关技术 中国教育资源网免费技术教程下载中心-相关教程
· squid 配置详解+认
· Squid+MRTG实现缓存
· 关于squid和mysql的
· netfilter和squid配
· 这样的squid代理配置
· squid可以做socks代
· Squid - A quick st
· squid开多端口代理的
· 回复-置顶: linux+s
· 企业解决方案实践sq
 中国教育资源网免费技术教程下载中心-本月热门教程 本月热门 中国教育资源网免费技术教程下载中心-本月热门教程 
 
 中国教育资源网免费技术教程下载中心-本日热门论文 本日热门 中国教育资源网免费技术教程下载中心-本日热门论文 
 
关于本站 - 网站帮助 - 免费课件 - 美容 - 绿色软件 - 软件下载 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 网站留言
浙ICP备06010405号 Email:cnkjz@163.com 技术支持:名流设计
版权所有 Copyright© 2002-2004 名流