Initial commit
Benjamin Renard authored 9 years ago
|
1) <?php
2)
3) /*
4)
5) ************************************
6) * Configuration *
7) ************************************
8)
9) */
10)
11) // PhpCAS library path
12) $phpCAS_path="CAS.php";
13)
14) // All valid CAS servers
15) $cas_servers=array(
16) // CAS server hostname
17) $_SERVER['SERVER_NAME'] => array(
18) // Context of the CAS Server
19) 'context' => '/cas',
20) // CAS server port
21) 'port' => 443,
|
Add insecure parameter to a...
Benjamin Renard authored 3 years ago
|
22) // If you running this application in HTTP only, uncomment following parameter
23) //'insecure' => true,
|
Initial commit
Benjamin Renard authored 9 years ago
|
24) // Disable CAS server Validation
25) 'ssl_validation' => false,
26) // If ssl_validation is enable you must define
27) 'ssl_cacert_path' => '/path/to/cacert.crt',
28) 'ssl_cn_validation' => true
29) )
30) );
31)
32) // FQDN of CAS server
33) $default_cas_server=key($cas_servers);
34)
35) // PhpCAS log file
|
Change phpCAS log file path...
Benjamin Renard authored 3 years ago
|
36) $phpCAS_logfile='cas.log';
|
Initial commit
Benjamin Renard authored 9 years ago
|
37)
|
Add insecure parameter to a...
Benjamin Renard authored 3 years ago
|
38) // Local app URL (auto-detect on first acces if null)
39) $service_url=null;
40)
|
Initial commit
Benjamin Renard authored 9 years ago
|
41) /*
42)
43) ************************************
44) * Main *
45) ************************************
46)
47) */
48)
49) $warnings=array();
50)
51) session_start();
52) require $phpCAS_path;
53) CAS_GracefullTerminationException::throwInsteadOfExiting();
54)
|
Add insecure parameter to a...
Benjamin Renard authored 3 years ago
|
55) // Make sure service URL is defined (otherwise, load it from session or auto-detect)
56) if (is_null($service_url)) {
57) if (isset($_SESSION['service_url'])) {
58) $service_url = $_SESSION['service_url'];
59) }
60) else {
61) $https = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off');
62) $request_uri = $_SERVER['REQUEST_URI'];
63) $request_uri = preg_replace('/\?.*$/', '', $request_uri);
64) $service_url = "http".($https?"s":"")."://".$_SERVER['SERVER_NAME'];
65) if (($_SERVER['SERVER_PORT'] != 443 && $https) || ($_SERVER['SERVER_PORT'] != 80 && !$https))
66) $service_url .= ":".$_SERVER['SERVER_PORT'];
67) $service_url .= $request_uri;
68) $_SESSION['service_url'] = $service_url;
69) }
70) }
71)
|
Initial commit
Benjamin Renard authored 9 years ago
|
72) if (isset($_REQUEST['server']) && !isset($cas_servers[$_REQUEST['server']])) {
73) $warnings[]="Invalid CAS server choiced";
74) unset($_REQUEST['server']);
75) }
76) if (isset($_REQUEST['server'])) {
77) $cas_host=$_REQUEST['server'];
78) if ($_SESSION['cas_server']!=$cas_host) {
79) $_SESSION['cas_server']=$cas_host;
80) unset($_SESSION['phpCAS']['user']);
81) }
82) }
83) elseif (isset($_SESSION['cas_server'])) {
84) $cas_host=$_SESSION['cas_server'];
85) }
86) else {
87) $cas_host=$default_cas_server;
88) $_SESSION['cas_server']=$cas_host;
89) unset($_SESSION['phpCAS']['user']);
90) }
91) $_SESSION['cas_server']=$cas_host;
92)
93) $_show_cas_client_config=false;
94) function show_cas_client_config() {
95) global $phpCAS_config, $_show_cas_client_config;
96) if ($_show_cas_client_config) return true;
97) $_show_cas_client_config=true;
98) echo "<h3>CAS Client configuration</h3><ul>";
99) foreach($phpCAS_config as $cfg_name => $cfg_val) {
100) echo "<li><strong>$cfg_name :</strong> <em>$cfg_val</em></li>";
101) }
102) echo "</ul>";
103) }
104)
105) $_show_warnings=false;
106) function show_warnings() {
107) global $warnings,$_show_warnings;
108) if ($_show_warnings) return true;
109) $_show_warnings=true;
110) if (!empty($warnings)) {
111) echo "<h2 style='color: #f00'>Warnings message</h2><ul>";
112) foreach ($warnings as $msg) {
113) echo "<li>$msg</li>";
114) }
115) echo "</ul>";
116) }
117) }
118)
119) function show_cas_log() {
120) global $phpCAS_logfile;
121)
122) echo "<h2>PhpCAS Debug Log</h2>";
123) if (is_writable($phpCAS_logfile)) {
124) $lines=file($phpCAS_logfile);
125) if (is_array($lines)) {
126) echo '<pre>'.implode('',$lines).'</pre>';
127) }
128) else {
129) echo "<strong>Error reading PhpCAS debug log file ($phpCAS_logfile).</strong>";
130) }
131) }
132) else {
133) echo "<strong>PhpCAS debug log file does not exists or is not writable ($phpCAS_logfile).</strong>";
134) }
135) }
136)
137) function show_user_infos() {
138) echo "<strong>Login :</strong> <em>".phpCAS::getUser()."</em><br/>";
139) echo "<strong>Attributes : </strong><pre>".print_r(phpCAS::getAttributes(),True).'</pre>';
140) }
141)
142) ?>
143) <html>
144) <head>
145) <title>Test CAS</title>
146)
147) <style>
148) strong {
149) font-size: 0.9em;
150) }
151)
152) em {
153) font-size: 0.8em;
154) }
155)
156) pre {
157) margin-left: 1em;
158) padding: 1em;
159) border-left: 1px solid;
160) background-color: #eee;
161) font-size: 0.9em;
162) }
163)
164) div.success, div.error {
165) padding: 0.2em;
166) width: 50%;
167) font-weight: bold;
168) margin: 1em;
169) text-align: center;
170) }
171)
172) div.success {
173) color: #0E4700;
174) border: 1px solid #0E4700;
175) background-color: #99E774;
176) }
177)
178) div.error {
179) color: #f00;
180) border: 1px solid #f00;
181) padding: 1em;
182) background-color: #C56E6E;
183) }
184)
185) h2 {
186) border-bottom: 1px solid;
187) }
188) </style>
189) <body>
190) <h1>Test CAS Application</h1>
191)
192) <h2>CAS server selection</h2>
193) <form action='index.php' method='POST'>
194) <label for='server'>CAS server</label> :
195) <select name='server' id='server' onchange="javascript:submit();">
196) <?php
197) foreach($cas_servers as $srv => $opts) {
198) echo "<option value='$srv'".(($cas_host==$srv)?'selected':'').">$srv</option>\n";
199) }
200) ?>
201) </select>
202) <input type='submit' value='Change'/>
203) </form>
204) <h2>Menu</h2>
205) <ul>
206) <li><a href='?do=login'>Login</a></li>
207) <li><a href='?do=caslogout'>Logout on CAS server</a></li>
208) <li><a href='?do=locallogout'>Logout on local application</a></li>
209) <?php
210) if (is_writable($phpCAS_logfile)) {
211) echo "<li><a href='?truncatelog=true'>Truncate Debug log file content</a></li>";
212) }
213) ?>
214) </ul>
215)
216) <h2>CAS Client Initialization ...</h2>
217) <?php
218) try {
219)
220) $phpCAS_config=array(
221) 'CAS Hostname' => $cas_host,
222) 'CAS server port' => $cas_servers[$cas_host]['port'],
223) 'CAS server context' => $cas_servers[$cas_host]['context'],
|
Add insecure parameter to a...
Benjamin Renard authored 3 years ago
|
224) 'Service URL' => $service_url,
|
Initial commit
Benjamin Renard authored 9 years ago
|
225) );
226)
227) if (is_writable($phpCAS_logfile)) {
228) if (isset($_REQUEST['truncatelog'])) {
229) $fh = fopen($phpCAS_logfile, 'w');
230) fclose($fh);
231) }
232) $phpCAS_config['Debug file'] = $phpCAS_logfile;
233) phpCAS::setDebug($phpCAS_logfile);
234) }
235)
236) phpCAS::client(CAS_VERSION_2_0, $cas_host, $cas_servers[$cas_host]['port'], $cas_servers[$cas_host]['context']);
|
Add insecure parameter to a...
Benjamin Renard authored 3 years ago
|
237) phpCAS::setFixedServiceURL($service_url);
238)
239) if ($cas_servers[$cas_host]['insecure']) {
240) $phpCAS_config['Insecure'] = 'Yes';
241) $phpCAS_config['Base URL'] = 'http://'.$cas_host.($cas_servers[$cas_host]['port']?':'.$cas_servers[$cas_host]['port']:'').$cas_servers[$cas_host]['context'];
242) // Remove trailing slash if present
243) if (substr($phpCAS_config['Base URL'], -1)=='/')
244) $phpCAS_config['Base URL'] = substr($phpCAS_config['Base URL'], 0, -1);
245) $login_url = "$base_url/login";
246) $service_validate_url = "$base_url/serviceValidate";
247) $logout_url = "$base_url/logout";
248) $phpCAS_config['Login URL'] = $phpCAS_config['Base URL']."/login?service=".urlencode($service_url);
249) $phpCAS_config['Logout URL'] = $phpCAS_config['Base URL']."/logout";
250) $phpCAS_config['Service validate URL'] = $phpCAS_config['Base URL']."/serviceValidate";
251) phpCAS::setServerLoginURL($phpCAS_config['Login URL']);
252) phpCAS::setServerLogoutURL($phpCAS_config['Logout URL']);
253) phpCAS::setServerServiceValidateURL($phpCAS_config['Service validate URL']);
254) // Be sure SSL validation is disabled
255) $cas_servers[$cas_host]['ssl_validation'] = false;
256) }
257) else
258) $phpCAS_config['Insecure'] = 'No';
|
Initial commit
Benjamin Renard authored 9 years ago
|
259)
260) echo "<div class='success'>Client successfully initialized</div>";
261)
262) if ($cas_servers[$cas_host]['ssl_validation']===true) {
263) if (is_readable($cas_servers[$cas_host]['ssl_cacert_path'])) {
264) $phpCAS_config['SSL Validation']='Enabled';
265) $phpCAS_config['SSL CA Cert Validation File']=$cas_servers[$cas_host]['ssl_cacert_path'];
266) $phpCAS_config['SSL CN Validation']=($cas_servers[$cas_host]['ssl_cn_validation']?'Enabled':'Disabled');
267) phpCAS::setCasServerCACert($cas_servers[$cas_host]['ssl_cacert_path'],$cas_servers[$cas_host]['ssl_cn_validation']);
268) }
269) else {
270) $warnings[]='SSL validation enable for this server but CA Cert file configured does not exists or is not readable';
271) $phpCAS_config['SSL Validation']='Disabled';
272) phpCAS::setNoCasServerValidation();
273) }
274) }
275) else {
276) $phpCAS_config['SSL Validation']='Disabled';
277) phpCAS::setNoCasServerValidation();
278) }
279)
280) phpCAS::setCacheTimesForAuthRecheck(0);
281)
282) show_cas_client_config();
283) show_warnings();
284)
285) ?>
286)
287) <h2>Action</h2>
288) <h3>State before running action</h3>
289) <?php
290) if (phpCAS::isAuthenticated()) {
291) echo "Authenticated";
292) }
293) else {
294) echo "Not authenticated";
295) }
296) ?>
297) <h3>Running action...</h3>
298) <?php
299)
300) if (isset($_REQUEST['do'])) {
301)
302) switch($_REQUEST['do']) {
303) case 'login':
304) phpCAS::forceAuthentication();
305) echo "<div class='success'>Successfully authenticated</div>";
306) break;
307) case 'caslogout':
308) phpCAS::forceAuthentication();
|
Use phpCAS::logoutWithUrl()...
Benjamin Renard authored 3 years ago
|
309) phpCAS::logoutWithUrl($service_url);
|
Initial commit
Benjamin Renard authored 9 years ago
|
310) break;
311) case 'locallogout':
|
Add insecure parameter to a...
Benjamin Renard authored 3 years ago
|
312) unset($_SESSION['session_url']);
|