文/夏淩雲.."/>
人人書

雜誌

保存到桌面 | 簡體人人書 | 手機版
傳記回憶文學理論偵探推理驚悚懸疑詩歌戲曲雜文隨筆小故事書評雜誌
人人書 > 雜誌 > 利用 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的集成,從而為這些系統實現校園統一身份認證功能。

作者單位為中國石油大學(華東)網絡及教育技術中心
   

熱門書籍

熱門文章