文/夏凌云.."/>
乐读窝

杂志

保存到桌面 | 繁体 | 手机版
传记回忆文学理论侦探推理惊悚悬疑诗歌戏曲杂文随笔小故事书评杂志
乐读窝 > 杂志 > 利用 JA-SIG CAS 实现 Cacti 的数字校园单点登录集成

利用 JA-SIG CAS 实现 Cacti 的数字校园单点登录集成

时间:2024-11-06 07:27:50


    文/夏凌云田爱宝宋文文

随着高校信息化建设的发展,数字化校园的构建成为重要的研究方向,关于数字化校园的CAS集成方案是一个值得探讨的话题。Cacti是一个常用的开源网络管理监测图形分析工具,在很多高校的网络日常管理和运维中被广泛运用。中国石油大学(华东)使用的是CactiEZ中文汉化版,其基于CentOS6,整合了Spine,RRDTool,集成了Monitor、Syslog、Weathermap等等插件以及Apache,Squid,MySQL等等必要软件环境,是一个功能很强大的完整Cacti中文解决方案。近来遇到了一个新需求,就是需要尝试为CactiEZ集成数字校园的SSO(SingleSignOn,单点登录)功能。

中国石油大学(华东)采用的数字校园系统支持CAS(CentralAuthenticationService,中央认证服务),部署了专门的CASServer为相关业务系统提供SSO登录认证服务。CAS是由JA-SIG开发的一套基于Apache协议的开源系统,在教育行业运用很广泛,很多高校均采用了CAS作为数字校园的单点登录解决方案。Cacti主要采用的是php语言开发,幸运地是,JA-SIG提供了开源的CASphpClient,同时Cacti也提供了相关的用户登录接口,可以利用这些接口实现两个系统的对接和集成。具体对接方法如下:

1.首先到JA-SIG官网下载最新版本的CASphp客户端(下载地址:https://developer.jasig.org/cas-clients/php/current/),现在的最新版本为1.3.4;

2.CASphpClient需要依据DOM标准(DocumentObjectModel,文档对象模型)对返回的web文件进行xml解析,因此需要php-dom安装包,在CactiEZ的安装镜像里是没有默认安装的,所以首先需要通过yuminstallphp-dom来安装该功能;

3.解压第一步下载的CAS-1.3.4.tgz文件,将里面的接口文件(CAS.php文件和/CAS文件夹)放到CactiEZ的Apache发布文件夹内,默认为/var/www/html/,以便后续调用;

4.在该文件夹下再建立一个ssoLogin.php文件,主要代码段和注释内容如下:
    /////引入和初始化CASphpClient和Cacti接口/////require_once'CAS.php';//引入CASphpClientinclude("./include/global.php");//引入Cacti接口//指定CASSever地址,端口和虚拟目录phpCAS::client(CAS_VERSION_2_0,"211.87.***.***”,8080,"/cas");

phpCAS::setNoCasServerValidation();//不进行服务器SSL验证

/////验证和对接过程/////

phpCAS::forceAuthentication();//进行强制的CAS验证

$CASuser=phpCAS::getUser();//获取CAS验证成功后的登录名

$cactiuser=db_fetch_row("SELECT*FROMuser_authWHEREusername='".$CASuser."'");//根据CAS登录名到Cacti用户表里查询对应用户if(sizeof($cactiuser)>0){

//如果该Cacti用户存在

$user_enabled=$user["enabled"];

if($user_enabled!="on"){//判断该用户是否被使能

echo"用户账户已被禁用.";

exit;

}

//已被使能,调用cacti接口,将登录记录插入到用户日志和系统日志

db_execute("INSERTINTOuser_log(username,user_id,result,ip,time)VALUES('".$cactiuser["username"]."',".$cactiuser["id"].",1,'".$_SERVER["REMOTE_ADDR"]."',NOW())");cacti_log("LOGIN:User'".$cactiuser["username"]."'Authenticated",false,"AUTH");

//按cacti要求给SESSION赋值,用户获得访问被CactiEZ授权访问的页面$_SESSION["sess_user_id"]=$cactiuser["id"];$firsturl=“graph_view.php”//跳转到指定的用户首页面header("Location:$firsturl");

exit;

}

else{//cacti中无此用户,记录到cacti系统日志并提示用户

cacti_log("LOGIN:AccessDenied",false,"AUTH");echo"无此用户,请现在CactiEZ中新建该用户并配置权限";exit;}

5.重启httpd服务后,访问fttp://CactiEZ-Server/ssoLogin.php页面,将自动跳转至CAS认证页面,输入统一身份认证用户名密码并通过验证后,用户将获得CactiEZ的权限,并跳转至代码里指定的graph_view.php页面,单点登录成功!

由于cacti对用户权限控制划分非常细致,所以仅仅使用CAS的统一身份信息并不能对cacti用户权限进行细分,所以在cacti系统里,还是需要预先建立一个和CAS中欲访问用户名相同的本地用户,并为其预先设置好访问权限,否则将会提示“无此用户,请在CactiEZ中新建该用户并配置权限”的错误。因此从这方面看,可能利用CASphpClient与CactiEZ对接仅仅能起到用户名密码的单点登录,对CactiEZ的用户管理并没有更多的帮助。但是JA-SIG除了PHP接口,还提供了.NET和JAVA等等的类似CAS接口,利用这些接口和本文思路,我们可以方便得实现各种自制或开源系统与CAS的集成,从而为这些系统实现校园统一身份认证功能。

作者单位为中国石油大学(华东)网络及教育技术中心
   

热门书籍

热门文章