array(
// Context of the CAS Server
'context' => '/cas',
// CAS server port
'port' => 443,
// Disable CAS server Validation
'ssl_validation' => false,
// If ssl_validation is enable you must define
'ssl_cacert_path' => '/path/to/cacert.crt',
'ssl_cn_validation' => true
)
);
// FQDN of CAS server
$default_cas_server=key($cas_servers);
// PhpCAS log file
$phpCAS_logfile='/tmp/cas.log';
/*
************************************
* Main *
************************************
*/
$warnings=array();
session_start();
require $phpCAS_path;
CAS_GracefullTerminationException::throwInsteadOfExiting();
if (isset($_REQUEST['server']) && !isset($cas_servers[$_REQUEST['server']])) {
$warnings[]="Invalid CAS server choiced";
unset($_REQUEST['server']);
}
if (isset($_REQUEST['server'])) {
$cas_host=$_REQUEST['server'];
if ($_SESSION['cas_server']!=$cas_host) {
$_SESSION['cas_server']=$cas_host;
unset($_SESSION['phpCAS']['user']);
}
}
elseif (isset($_SESSION['cas_server'])) {
$cas_host=$_SESSION['cas_server'];
}
else {
$cas_host=$default_cas_server;
$_SESSION['cas_server']=$cas_host;
unset($_SESSION['phpCAS']['user']);
}
$_SESSION['cas_server']=$cas_host;
$_show_cas_client_config=false;
function show_cas_client_config() {
global $phpCAS_config, $_show_cas_client_config;
if ($_show_cas_client_config) return true;
$_show_cas_client_config=true;
echo "
CAS Client configuration
";
foreach($phpCAS_config as $cfg_name => $cfg_val) {
echo "- $cfg_name : $cfg_val
";
}
echo "
";
}
$_show_warnings=false;
function show_warnings() {
global $warnings,$_show_warnings;
if ($_show_warnings) return true;
$_show_warnings=true;
if (!empty($warnings)) {
echo "Warnings message
";
foreach ($warnings as $msg) {
echo "- $msg
";
}
echo "
";
}
}
function show_cas_log() {
global $phpCAS_logfile;
echo "PhpCAS Debug Log
";
if (is_writable($phpCAS_logfile)) {
$lines=file($phpCAS_logfile);
if (is_array($lines)) {
echo ''.implode('',$lines).'
';
}
else {
echo "Error reading PhpCAS debug log file ($phpCAS_logfile).";
}
}
else {
echo "PhpCAS debug log file does not exists or is not writable ($phpCAS_logfile).";
}
}
function show_user_infos() {
echo "Login : ".phpCAS::getUser()."
";
echo "Attributes : ".print_r(phpCAS::getAttributes(),True).'
';
}
?>
Test CAS
Test CAS Application
CAS server selection
Menu
CAS Client Initialization ...
$cas_host,
'CAS server port' => $cas_servers[$cas_host]['port'],
'CAS server context' => $cas_servers[$cas_host]['context'],
);
if (is_writable($phpCAS_logfile)) {
if (isset($_REQUEST['truncatelog'])) {
$fh = fopen($phpCAS_logfile, 'w');
fclose($fh);
}
$phpCAS_config['Debug file'] = $phpCAS_logfile;
phpCAS::setDebug($phpCAS_logfile);
}
phpCAS::client(CAS_VERSION_2_0, $cas_host, $cas_servers[$cas_host]['port'], $cas_servers[$cas_host]['context']);
echo "Client successfully initialized
";
if ($cas_servers[$cas_host]['ssl_validation']===true) {
if (is_readable($cas_servers[$cas_host]['ssl_cacert_path'])) {
$phpCAS_config['SSL Validation']='Enabled';
$phpCAS_config['SSL CA Cert Validation File']=$cas_servers[$cas_host]['ssl_cacert_path'];
$phpCAS_config['SSL CN Validation']=($cas_servers[$cas_host]['ssl_cn_validation']?'Enabled':'Disabled');
phpCAS::setCasServerCACert($cas_servers[$cas_host]['ssl_cacert_path'],$cas_servers[$cas_host]['ssl_cn_validation']);
}
else {
$warnings[]='SSL validation enable for this server but CA Cert file configured does not exists or is not readable';
$phpCAS_config['SSL Validation']='Disabled';
phpCAS::setNoCasServerValidation();
}
}
else {
$phpCAS_config['SSL Validation']='Disabled';
phpCAS::setNoCasServerValidation();
}
phpCAS::setCacheTimesForAuthRecheck(0);
show_cas_client_config();
show_warnings();
?>
Action
State before running action
Running action...
Successfully authenticated";
break;
case 'caslogout':
phpCAS::forceAuthentication();
phpCAS::logout();
break;
case 'locallogout':
unset($_SESSION['phpCAS']);
if (!isset($_SESSION['phpCAS'])) {
echo "Successfully logout
";
}
else {
echo "Failed to unset phpCAS session informations
";
}
break;
default:
echo "Incorrect parameters
";
}
}
else {
echo "Nothing to do";
}
if (phpCAS::isAuthenticated()) {
echo "Authenticated user informations
";
show_user_infos();
}
// End of catch
}
catch (CAS_GracefullTerminationException $e) {
echo "PhpCAS return exception
";
show_cas_client_config();
show_warnings();
}
show_cas_log();
?>