CAS統一登入認證(9): 非典型php客戶端
阿新 • • 發佈:2018-11-09
根據《 CAS統一登入認證(7): 非典型.net客戶端 》上篇文章的思路,重寫了一個簡單驗證的cas php驗證客戶端 本文無需設定攔截器,只是靜默的簡單通過cas驗證使用者,訪問caslogin.php 地址才會進行連線驗證。
訪問url如: http://X.X.X.X/caslogin.php
caslogin.php原始碼如下:
<?php $CASHOST="https://author.linbsoft.com:8443/cas/"; //cas伺服器地址 $tkt=$_GET["ticket"]; if($tkt==""){ //還沒有ticket 轉到cas伺服器登入 $redir = $CASHOST."login?service="."http://".$_SERVER["SERVER_NAME"].$_SERVER["PHP_SELF"]; Header("Location:$redir"); } $validateurl = $CASHOST."serviceValidate?ticket=".$tkt."&service=http://".$_SERVER["SERVER_NAME"].$_SERVER["PHP_SELF"]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $validateurl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); #取消SSL驗證 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $response = curl_exec($ch); #獲取驗證資訊 curl_close($ch); $userid=""; $html=""; if (is_null($response) || $response==''){ #獲取的驗證資訊為null $html="user validate return null"; }else{ if(strpos($response,"not recognized") !== false){ #驗證未通過 $html="ticket not recongized"; }else{ #驗證通過,獲取使用者 $userid=$response; session_start(); $_SESSION["username"]=$userid; $html="sucess login user:".$userid; } } echo $html; ?>
以上是cas驗證通過後返回資訊,可以自己處理比如執行軟體登入邏輯程式碼,登入後跳轉頁面等...