From 699ab244d233f275011a8df88c658e3cce3ce5cf Mon Sep 17 00:00:00 2001 From: Benjamin Renard Date: Mon, 29 Dec 2014 21:54:44 +0100 Subject: [PATCH] Initial commit --- index.php | 302 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 302 insertions(+) create mode 100644 index.php diff --git a/index.php b/index.php new file mode 100644 index 0000000..66c7229 --- /dev/null +++ b/index.php @@ -0,0 +1,302 @@ + 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(); + + +?> + + +