一、PhpWeb客户端配置
首先php的配置文件中(php.ini)要支持extension=php_curl.dll。将提供的CAS-PHP解压(点此下载链接下载, 提取码:qwer),把里面的CAS文件夹和CAS.php拷贝到项目根目录。
二、新增Init.php文件
在项目根目录下新增Init.php。其内容为:
include_once "CAS/CAS.php"; phpCAS::setDebug(); //指定cas地址,第一个为cas版本,一般为CAS_VERSION_2_0 //第二个参数为cas地址,第三个为cas的端口,第四个是cas的上下文 phpCAS::client(CAS_VERSION_2_0,'cas.jnsjsxy.com',3193,'/cas',true); //sso退出时,cas会请post应用带上logoutRequest参数,请求应用地址。 //设置no ssl,即忽略证书检查。 phpCAS::setNoCasServerValidation(); //phpCAS::handleLogoutRequests()可以响应sso退出请求,注销当前用户认证凭据。 phpCAS::handleLogoutRequests(); phpCAS::forceAuthentication(); //$_REQUEST['logout'] 只是本应用退出参数。同时退出所有sso应用。 //param可以指定 业务系统的service和url。可以参考cas官方说明。 if(isset($_REQUEST['logout'])){ $param = array('service'=>'http://cas.jnsjsxy.com:3193/cas/'); phpCAS::logout($param); exit; }
三、项目本身文件修改
找到项目的登录页,在登录页面顶部添加以下代码:
require_once ("Init.php"); $username = phpCAS::getUser(); if ($username!=null){ session_start(); $_SESSION['username'] = $name; //echo "<script> alert('{$username}') </script>"; }else{ 跳转登录页}
四、注意事项
如果要实现与cas的统一集成,需要各个业务系统与cas的身份做唯一标识,用此唯一标识进行约束,cas登录验证返回的也是该标识字段(当然可以包含多个消息报文)。
需要对原有业务系统的验证部分进行微调。
只需要判断是否能取到用户名即可。获取用户名的方式
$username = phpCAS::getUser();
此处得到的为cas与各系统之间约定的唯一标识。