近段時間不斷有從事PHP開發的朋友,詢問我如何配置CAS的PHP客戶端。由於工作關係我不能一一給予答覆特寫此篇文章。
首先很抱歉,由於個人業餘時間都在照顧小寶寶,所以很久都沒有給回覆,醞釀如此之久才寫。
在則由於公司管理比較嚴格,無法拿到當初專案使用CAS時候寫下的幾篇文件,因此只能先給大家一些文字的大綱,而無法圖文並茂了。
整個配置過程我劃分成四步驟:
1、準備CAS的PHP庫和相關庫檔案
1)到CAS的網站下載檔案phpcas-0.60-rc7.zip
2) 由於其用到了PEAR的DB庫,需要到PEAR網站去下載。
下載檔案PEAR-1.7.1.tgz和DB-1.7.13.tgz 也可在google上搜尋。
當然不一定是我說的版本,但我給的是我試驗成功的版本。
3) 用於使用到了SSL所以需要下載openssl。當然我是在windows環境下試驗的,下載的是
其的windows版本。
4)安裝openssl。
2、配置PHP環境
1)將phpcas-0.60-rc7.zip解壓,我們選在了PHP環境的include目錄。在其下建立cas將檔案解壓進去。
2)同理將PEAR-1.7.1.tgz和DB-1.7.13.tgz解壓,也分別建立pear和db兩個目錄。
3)修改php環境的ini檔案,一般是php.ini檔案。將我們前兩步驟建立的目錄加入到include_path中。根據安裝環境修改對應的unix或windows項。
4)由於phpcas用到了CURL(用於連線ssl)和DOMXML(用於處理CAS伺服器返回的訊息)兩個元件,因此需要保證php解釋環境需要有這兩個擴充套件。需要做的就是修改ini檔案將extentions節下的遮蔽符號去掉,然後就是檢查PHP環境的extentions目錄下是否有對應的.dll或.o檔案。一般標準安裝都會有。
3、測試CAS的php客戶端
1)前面做完後,應該比較激動了,很想看看php程式到底能不能訪問CAS呢。
2)在phpcas-0.60-rc7.zip中的docs/examples中有幾個測試程式。當然我們先前解壓的目錄下也有。
3)我們只是看一下通了沒有,因此拷貝example_simple.php檔案到apache的htdocs下。具體根據你的web伺服器配置。總之目的就是能通過瀏覽器訪問example_simple.php。在用之前需要修改
example_simple.php檔案,主要是要修改裡面關於CAS伺服器配置資訊,修改程式碼中的phpCAS::client(…)這一句。整個方法意義如下:
phpCAS::client(CAS_VERSION_2_0,`服務地址`,埠號,`cas的訪問地址`);
將自己的服務地址和埠號和cas的相對服務地址的url填如就可以了,例如:phpCAS::client(CAS_VERSION_2_0,`localhost`,8443,`cas`);表示可以通過http://localhost:8443/cas訪問到CAS服務。
4)在瀏覽器裡試驗一下吧,沒有意外的話會看到CAS的登入介面。這就表示配通了。
4、根據專案需要修改對應的PHP程式碼,加入對CAS的呼叫,將使用者登入交給CAS我們只需處理對應的使用者,在PHP程式中的許可權問題了。對於舊有就有的PHP程式碼只需要用訪問CAS服務換掉驗證使用者身份部分就可以了。
呼叫CAS關鍵性程式碼:
include_once(`CAS.php`);
//可以不用,用於除錯,可以通過服務端的cas.log看到驗證過程。
phpCAS::setDebug();
// 初始化phpcas
phpCAS::client(CAS_VERSION_2_0,`服務地址`,埠號,`cas的訪問地址`);
例如:phpCAS::client(CAS_VERSION_2_0,`localhost`,8443,`cas`);
// 不使用SSL服務校驗
phpCAS::setNoCasServerValidation();
// 訪問CAS的驗證
phpCAS::forceAuthentication();
這時候就驗證完畢了
獲得使用者名稱可以通過phpCAS::getUser()
//登出
if (isset($_REQUEST[`logout`])) {
phpCAS::logout();
}
當然CAS除了它預設的登入介面和校驗邏輯,還是允許自行定義的。
如何自定義登入介面,後續在談。