1. 程式人生 > >CAS統一登入認證(9): 非典型php客戶端

CAS統一登入認證(9): 非典型php客戶端

根據《 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驗證通過後返回資訊,可以自己處理比如執行軟體登入邏輯程式碼,登入後跳轉頁面等...