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

"; } $_show_warnings=false; function show_warnings() { global $warnings,$_show_warnings; if ($_show_warnings) return true; $_show_warnings=true; if (!empty($warnings)) { echo "

Warnings message

"; } } 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(); ?>