根据《 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验证通过后返回信息,可以自己处理比如执行软件登录逻辑代码,登录后跳转页面等...