學校多數(shù)采用的身份認證系統(tǒng)是CAS(Central Authentication Service),它可以統(tǒng)一管理用戶的認證信息,保證用戶的安全性。而PHP CAS是基于CAS協(xié)議開發(fā)的一套認證系統(tǒng),可以方便地在PHP應(yīng)用中實現(xiàn)CAS認證功能。本文就介紹一下如何在PHP應(yīng)用中部署CAS。
第一步是安裝PHP CAS擴展,可以通過命令行或在php.ini文件中加入如下代碼來實現(xiàn):
$ sudo apt-get install php5-cas 或 extension=php_cas.so
第二步是配置CAS客戶端,一般是在網(wǎng)站的配置文件中,在PHP代碼中進行。示例代碼如下:
phpCAS::setDebug(); phpCAS::client(CAS_VERSION_2_0, 'sso.example.com', 443, '/cas'); phpCAS::setNoCasServerValidation(); phpCAS::forceAuthentication();
其中setDebug函數(shù)用來開啟調(diào)試模式,client函數(shù)用來設(shè)置CAS服務(wù)器地址和端口號,setNoCasServerValidation函數(shù)用來關(guān)閉對CAS服務(wù)器的SSL證書驗證(通常可以不必開啟,但若是CAS服務(wù)器使用的是自簽名或者是個人CA證書,則必須開啟),forceAuthentication函數(shù)用來強制CAS驗證。
接下來就可以在代碼中使用CAS認證來保護需要認證的內(nèi)容了。例如:
session_start(); if (!isset($_SESSION['CAS_USERNAME'])) { phpCAS::forceAuthentication(); $_SESSION['CAS_USERNAME'] = phpCAS::getUser(); }
上面的代碼首先啟動用戶會話,如果用戶還沒進行過CAS認證,就調(diào)用forceAuthentication函數(shù)去CAS服務(wù)器上進行認證,并將認證后的用戶名保存到會話中。如果用戶已經(jīng)進行了認證,就直接從會話中獲取用戶名。
還有一些常用的CAS函數(shù),例如getAttributes可以獲取用戶的CAS屬性(如電子郵件地址、真實姓名等),logout可以使用戶注銷。
在開發(fā)PHP應(yīng)用時,如果需要兼容批量賬號,也可以自己開發(fā)一個CAS認證擴展,如CAS-Batch,可以給用戶提供自己的用戶名和密碼,來查詢已經(jīng)預先錄入到CAS系統(tǒng)中的賬號信息。
總之,使用PHP CAS可以讓開發(fā)者免于編寫自己的用戶認證功能,并且具有良好的擴展性,能夠很好地適應(yīng)各種要求。希望本文對你有所幫助。