mirror of
https://github.com/ACSPRI/queXS
synced 2024-04-02 12:12:16 +00:00
New version of PHPCAS
This commit is contained in:
107
include/phpCAS/docs/examples/config.example.php
Normal file
107
include/phpCAS/docs/examples/config.example.php
Normal file
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The purpose of this central config file is configuring all examples
|
||||
* in one place with minimal work for your working environment
|
||||
* Just configure all the items in this config according to your environment
|
||||
* and rename the file to config.php
|
||||
*
|
||||
* PHP Version 7
|
||||
*
|
||||
* @file config.php
|
||||
* @category Authentication
|
||||
* @package PhpCAS
|
||||
* @author Joachim Fritschi <jfritschi@freenet.de>
|
||||
* @author Adam Franco <afranco@middlebury.edu>
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @link https://wiki.jasig.org/display/CASC/phpCAS
|
||||
*/
|
||||
|
||||
$phpcas_path = '../../source/';
|
||||
|
||||
///////////////////////////////////////
|
||||
// Basic Config of the phpCAS client //
|
||||
///////////////////////////////////////
|
||||
|
||||
// Full Hostname of your CAS Server
|
||||
$cas_host = 'cas.example.com';
|
||||
|
||||
// Context of the CAS Server
|
||||
$cas_context = '/cas';
|
||||
|
||||
// Port of your CAS server. Normally for a https server it's 443
|
||||
$cas_port = 443;
|
||||
|
||||
// Path to the ca chain that issued the cas server certificate
|
||||
$cas_server_ca_cert_path = '/path/to/cachain.pem';
|
||||
|
||||
//////////////////////////////////////////
|
||||
// Advanced Config for special purposes //
|
||||
//////////////////////////////////////////
|
||||
|
||||
// The "real" hosts of clustered cas server that send SAML logout messages
|
||||
// Assumes the cas server is load balanced across multiple hosts
|
||||
$cas_real_hosts = array('cas-real-1.example.com', 'cas-real-2.example.com');
|
||||
|
||||
// Client config for the required domain name, should be protocol, hostname and port
|
||||
$client_service_name = 'http://127.0.0.1';
|
||||
|
||||
// Client config for cookie hardening
|
||||
$client_domain = '127.0.0.1';
|
||||
$client_path = 'phpcas';
|
||||
$client_secure = true;
|
||||
$client_httpOnly = true;
|
||||
$client_lifetime = 0;
|
||||
|
||||
// Database config for PGT Storage
|
||||
$db = 'pgsql:host=localhost;dbname=phpcas';
|
||||
//$db = 'mysql:host=localhost;dbname=phpcas';
|
||||
$db_user = 'phpcasuser';
|
||||
$db_password = 'mysupersecretpass';
|
||||
$db_table = 'phpcastabel';
|
||||
$driver_options = '';
|
||||
|
||||
///////////////////////////////////////////
|
||||
// End Configuration -- Don't edit below //
|
||||
///////////////////////////////////////////
|
||||
|
||||
// Generating the URLS for the local cas example services for proxy testing
|
||||
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
|
||||
$curbase = 'https://' . $_SERVER['SERVER_NAME'];
|
||||
} else {
|
||||
$curbase = 'http://' . $_SERVER['SERVER_NAME'];
|
||||
}
|
||||
if ($_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443) {
|
||||
$curbase .= ':' . $_SERVER['SERVER_PORT'];
|
||||
}
|
||||
|
||||
$curdir = dirname($_SERVER['REQUEST_URI']) . "/";
|
||||
|
||||
// CAS client nodes for rebroadcasting pgtIou/pgtId and logoutRequest
|
||||
$rebroadcast_node_1 = 'http://cas-client-1.example.com';
|
||||
$rebroadcast_node_2 = 'http://cas-client-2.example.com';
|
||||
|
||||
// access to a single service
|
||||
$serviceUrl = $curbase . $curdir . 'example_service.php';
|
||||
// access to a second service
|
||||
$serviceUrl2 = $curbase . $curdir . 'example_service_that_proxies.php';
|
||||
|
||||
$pgtBase = preg_quote(preg_replace('/^http:/', 'https:', $curbase . $curdir), '/');
|
||||
$pgtUrlRegexp = '/^' . $pgtBase . '.*$/';
|
||||
|
||||
$cas_url = 'https://' . $cas_host;
|
||||
if ($cas_port != '443') {
|
||||
$cas_url = $cas_url . ':' . $cas_port;
|
||||
}
|
||||
$cas_url = $cas_url . $cas_context;
|
||||
|
||||
// Set the session-name to be unique to the current script so that the client script
|
||||
// doesn't share its session with a proxied script.
|
||||
// This is just useful when running the example code, but not normally.
|
||||
session_name(
|
||||
'session_for-'
|
||||
. preg_replace('/[^a-z0-9-]/i', '_', basename($_SERVER['SCRIPT_NAME']))
|
||||
);
|
||||
// Set an UTF-8 encoding header for internation characters (User attributes)
|
||||
header('Content-Type: text/html; charset=utf-8');
|
||||
?>
|
||||
53
include/phpCAS/docs/examples/create_pgt_storage_db_table.php
Normal file
53
include/phpCAS/docs/examples/create_pgt_storage_db_table.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Script that generates a default table for PGT/PGTiou storage. This script
|
||||
* assumes a database with proper permissions exists and we are habe
|
||||
* permissions to create a table.
|
||||
* All database settings have to be set in the config.php file. Or the
|
||||
* CAS_PGTStorage_Db() options:
|
||||
* $db, $db_user, $db_password, $db_table, $driver_options
|
||||
* have to filled out directly. Option examples can be found in the
|
||||
* config.example.php
|
||||
*
|
||||
* PHP Version 7
|
||||
*
|
||||
* @file create_pgt_storage_table.php
|
||||
* @category Authentication
|
||||
* @package PhpCAS
|
||||
* @author Joachim Fritschi <jfritschi@freenet.de>
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @link https://wiki.jasig.org/display/CASC/phpCAS
|
||||
*/
|
||||
|
||||
// Load the settings from the central config file
|
||||
require_once 'config.php';
|
||||
// Load the CAS lib
|
||||
require_once $phpcas_path . '/CAS.php';
|
||||
|
||||
|
||||
// Dummy client because we need a 'client' object
|
||||
$client = new CAS_Client(
|
||||
CAS_VERSION_2_0, true, $cas_host, $cas_port, $cas_context, $client_service_name, false
|
||||
);
|
||||
|
||||
// Set the torage object
|
||||
$cas_obj = new CAS_PGTStorage_Db(
|
||||
$client, $db, $db_user, $db_password, $db_table, $driver_options
|
||||
);
|
||||
$cas_obj->init();
|
||||
$cas_obj->createTable();
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<title>phpCAS PGT db storage table creation</title>
|
||||
<link rel="stylesheet" type='text/css' href='example.css'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class="success">
|
||||
<?php
|
||||
echo 'Table <b>' . $db_table . '</b> successfully created in database <b>' . $db . '</b>';
|
||||
?>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
10
include/phpCAS/docs/examples/example.css
Normal file
10
include/phpCAS/docs/examples/example.css
Normal file
@@ -0,0 +1,10 @@
|
||||
.error {
|
||||
border: 1px solid #aa0000;
|
||||
color: #aa0000;
|
||||
padding: 5px;
|
||||
}
|
||||
.success {
|
||||
border: 1px solid #00aa00;
|
||||
color: #00aa00;
|
||||
padding: 5px;
|
||||
}
|
||||
82
include/phpCAS/docs/examples/example_advanced_saml11.php
Normal file
82
include/phpCAS/docs/examples/example_advanced_saml11.php
Normal file
@@ -0,0 +1,82 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Advanced example for SAML with attributes and single logout
|
||||
*
|
||||
* PHP Version 7
|
||||
*
|
||||
* @file example_advanced_saml11.php
|
||||
* @category Authentication
|
||||
* @package PhpCAS
|
||||
* @author Joachim Fritschi <jfritschi@freenet.de>
|
||||
* @author Adam Franco <afranco@middlebury.edu>
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @link https://wiki.jasig.org/display/CASC/phpCAS
|
||||
*/
|
||||
|
||||
// Load the settings from the central config file
|
||||
require_once 'config.php';
|
||||
// Load the CAS lib
|
||||
require_once $phpcas_path . '/CAS.php';
|
||||
|
||||
// Enable debugging
|
||||
phpCAS::setLogger();
|
||||
// Enable verbose error messages. Disable in production!
|
||||
phpCAS::setVerbose(true);
|
||||
|
||||
// Initialize phpCAS
|
||||
phpCAS::client(SAML_VERSION_1_1, $cas_host, $cas_port, $cas_context, $client_service_name);
|
||||
|
||||
// For production use set the CA certificate that is the issuer of the cert
|
||||
// on the CAS server and uncomment the line below
|
||||
phpCAS::setCasServerCACert($cas_server_ca_cert_path);
|
||||
|
||||
// For quick testing you can disable SSL validation of the CAS server.
|
||||
// THIS SETTING IS NOT RECOMMENDED FOR PRODUCTION.
|
||||
// VALIDATING THE CAS SERVER IS CRUCIAL TO THE SECURITY OF THE CAS PROTOCOL!
|
||||
// phpCAS::setNoCasServerValidation();
|
||||
|
||||
// Handle SAML logout requests that emanate from the CAS host exclusively.
|
||||
// Failure to restrict SAML logout requests to authorized hosts could
|
||||
// allow denial of service attacks where at the least the server is
|
||||
// tied up parsing bogus XML messages.
|
||||
phpCAS::handleLogoutRequests(true, $cas_real_hosts);
|
||||
|
||||
// Force CAS authentication on any page that includes this file
|
||||
phpCAS::forceAuthentication();
|
||||
|
||||
// Some small code triggered by the logout button
|
||||
if (isset($_REQUEST['logout'])) {
|
||||
phpCAS::logout();
|
||||
}
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<title>Advanced SAML 1.1 example</title>
|
||||
</head>
|
||||
<body>
|
||||
<h2>Advanced SAML 1.1 example</h2>
|
||||
<?php require 'script_info.php' ?>
|
||||
|
||||
Authentication succeeded for user
|
||||
<strong><?php echo phpCAS::getUser(); ?></strong>.
|
||||
|
||||
<h3>User Attributes</h3>
|
||||
<ul>
|
||||
<?php
|
||||
foreach (phpCAS::getAttributes() as $key => $value) {
|
||||
if (is_array($value)) {
|
||||
echo '<li>', $key, ':<ol>';
|
||||
foreach ($value as $item) {
|
||||
echo '<li><strong>', $item, '</strong></li>';
|
||||
}
|
||||
echo '</ol></li>';
|
||||
} else {
|
||||
echo '<li>', $key, ': <strong>', $value, '</strong></li>' . PHP_EOL;
|
||||
}
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
<p><a href="?logout=">Logout</a></p>
|
||||
</body>
|
||||
</html>
|
||||
72
include/phpCAS/docs/examples/example_custom_urls.php
Normal file
72
include/phpCAS/docs/examples/example_custom_urls.php
Normal file
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Example for overriding validation urls
|
||||
*
|
||||
* PHP Version 7
|
||||
*
|
||||
* @file example_custom_urls.php
|
||||
* @category Authentication
|
||||
* @package PhpCAS
|
||||
* @author Joachim Fritschi <jfritschi@freenet.de>
|
||||
* @author Adam Franco <afranco@middlebury.edu>
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @link https://wiki.jasig.org/display/CASC/phpCAS
|
||||
*/
|
||||
|
||||
// Load the settings from the central config file
|
||||
require_once 'config.php';
|
||||
// Load the CAS lib
|
||||
require_once $phpcas_path . '/CAS.php';
|
||||
|
||||
// Enable debugging
|
||||
phpCAS::setLogger();
|
||||
// Enable verbose error messages. Disable in production!
|
||||
phpCAS::setVerbose(true);
|
||||
|
||||
// Initialize phpCAS
|
||||
phpCAS::client(CAS_VERSION_2_0, $cas_host, $cas_port, $cas_context, $client_service_name);
|
||||
|
||||
// For production use set the CA certificate that is the issuer of the cert
|
||||
// on the CAS server and uncomment the line below
|
||||
// phpCAS::setCasServerCACert($cas_server_ca_cert_path);
|
||||
|
||||
// For quick testing you can disable SSL validation of the CAS server.
|
||||
// THIS SETTING IS NOT RECOMMENDED FOR PRODUCTION.
|
||||
// VALIDATING THE CAS SERVER IS CRUCIAL TO THE SECURITY OF THE CAS PROTOCOL!
|
||||
phpCAS::setNoCasServerValidation();
|
||||
|
||||
// Override the proxy validation url for any (ST and PT) any CAS 1.0, 2.0 and 3.0 validation
|
||||
// Example of the URL for the version of CAS 2.0 validation
|
||||
phpCAS::setServerProxyValidateURL('https://cas.example.org:1443/proxyValidate');
|
||||
// Override the validation url for any CAS 1.0, 2.0 and 3.0 validation
|
||||
// Example of the URL for the version of CAS 2.0 validation
|
||||
//phpCAS::setServerServiceValidateURL('https://cas.example.org:1443/serviceValidate');
|
||||
//Override the validation url for any SAML11 validation
|
||||
//phpCAS::setServerSamlValidateURL('https://cas.example.org:1443/samlValidate');
|
||||
|
||||
// force CAS authentication
|
||||
phpCAS::forceAuthentication();
|
||||
|
||||
// at this step, the user has been authenticated by the CAS server
|
||||
// and the user's login name can be read with phpCAS::getUser().
|
||||
|
||||
// logout if desired
|
||||
if (isset($_REQUEST['logout'])) {
|
||||
phpCAS::logout();
|
||||
}
|
||||
|
||||
// for this test, simply print that the authentication was successfull
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<title>phpCAS simple client</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Successfull Authentication!</h1>
|
||||
<?php require 'script_info.php' ?>
|
||||
<p>the user's login is <b><?php echo phpCAS::getUser(); ?></b>.</p>
|
||||
<p>phpCAS version is <b><?php echo phpCAS::getVersion(); ?></b>.</p>
|
||||
<p><a href="?logout=">Logout</a></p>
|
||||
</body>
|
||||
</html>
|
||||
71
include/phpCAS/docs/examples/example_gateway.php
Normal file
71
include/phpCAS/docs/examples/example_gateway.php
Normal file
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Example that uses the CAS gateway feature
|
||||
*
|
||||
* PHP Version 7
|
||||
*
|
||||
* @file example_gateway.php
|
||||
* @category Authentication
|
||||
* @package PhpCAS
|
||||
* @author Joachim Fritschi <jfritschi@freenet.de>
|
||||
* @author Adam Franco <afranco@middlebury.edu>
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @link https://wiki.jasig.org/display/CASC/phpCAS
|
||||
*/
|
||||
|
||||
// Load the settings from the central config file
|
||||
require_once 'config.php';
|
||||
// Load the CAS lib
|
||||
require_once $phpcas_path . '/CAS.php';
|
||||
|
||||
// Enable debugging
|
||||
phpCAS::setLogger();
|
||||
// Enable verbose error messages. Disable in production!
|
||||
phpCAS::setVerbose(true);
|
||||
|
||||
// Initialize phpCAS
|
||||
phpCAS::client(CAS_VERSION_2_0, $cas_host, $cas_port, $cas_context, $client_service_name);
|
||||
|
||||
// For production use set the CA certificate that is the issuer of the cert
|
||||
// on the CAS server and uncomment the line below
|
||||
// phpCAS::setCasServerCACert($cas_server_ca_cert_path);
|
||||
|
||||
// For quick testing you can disable SSL validation of the CAS server.
|
||||
// THIS SETTING IS NOT RECOMMENDED FOR PRODUCTION.
|
||||
// VALIDATING THE CAS SERVER IS CRUCIAL TO THE SECURITY OF THE CAS PROTOCOL!
|
||||
phpCAS::setNoCasServerValidation();
|
||||
|
||||
if (isset($_REQUEST['logout'])) {
|
||||
phpCAS::logout();
|
||||
}
|
||||
if (isset($_REQUEST['login'])) {
|
||||
phpCAS::forceAuthentication();
|
||||
}
|
||||
|
||||
// check CAS authentication
|
||||
$auth = phpCAS::checkAuthentication();
|
||||
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<title>phpCAS simple client</title>
|
||||
</head>
|
||||
<body>
|
||||
<?php
|
||||
if ($auth) {
|
||||
// for this test, simply print that the authentication was successfull
|
||||
?>
|
||||
<h1>Successfull Authentication!</h1>
|
||||
<?php include 'script_info.php' ?>
|
||||
<p>the user's login is <b><?php echo phpCAS::getUser(); ?></b>.</p>
|
||||
<p><a href="?logout=">Logout</a></p><?php
|
||||
} else {
|
||||
?>
|
||||
<h1>Guest mode</h1>
|
||||
<p><a href="?login=">Login</a></p><?php
|
||||
}
|
||||
?>
|
||||
<p>phpCAS version is <b><?php echo phpCAS::getVersion(); ?></b>.</p>
|
||||
</body>
|
||||
</html>
|
||||
85
include/phpCAS/docs/examples/example_hardening.php
Normal file
85
include/phpCAS/docs/examples/example_hardening.php
Normal file
@@ -0,0 +1,85 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Advanced example for hardening the phpcas client
|
||||
*
|
||||
* PHP Version 7
|
||||
*
|
||||
* @file example_hardening.php
|
||||
* @category Authentication
|
||||
* @package PhpCAS
|
||||
* @author Joachim Fritschi <jfritschi@freenet.de>
|
||||
* @author Adam Franco <afranco@middlebury.edu>
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @link https://wiki.jasig.org/display/CASC/phpCAS
|
||||
*/
|
||||
|
||||
// Load the settings from the central config file
|
||||
require_once 'config.php';
|
||||
// Load the CAS lib
|
||||
require_once $phpcas_path . '/CAS.php';
|
||||
|
||||
// Enable debugging
|
||||
phpCAS::setLogger();
|
||||
// Enable verbose error messages. Disable in production!
|
||||
phpCAS::setVerbose(false);
|
||||
|
||||
// Harden session cookie to prevent some attacks on the cookie (e.g. XSS)
|
||||
session_set_cookie_params($client_lifetime, $client_path, $client_domain, $client_secure, $client_httpOnly);
|
||||
|
||||
// Initialize phpCAS
|
||||
phpCAS::client(SAML_VERSION_1_1, $cas_host, $cas_port, $cas_context, $client_service_name);
|
||||
|
||||
// For production use set the CA certificate that is the issuer of the cert
|
||||
// on the CAS server and uncomment the line below
|
||||
phpCAS::setCasServerCACert($cas_server_ca_cert_path);
|
||||
|
||||
// For quick testing you can disable SSL validation of the CAS server.
|
||||
// THIS SETTING IS NOT RECOMMENDED FOR PRODUCTION.
|
||||
// VALIDATING THE CAS SERVER IS CRUCIAL TO THE SECURITY OF THE CAS PROTOCOL!
|
||||
// phpCAS::setNoCasServerValidation();
|
||||
|
||||
// Handle SAML logout requests that emanate from the CAS host exclusively.
|
||||
// Failure to restrict SAML logout requests to authorized hosts could
|
||||
// allow denial of service attacks where at the least the server is
|
||||
// tied up parsing bogus XML messages.
|
||||
phpCAS::handleLogoutRequests(true, $cas_real_hosts);
|
||||
|
||||
// Force CAS authentication on any page that includes this file
|
||||
phpCAS::forceAuthentication();
|
||||
|
||||
// Some small code triggered by the logout button
|
||||
if (isset($_REQUEST['logout'])) {
|
||||
phpCAS::logout();
|
||||
}
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<title>Advanced SAML 1.1 example</title>
|
||||
</head>
|
||||
<body>
|
||||
<h2>Advanced SAML 1.1 example</h2>
|
||||
<?php require 'script_info.php' ?>
|
||||
|
||||
Authentication succeeded for user
|
||||
<strong><?php echo phpCAS::getUser(); ?></strong>.
|
||||
|
||||
<h3>User Attributes</h3>
|
||||
<ul>
|
||||
<?php
|
||||
foreach (phpCAS::getAttributes() as $key => $value) {
|
||||
if (is_array($value)) {
|
||||
echo '<li>', $key, ':<ol>';
|
||||
foreach ($value as $item) {
|
||||
echo '<li><strong>', $item, '</strong></li>';
|
||||
}
|
||||
echo '</ol></li>';
|
||||
} else {
|
||||
echo '<li>', $key, ': <strong>', $value, '</strong></li>' . PHP_EOL;
|
||||
}
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
<p><a href="?logout=">Logout</a></p>
|
||||
</body>
|
||||
</html>
|
||||
76
include/phpCAS/docs/examples/example_html.php
Normal file
76
include/phpCAS/docs/examples/example_html.php
Normal file
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Example that changes html of phpcas messages
|
||||
*
|
||||
* PHP Version 7
|
||||
*
|
||||
* @file example_html.php
|
||||
* @category Authentication
|
||||
* @package PhpCAS
|
||||
* @author Joachim Fritschi <jfritschi@freenet.de>
|
||||
* @author Adam Franco <afranco@middlebury.edu>
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @link https://wiki.jasig.org/display/CASC/phpCAS
|
||||
*/
|
||||
|
||||
// Load the settings from the central config file
|
||||
require_once 'config.php';
|
||||
// Load the CAS lib
|
||||
require_once $phpcas_path . '/CAS.php';
|
||||
|
||||
// Enable debugging
|
||||
phpCAS::setLogger();
|
||||
// Enable verbose error messages. Disable in production!
|
||||
phpCAS::setVerbose(true);
|
||||
|
||||
// Initialize phpCAS
|
||||
phpCAS::client(CAS_VERSION_2_0, $cas_host, $cas_port, $cas_context, $client_service_name);
|
||||
|
||||
// For production use set the CA certificate that is the issuer of the cert
|
||||
// on the CAS server and uncomment the line below
|
||||
// phpCAS::setCasServerCACert($cas_server_ca_cert_path);
|
||||
|
||||
// For quick testing you can disable SSL validation of the CAS server.
|
||||
// THIS SETTING IS NOT RECOMMENDED FOR PRODUCTION.
|
||||
// VALIDATING THE CAS SERVER IS CRUCIAL TO THE SECURITY OF THE CAS PROTOCOL!
|
||||
phpCAS::setNoCasServerValidation();
|
||||
|
||||
// customize HTML output
|
||||
phpCAS::setHTMLHeader(
|
||||
'<html>
|
||||
<head>
|
||||
<title>__TITLE__</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>__TITLE__</h1>'
|
||||
);
|
||||
phpCAS::setHTMLFooter(
|
||||
'<hr>
|
||||
<address>
|
||||
phpCAS __PHPCAS_VERSION__,
|
||||
CAS __CAS_VERSION__ (__SERVER_BASE_URL__)
|
||||
</address>
|
||||
</body>
|
||||
</html>'
|
||||
);
|
||||
|
||||
// force CAS authentication
|
||||
phpCAS::forceAuthentication();
|
||||
|
||||
// at this step, the user has been authenticated by the CAS server
|
||||
// and the user's login name can be read with phpCAS::getUser().
|
||||
|
||||
// for this test, simply print that the authentication was successfull
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<title>phpCAS simple client with HTML output customization</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Successfull Authentication!</h1>
|
||||
<?php require 'script_info.php' ?>
|
||||
<p>the user's login is <b><?php echo phpCAS::getUser(); ?></b>.</p>
|
||||
<p>phpCAS version is <b><?php echo phpCAS::getVersion(); ?></b>.</p>
|
||||
</body>
|
||||
</html>
|
||||
63
include/phpCAS/docs/examples/example_lang.php
Normal file
63
include/phpCAS/docs/examples/example_lang.php
Normal file
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Example that changes language of phpcas pages
|
||||
*
|
||||
* PHP Version 7
|
||||
*
|
||||
* @file example_lang.php
|
||||
* @category Authentication
|
||||
* @package PhpCAS
|
||||
* @author Joachim Fritschi <jfritschi@freenet.de>
|
||||
* @author Adam Franco <afranco@middlebury.edu>
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @link https://wiki.jasig.org/display/CASC/phpCAS
|
||||
*/
|
||||
|
||||
// Load the settings from the central config file
|
||||
require_once 'config.php';
|
||||
// Load the CAS lib
|
||||
require_once $phpcas_path . '/CAS.php';
|
||||
|
||||
// Enable debugging
|
||||
phpCAS::setLogger();
|
||||
// Enable verbose error messages. Disable in production!
|
||||
phpCAS::setVerbose(true);
|
||||
|
||||
// Initialize phpCAS
|
||||
phpCAS::client(CAS_VERSION_2_0, $cas_host, $cas_port, $cas_context, $client_service_name);
|
||||
|
||||
// For production use set the CA certificate that is the issuer of the cert
|
||||
// on the CAS server and uncomment the line below
|
||||
// phpCAS::setCasServerCACert($cas_server_ca_cert_path);
|
||||
|
||||
// For quick testing you can disable SSL validation of the CAS server.
|
||||
// THIS SETTING IS NOT RECOMMENDED FOR PRODUCTION.
|
||||
// VALIDATING THE CAS SERVER IS CRUCIAL TO THE SECURITY OF THE CAS PROTOCOL!
|
||||
phpCAS::setNoCasServerValidation();
|
||||
|
||||
// set the language to french
|
||||
phpCAS::setLang(PHPCAS_LANG_FRENCH);
|
||||
|
||||
// force CAS authentication
|
||||
phpCAS::forceAuthentication();
|
||||
|
||||
// at this step, the user has been authenticated by the CAS server
|
||||
// and the user's login name can be read with phpCAS::getUser().
|
||||
|
||||
// moreover, a PGT was retrieved from the CAS server that will
|
||||
// permit to gain accesses to new services.
|
||||
|
||||
// for this test, simply print that the authentication was successfull
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<title>Exemple d'internationalisation de phpCAS</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Authentification réussie !</h1>
|
||||
<?php require 'script_info.php' ?>
|
||||
<p>L'utilisateur connecté est <b><?php echo phpCAS::getUser(); ?></b>.</p>
|
||||
<p>La version de phpCAS est <b><?php echo phpCAS::getVersion(); ?></b>.</p>
|
||||
</body>
|
||||
</html>
|
||||
64
include/phpCAS/docs/examples/example_logout.php
Normal file
64
include/phpCAS/docs/examples/example_logout.php
Normal file
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Example for handling logout requests
|
||||
*
|
||||
* PHP Version 7
|
||||
*
|
||||
* @file example_logout.php
|
||||
* @category Authentication
|
||||
* @package PhpCAS
|
||||
* @author Joachim Fritschi <jfritschi@freenet.de>
|
||||
* @author Adam Franco <afranco@middlebury.edu>
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @link https://wiki.jasig.org/display/CASC/phpCAS
|
||||
*/
|
||||
|
||||
// Load the settings from the central config file
|
||||
require_once 'config.php';
|
||||
// Load the CAS lib
|
||||
require_once $phpcas_path . '/CAS.php';
|
||||
|
||||
// Enable debugging
|
||||
phpCAS::setLogger();
|
||||
// Enable verbose error messages. Disable in production!
|
||||
phpCAS::setVerbose(true);
|
||||
|
||||
// Initialize phpCAS
|
||||
phpCAS::client(CAS_VERSION_2_0, $cas_host, $cas_port, $cas_context, $client_service_name);
|
||||
|
||||
// For production use set the CA certificate that is the issuer of the cert
|
||||
// on the CAS server and uncomment the line below
|
||||
// phpCAS::setCasServerCACert($cas_server_ca_cert_path);
|
||||
|
||||
// For quick testing you can disable SSL validation of the CAS server.
|
||||
// THIS SETTING IS NOT RECOMMENDED FOR PRODUCTION.
|
||||
// VALIDATING THE CAS SERVER IS CRUCIAL TO THE SECURITY OF THE CAS PROTOCOL!
|
||||
phpCAS::setNoCasServerValidation();
|
||||
|
||||
// handle incoming logout requests
|
||||
phpCAS::handleLogoutRequests();
|
||||
|
||||
// Or as an advanced featue handle SAML logout requests that emanate from the
|
||||
// CAS host exclusively.
|
||||
// Failure to restrict SAML logout requests to authorized hosts could
|
||||
// allow denial of service attacks where at the least the server is
|
||||
// tied up parsing bogus XML messages.
|
||||
// phpCAS::handleLogoutRequests(true, $cas_real_hosts);
|
||||
|
||||
// force CAS authentication
|
||||
phpCAS::forceAuthentication();
|
||||
|
||||
// for this test, simply print that the authentication was successfull
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<title>phpCAS simple client</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Successfull Authentication!</h1>
|
||||
<?php require 'script_info.php' ?>
|
||||
<p>the user's login is <b><?php echo phpCAS::getUser(); ?></b>.</p>
|
||||
<p>phpCAS version is <b><?php echo phpCAS::getVersion(); ?></b>.</p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Example for diabling SSL CN valdiation
|
||||
*
|
||||
* PHP Version 7
|
||||
*
|
||||
* @file example_simple.php
|
||||
* @category Authentication
|
||||
* @package PhpCAS
|
||||
* @author Joachim Fritschi <jfritschi@freenet.de>
|
||||
* @author Adam Franco <afranco@middlebury.edu>
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @link https://wiki.jasig.org/display/CASC/phpCAS
|
||||
*/
|
||||
|
||||
// Load the settings from the central config file
|
||||
require_once 'config.php';
|
||||
// Load the CAS lib
|
||||
require_once $phpcas_path . '/CAS.php';
|
||||
|
||||
// Enable debugging
|
||||
phpCAS::setLogger();
|
||||
// Enable verbose error messages. Disable in production!
|
||||
phpCAS::setVerbose(true);
|
||||
|
||||
// Initialize phpCAS
|
||||
phpCAS::client(CAS_VERSION_2_0, $cas_host, $cas_port, $cas_context, $client_service_name);
|
||||
|
||||
// For production use set the CA certificate that is the issuer of the cert
|
||||
// on the CAS server and uncomment the line below
|
||||
// phpCAS::setCasServerCACert($cas_server_ca_cert_path);
|
||||
|
||||
// For quick testing you can disable SSL validation of the CAS server.
|
||||
// THIS SETTING IS NOT RECOMMENDED FOR PRODUCTION.
|
||||
// VALIDATING THE CAS SERVER IS CRUCIAL TO THE SECURITY OF THE CAS PROTOCOL!
|
||||
// phpCAS::setNoCasServerValidation();
|
||||
// You can also disable the validation of the certficate CN. This means the
|
||||
// certificate must be valid but the CN of the certificate must not match the
|
||||
// IP or hostname you are using to access the server
|
||||
phpCAS::setCasServerCACert($cas_server_ca_cert_path, false);
|
||||
|
||||
|
||||
// force CAS authentication
|
||||
phpCAS::forceAuthentication();
|
||||
|
||||
// at this step, the user has been authenticated by the CAS server
|
||||
// and the user's login name can be read with phpCAS::getUser().
|
||||
|
||||
// logout if desired
|
||||
if (isset($_REQUEST['logout'])) {
|
||||
phpCAS::logout();
|
||||
}
|
||||
|
||||
// for this test, simply print that the authentication was successfull
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<title>phpCAS simple client</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Successfull Authentication!</h1>
|
||||
<?php require 'script_info.php' ?>
|
||||
<p>the user's login is <b><?php echo phpCAS::getUser(); ?></b>.</p>
|
||||
<p>phpCAS version is <b><?php echo phpCAS::getVersion(); ?></b>.</p>
|
||||
<p><a href="?logout=">Logout</a></p>
|
||||
</body>
|
||||
</html>
|
||||
74
include/phpCAS/docs/examples/example_pgt_storage_db.php
Normal file
74
include/phpCAS/docs/examples/example_pgt_storage_db.php
Normal file
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Example that changes the storage of the pgt tickets
|
||||
*
|
||||
* PHP Version 7
|
||||
*
|
||||
* @file example_pgt_storage_db.php
|
||||
* @category Authentication
|
||||
* @package PhpCAS
|
||||
* @author Joachim Fritschi <jfritschi@freenet.de>
|
||||
* @author Adam Franco <afranco@middlebury.edu>
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @link https://wiki.jasig.org/display/CASC/phpCAS
|
||||
*/
|
||||
|
||||
// Load the settings from the central config file
|
||||
require_once 'config.php';
|
||||
// Load the CAS lib
|
||||
require_once $phpcas_path . '/CAS.php';
|
||||
|
||||
// Enable debugging
|
||||
phpCAS::setLogger();
|
||||
// Enable verbose error messages. Disable in production!
|
||||
phpCAS::setVerbose(true);
|
||||
|
||||
// Initialize phpCAS
|
||||
phpCAS::proxy(CAS_VERSION_2_0, $cas_host, $cas_port, $cas_context, $client_service_name);
|
||||
|
||||
// For production use set the CA certificate that is the issuer of the cert
|
||||
// on the CAS server and uncomment the line below
|
||||
// phpCAS::setCasServerCACert($cas_server_ca_cert_path);
|
||||
|
||||
// For quick testing you can disable SSL validation of the CAS server.
|
||||
// THIS SETTING IS NOT RECOMMENDED FOR PRODUCTION.
|
||||
// VALIDATING THE CAS SERVER IS CRUCIAL TO THE SECURITY OF THE CAS PROTOCOL!
|
||||
phpCAS::setNoCasServerValidation();
|
||||
|
||||
// set PGT storage to file in plain format in the same directory as session files
|
||||
phpCAS::setPGTStorageDB($db, $db_user, $db_password, $db_table);
|
||||
|
||||
// force CAS authentication
|
||||
phpCAS::forceAuthentication();
|
||||
|
||||
// at this step, the user has been authenticated by the CAS server
|
||||
// and the user's login name can be read with phpCAS::getUser().
|
||||
|
||||
// moreover, a PGT was retrieved from the CAS server that will
|
||||
// permit to gain accesses to new services.
|
||||
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<title>phpCAS proxy example with PGT storage to a database</title>
|
||||
<link rel="stylesheet" type='text/css' href='example.css'/>
|
||||
</head>
|
||||
<body>
|
||||
<h1>phpCAS proxy example with PGT storage to file</h1>
|
||||
<?php require 'script_info.php' ?>
|
||||
<p>the user's login is <b><?php echo phpCAS::getUser(); ?></b>.</p>
|
||||
<h2>Response from service <?php echo $serviceUrl; ?></h2>
|
||||
<?php
|
||||
flush();
|
||||
// call a service and change the color depending on the result
|
||||
if (phpCAS::serviceWeb($serviceUrl, $err_code, $output)) {
|
||||
echo '<div class="success">';
|
||||
} else {
|
||||
echo '<div class="error">';
|
||||
}
|
||||
echo $output;
|
||||
echo '</div>';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
74
include/phpCAS/docs/examples/example_pgt_storage_file.php
Normal file
74
include/phpCAS/docs/examples/example_pgt_storage_file.php
Normal file
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Example that changes the storage of the pgt tickets to file
|
||||
*
|
||||
* PHP Version 7
|
||||
*
|
||||
* @file example_pgt_storage_db.php
|
||||
* @category Authentication
|
||||
* @package PhpCAS
|
||||
* @author Joachim Fritschi <jfritschi@freenet.de>
|
||||
* @author Adam Franco <afranco@middlebury.edu>
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @link https://wiki.jasig.org/display/CASC/phpCAS
|
||||
*/
|
||||
|
||||
// Load the settings from the central config file
|
||||
require_once 'config.php';
|
||||
// Load the CAS lib
|
||||
require_once $phpcas_path . '/CAS.php';
|
||||
|
||||
// Enable debugging
|
||||
phpCAS::setLogger();
|
||||
// Enable verbose error messages. Disable in production!
|
||||
phpCAS::setVerbose(true);
|
||||
|
||||
// Initialize phpCAS
|
||||
phpCAS::proxy(CAS_VERSION_2_0, $cas_host, $cas_port, $cas_context, $client_service_name);
|
||||
|
||||
// For production use set the CA certificate that is the issuer of the cert
|
||||
// on the CAS server and uncomment the line below
|
||||
// phpCAS::setCasServerCACert($cas_server_ca_cert_path);
|
||||
|
||||
// For quick testing you can disable SSL validation of the CAS server.
|
||||
// THIS SETTING IS NOT RECOMMENDED FOR PRODUCTION.
|
||||
// VALIDATING THE CAS SERVER IS CRUCIAL TO THE SECURITY OF THE CAS PROTOCOL!
|
||||
phpCAS::setNoCasServerValidation();
|
||||
|
||||
// set PGT storage to file in plain format in the same directory as session files
|
||||
phpCAS::setPGTStorageFile(session_save_path());
|
||||
|
||||
// force CAS authentication
|
||||
phpCAS::forceAuthentication();
|
||||
|
||||
// at this step, the user has been authenticated by the CAS server
|
||||
// and the user's login name can be read with phpCAS::getUser().
|
||||
|
||||
// moreover, a PGT was retrieved from the CAS server that will
|
||||
// permit to gain accesses to new services.
|
||||
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<title>phpCAS proxy example with PGT storage to file</title>
|
||||
<link rel="stylesheet" type='text/css' href='example.css'/>
|
||||
</head>
|
||||
<body>
|
||||
<h1>phpCAS proxy example with PGT storage to file</h1>
|
||||
<?php require 'script_info.php' ?>
|
||||
<p>the user's login is <b><?php echo phpCAS::getUser(); ?></b>.</p>
|
||||
<h2>Response from service <?php echo $serviceUrl; ?></h2>
|
||||
<?php
|
||||
flush();
|
||||
// call a service and change the color depending on the result
|
||||
if ( phpCAS::serviceWeb($serviceUrl, $err_code, $output) ) {
|
||||
echo '<div class="success">';
|
||||
} else {
|
||||
echo '<div class="error">';
|
||||
}
|
||||
echo $output;
|
||||
echo '</div>';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
98
include/phpCAS/docs/examples/example_proxy_GET.php
Normal file
98
include/phpCAS/docs/examples/example_proxy_GET.php
Normal file
@@ -0,0 +1,98 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Example for a proxy that makes a GET request.
|
||||
*
|
||||
* PHP Version 7
|
||||
*
|
||||
* @file example_proxy_GET.php
|
||||
* @category Authentication
|
||||
* @package PhpCAS
|
||||
* @author Joachim Fritschi <jfritschi@freenet.de>
|
||||
* @author Adam Franco <afranco@middlebury.edu>
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @link https://wiki.jasig.org/display/CASC/phpCAS
|
||||
*/
|
||||
|
||||
// Load the settings from the central config file
|
||||
require_once 'config.php';
|
||||
// Load the CAS lib
|
||||
require_once $phpcas_path . '/CAS.php';
|
||||
|
||||
// Enable debugging
|
||||
phpCAS::setLogger();
|
||||
// Enable verbose error messages. Disable in production!
|
||||
phpCAS::setVerbose(true);
|
||||
|
||||
// Initialize phpCAS
|
||||
phpCAS::proxy(CAS_VERSION_2_0, $cas_host, $cas_port, $cas_context, $client_service_name);
|
||||
|
||||
// For production use set the CA certificate that is the issuer of the cert
|
||||
// on the CAS server and uncomment the line below
|
||||
// phpCAS::setCasServerCACert($cas_server_ca_cert_path);
|
||||
|
||||
// For quick testing you can disable SSL validation of the CAS server.
|
||||
// THIS SETTING IS NOT RECOMMENDED FOR PRODUCTION.
|
||||
// VALIDATING THE CAS SERVER IS CRUCIAL TO THE SECURITY OF THE CAS PROTOCOL!
|
||||
phpCAS::setNoCasServerValidation();
|
||||
|
||||
// force CAS authentication
|
||||
phpCAS::forceAuthentication();
|
||||
|
||||
// at this step, the user has been authenticated by the CAS server
|
||||
// and the user's login name can be read with phpCAS::getUser().
|
||||
|
||||
// moreover, a PGT was retrieved from the CAS server that will
|
||||
// permit to gain accesses to new services.
|
||||
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<title>phpCAS proxy example #2</title>
|
||||
<link rel="stylesheet" type='text/css' href='example.css'/>
|
||||
</head>
|
||||
<body>
|
||||
<h1>phpCAS proxied proxy example</h1>
|
||||
<?php require 'script_info.php' ?>
|
||||
<p>the user's login is <b><?php echo phpCAS::getUser(); ?></b>.</p>
|
||||
<h2>Response from service <?php echo $serviceUrl; ?></h2>
|
||||
<?php
|
||||
flush();
|
||||
|
||||
// call a service and change the color depending on the result
|
||||
try {
|
||||
$service = phpCAS::getProxiedService(PHPCAS_PROXIED_SERVICE_HTTP_GET);
|
||||
$service->setUrl($serviceUrl);
|
||||
$service->send();
|
||||
if ($service->getResponseStatusCode() == 200) {
|
||||
echo '<div class="success">';
|
||||
echo $service->getResponseBody();
|
||||
echo '</div>';
|
||||
} else {
|
||||
// The service responded with an error code 404, 500, etc.
|
||||
echo '<div class="error">';
|
||||
echo 'The service responded with a '
|
||||
. $service->getResponseStatusCode() . ' error.';
|
||||
echo '</div>';
|
||||
}
|
||||
} catch (CAS_ProxyTicketException $e) {
|
||||
if ($e->getCode() == PHPCAS_SERVICE_PT_FAILURE) {
|
||||
echo '<div class="error">';
|
||||
echo "Your login has timed out. You need to log in again.";
|
||||
echo '</div>';
|
||||
} else {
|
||||
// Other proxy ticket errors are from bad request format (shouldn't happen)
|
||||
// or CAS server failure (unlikely) so lets just stop if we hit those.
|
||||
throw $e;
|
||||
}
|
||||
} catch (CAS_ProxiedService_Exception $e) {
|
||||
// Something prevented the service request from being sent or received.
|
||||
// We didn't even get a valid error response (404, 500, etc), so this
|
||||
// might be caused by a network error or a DNS resolution failure.
|
||||
// We could handle it in some way, but for now we will just stop.
|
||||
throw $e;
|
||||
}
|
||||
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
103
include/phpCAS/docs/examples/example_proxy_POST.php
Normal file
103
include/phpCAS/docs/examples/example_proxy_POST.php
Normal file
@@ -0,0 +1,103 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Example for a proxy that makes a POST request.
|
||||
*
|
||||
* PHP Version 7
|
||||
*
|
||||
* @file example_proxy_POST.php
|
||||
* @category Authentication
|
||||
* @package PhpCAS
|
||||
* @author Joachim Fritschi <jfritschi@freenet.de>
|
||||
* @author Adam Franco <afranco@middlebury.edu>
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @link https://wiki.jasig.org/display/CASC/phpCAS
|
||||
*/
|
||||
|
||||
// Load the settings from the central config file
|
||||
require_once 'config.php';
|
||||
// Load the CAS lib
|
||||
require_once $phpcas_path . '/CAS.php';
|
||||
|
||||
// Enable debugging
|
||||
phpCAS::setLogger();
|
||||
// Enable verbose error messages. Disable in production!
|
||||
phpCAS::setVerbose(true);
|
||||
|
||||
// Initialize phpCAS
|
||||
phpCAS::proxy(CAS_VERSION_2_0, $cas_host, $cas_port, $cas_context, $client_service_name);
|
||||
|
||||
// For production use set the CA certificate that is the issuer of the cert
|
||||
// on the CAS server and uncomment the line below
|
||||
// phpCAS::setCasServerCACert($cas_server_ca_cert_path);
|
||||
|
||||
// For quick testing you can disable SSL validation of the CAS server.
|
||||
// THIS SETTING IS NOT RECOMMENDED FOR PRODUCTION.
|
||||
// VALIDATING THE CAS SERVER IS CRUCIAL TO THE SECURITY OF THE CAS PROTOCOL!
|
||||
phpCAS::setNoCasServerValidation();
|
||||
|
||||
// force CAS authentication
|
||||
phpCAS::forceAuthentication();
|
||||
|
||||
// at this step, the user has been authenticated by the CAS server
|
||||
// and the user's login name can be read with phpCAS::getUser().
|
||||
|
||||
// moreover, a PGT was retrieved from the CAS server that will
|
||||
// permit to gain accesses to new services.
|
||||
|
||||
$serviceUrl = $curbase . $curdir . 'example_service_POST.php';
|
||||
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<title>phpCAS proxy POST example</title>
|
||||
<link rel="stylesheet" type='text/css' href='example.css'/>
|
||||
</head>
|
||||
<body>
|
||||
<h1>phpCAS proxy POST example</h1>
|
||||
<?php require 'script_info.php' ?>
|
||||
<p>the user's login is <b><?php echo phpCAS::getUser(); ?></b>.</p>
|
||||
<h2>Response from service <?php echo $serviceUrl; ?></h2>
|
||||
<?php
|
||||
flush();
|
||||
|
||||
// call a service and change the color depending on the result
|
||||
try {
|
||||
$service = phpCAS::getProxiedService(PHPCAS_PROXIED_SERVICE_HTTP_POST);
|
||||
$service->setUrl($serviceUrl);
|
||||
$service->setContentType('application/x-www-form-urlencoded');
|
||||
$service->setBody('favorite_color=blue');
|
||||
$service->send();
|
||||
if ($service->getResponseStatusCode() == 200) {
|
||||
echo '<div class="success">';
|
||||
echo $service->getResponseBody();
|
||||
echo '</div>';
|
||||
} else {
|
||||
// The service responded with an error code 404, 500, etc.
|
||||
echo '<div class="error">';
|
||||
echo 'The service responded with a '
|
||||
. $service->getResponseStatusCode() . ' error.';
|
||||
echo $service->getResponseBody();
|
||||
echo '</div>';
|
||||
}
|
||||
} catch (CAS_ProxyTicketException $e) {
|
||||
if ($e->getCode() == PHPCAS_SERVICE_PT_FAILURE) {
|
||||
echo '<div class="error">';
|
||||
echo "Your login has timed out. You need to log in again.";
|
||||
echo '</div>';
|
||||
} else {
|
||||
// Other proxy ticket errors are from bad request format (shouldn't happen)
|
||||
// or CAS server failure (unlikely) so lets just stop if we hit those.
|
||||
throw $e;
|
||||
}
|
||||
} catch (CAS_ProxiedService_Exception $e) {
|
||||
// Something prevented the service request from being sent or received.
|
||||
// We didn't even get a valid error response (404, 500, etc), so this
|
||||
// might be caused by a network error or a DNS resolution failure.
|
||||
// We could handle it in some way, but for now we will just stop.
|
||||
throw $e;
|
||||
}
|
||||
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
63
include/phpCAS/docs/examples/example_proxy_rebroadcast.php
Normal file
63
include/phpCAS/docs/examples/example_proxy_rebroadcast.php
Normal file
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Example for a proxy that rebroadcasts all PGTs to different servers in the
|
||||
* cluster
|
||||
*
|
||||
* PHP Version 7
|
||||
*
|
||||
* @file example_proxy_rebroadcast.php
|
||||
* @category Authentication
|
||||
* @package PhpCAS
|
||||
* @author Joachim Fritschi <jfritschi@freenet.de>
|
||||
* @author Adam Franco <afranco@middlebury.edu>
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @link https://wiki.jasig.org/display/CASC/phpCAS
|
||||
*/
|
||||
|
||||
// Load the settings from the central config file
|
||||
require_once 'config.php';
|
||||
// Load the CAS lib
|
||||
require_once $phpcas_path . '/CAS.php';
|
||||
|
||||
// Enable debugging
|
||||
phpCAS::setLogger();
|
||||
// Enable verbose error messages. Disable in production!
|
||||
phpCAS::setVerbose(true);
|
||||
|
||||
// Initialize phpCAS
|
||||
phpCAS::proxy(CAS_VERSION_2_0, $cas_host, $cas_port, $cas_context, $client_service_name);
|
||||
|
||||
// For production use set the CA certificate that is the issuer of the cert
|
||||
// on the CAS server and uncomment the line below
|
||||
// phpCAS::setCasServerCACert($cas_server_ca_cert_path);
|
||||
|
||||
// For quick testing you can disable SSL validation of the CAS server.
|
||||
// THIS SETTING IS NOT RECOMMENDED FOR PRODUCTION.
|
||||
// VALIDATING THE CAS SERVER IS CRUCIAL TO THE SECURITY OF THE CAS PROTOCOL!
|
||||
phpCAS::setNoCasServerValidation();
|
||||
|
||||
// Set the nodes for rebroadcasting pgtIou/pgtId and logoutRequest
|
||||
phpCAS::addRebroadcastNode($rebroadcast_node_1);
|
||||
phpCAS::addRebroadcastNode($rebroadcast_node_2);
|
||||
|
||||
// handle incoming logout requests
|
||||
phpCAS::handleLogoutRequests();
|
||||
|
||||
// force CAS authentication
|
||||
phpCAS::forceAuthentication();
|
||||
|
||||
// at this step, the user has been authenticated by the CAS server
|
||||
// and the user's login name can be read with phpCAS::getUser().
|
||||
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<title>phpCAS proxy rebroadcast example</title>
|
||||
<link rel="stylesheet" type='text/css' href='example.css'/>
|
||||
</head>
|
||||
<body>
|
||||
<h1>phpCAS proxy rebroadcast example</h1>
|
||||
<p>the user's login is <b><?php echo phpCAS::getUser(); ?></b>.</p>
|
||||
</body>
|
||||
</html>
|
||||
71
include/phpCAS/docs/examples/example_proxy_serviceWeb.php
Normal file
71
include/phpCAS/docs/examples/example_proxy_serviceWeb.php
Normal file
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Example for a proxy with session usage
|
||||
*
|
||||
* PHP Version 7
|
||||
*
|
||||
* @file example_proxy_GET.php
|
||||
* @category Authentication
|
||||
* @package PhpCAS
|
||||
* @author Joachim Fritschi <jfritschi@freenet.de>
|
||||
* @author Adam Franco <afranco@middlebury.edu>
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @link https://wiki.jasig.org/display/CASC/phpCAS
|
||||
*/
|
||||
|
||||
// Load the settings from the central config file
|
||||
require_once 'config.php';
|
||||
// Load the CAS lib
|
||||
require_once $phpcas_path . '/CAS.php';
|
||||
|
||||
// Enable debugging
|
||||
phpCAS::setLogger();
|
||||
// Enable verbose error messages. Disable in production!
|
||||
phpCAS::setVerbose(true);
|
||||
|
||||
// Initialize phpCAS
|
||||
phpCAS::proxy(CAS_VERSION_2_0, $cas_host, $cas_port, $cas_context, $client_service_name);
|
||||
|
||||
// For production use set the CA certificate that is the issuer of the cert
|
||||
// on the CAS server and uncomment the line below
|
||||
// phpCAS::setCasServerCACert($cas_server_ca_cert_path);
|
||||
|
||||
// For quick testing you can disable SSL validation of the CAS server.
|
||||
// THIS SETTING IS NOT RECOMMENDED FOR PRODUCTION.
|
||||
// VALIDATING THE CAS SERVER IS CRUCIAL TO THE SECURITY OF THE CAS PROTOCOL!
|
||||
phpCAS::setNoCasServerValidation();
|
||||
|
||||
// force CAS authentication
|
||||
phpCAS::forceAuthentication();
|
||||
|
||||
// at this step, the user has been authenticated by the CAS server
|
||||
// and the user's login name can be read with phpCAS::getUser().
|
||||
|
||||
// moreover, a PGT was retrieved from the CAS server that will
|
||||
// permit to gain accesses to new services.
|
||||
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<title>phpCAS proxied proxy example (with sessioning)</title>
|
||||
<link rel="stylesheet" type='text/css' href='example.css'/>
|
||||
</head>
|
||||
<body>
|
||||
<h1>phpCAS proxied proxy example (with sessioning)</h1>
|
||||
<?php require 'script_info.php' ?>
|
||||
<p>the user's login is <b><?php echo phpCAS::getUser(); ?></b>.</p>
|
||||
<h2>Response from service <?php echo $serviceUrl; ?></h2>
|
||||
<?php
|
||||
flush();
|
||||
// call a service and change the color depending on the result
|
||||
if (phpCAS::serviceWeb($serviceUrl, $err_code, $output)) {
|
||||
echo '<div class="success">';
|
||||
} else {
|
||||
echo '<div class="error">';
|
||||
}
|
||||
echo $output;
|
||||
echo '</div>';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Example for a proxy with session usage
|
||||
*
|
||||
* PHP Version 7
|
||||
*
|
||||
* @file example_proxy_serviceWeb_chaining.php
|
||||
* @category Authentication
|
||||
* @package PhpCAS
|
||||
* @author Joachim Fritschi <jfritschi@freenet.de>
|
||||
* @author Adam Franco <afranco@middlebury.edu>
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @link https://wiki.jasig.org/display/CASC/phpCAS
|
||||
*/
|
||||
|
||||
// Load the settings from the central config file
|
||||
require_once 'config.php';
|
||||
// Load the CAS lib
|
||||
require_once $phpcas_path . '/CAS.php';
|
||||
|
||||
// Enable debugging
|
||||
phpCAS::setLogger();
|
||||
// Enable verbose error messages. Disable in production!
|
||||
phpCAS::setVerbose(true);
|
||||
|
||||
// Initialize phpCAS
|
||||
phpCAS::proxy(CAS_VERSION_2_0, $cas_host, $cas_port, $cas_context, $client_service_name);
|
||||
|
||||
// For production use set the CA certificate that is the issuer of the cert
|
||||
// on the CAS server and uncomment the line below
|
||||
// phpCAS::setCasServerCACert($cas_server_ca_cert_path);
|
||||
|
||||
// For quick testing you can disable SSL validation of the CAS server.
|
||||
// THIS SETTING IS NOT RECOMMENDED FOR PRODUCTION.
|
||||
// VALIDATING THE CAS SERVER IS CRUCIAL TO THE SECURITY OF THE CAS PROTOCOL!
|
||||
phpCAS::setNoCasServerValidation();
|
||||
|
||||
// force CAS authentication
|
||||
phpCAS::forceAuthentication();
|
||||
|
||||
// at this step, the user has been authenticated by the CAS server
|
||||
// and the user's login name can be read with phpCAS::getUser().
|
||||
|
||||
// moreover, a PGT was retrieved from the CAS server that will
|
||||
// permit to gain accesses to new services.
|
||||
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<title>phpCAS proxy example #2</title>
|
||||
<link rel="stylesheet" type='text/css' href='example.css'/>
|
||||
</head>
|
||||
<body>
|
||||
<h1>phpCAS proxied proxy example</h1>
|
||||
<?php require 'script_info.php' ?>
|
||||
<p>the user's login is <b><?php echo phpCAS::getUser(); ?></b>.</p>
|
||||
<h2>Response from service <?php echo $serviceUrl2; ?></h2>
|
||||
<?php
|
||||
flush();
|
||||
// call a service and change the color depending on the result
|
||||
if (phpCAS::serviceWeb($serviceUrl2, $err_code, $output)) {
|
||||
echo '<div class="success">';
|
||||
} else {
|
||||
echo '<div class="error">';
|
||||
}
|
||||
echo $output;
|
||||
echo '</div>';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
72
include/phpCAS/docs/examples/example_renew.php
Normal file
72
include/phpCAS/docs/examples/example_renew.php
Normal file
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Example for a simple cas 2.0 client
|
||||
*
|
||||
* PHP Version 7
|
||||
*
|
||||
* @file example_renew.php
|
||||
* @category Authentication
|
||||
* @package PhpCAS
|
||||
* @author Joachim Fritschi <jfritschi@freenet.de>
|
||||
* @author Adam Franco <afranco@middlebury.edu>
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @link https://wiki.jasig.org/display/CASC/phpCAS
|
||||
*/
|
||||
|
||||
// Load the settings from the central config file
|
||||
require_once 'config.php';
|
||||
// Load the CAS lib
|
||||
require_once $phpcas_path . '/CAS.php';
|
||||
|
||||
// Enable debugging
|
||||
phpCAS::setLogger();
|
||||
// Enable verbose error messages. Disable in production!
|
||||
phpCAS::setVerbose(true);
|
||||
|
||||
// Initialize phpCAS
|
||||
phpCAS::client(CAS_VERSION_2_0, $cas_host, $cas_port, $cas_context, $client_service_name);
|
||||
|
||||
// For production use set the CA certificate that is the issuer of the cert
|
||||
// on the CAS server and uncomment the line below
|
||||
// phpCAS::setCasServerCACert($cas_server_ca_cert_path);
|
||||
|
||||
// For quick testing you can disable SSL validation of the CAS server.
|
||||
// THIS SETTING IS NOT RECOMMENDED FOR PRODUCTION.
|
||||
// VALIDATING THE CAS SERVER IS CRUCIAL TO THE SECURITY OF THE CAS PROTOCOL!
|
||||
phpCAS::setNoCasServerValidation();
|
||||
|
||||
// force CAS authentication
|
||||
phpCAS::renewAuthentication();
|
||||
|
||||
// at this step, the user has been authenticated by the CAS server
|
||||
// and the user's login name can be read with phpCAS::getUser().
|
||||
|
||||
// logout if desired
|
||||
if (isset($_REQUEST['logout'])) {
|
||||
phpCAS::logout();
|
||||
}
|
||||
|
||||
// logout if desired
|
||||
if (isset($_REQUEST['session'])) {
|
||||
session_unset();
|
||||
session_destroy();
|
||||
unset($_REQUEST['session']);
|
||||
header("Location: ".$_SERVER['PHP_SELF']);
|
||||
}
|
||||
|
||||
// for this test, simply print that the authentication was successfull
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<title>phpCAS simple client</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Successfull Authentication!</h1>
|
||||
<?php require 'script_info.php' ?>
|
||||
<p>the user's login is <b><?php echo phpCAS::getUser(); ?></b>.</p>
|
||||
<p>phpCAS version is <b><?php echo phpCAS::getVersion(); ?></b>.</p>
|
||||
<p><a href="?logout=">Logout</a></p>
|
||||
<p><a href="?session=">Kill local Session</a></p>
|
||||
</body>
|
||||
</html>
|
||||
96
include/phpCAS/docs/examples/example_service.php
Normal file
96
include/phpCAS/docs/examples/example_service.php
Normal file
@@ -0,0 +1,96 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Example for proxied service with session support
|
||||
*
|
||||
* PHP Version 7
|
||||
*
|
||||
* @file example_service.php
|
||||
* @category Authentication
|
||||
* @package PhpCAS
|
||||
* @author Joachim Fritschi <jfritschi@freenet.de>
|
||||
* @author Adam Franco <afranco@middlebury.edu>
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @link https://wiki.jasig.org/display/CASC/phpCAS
|
||||
*/
|
||||
|
||||
// Load the settings from the central config file
|
||||
require_once 'config.php';
|
||||
// Load the CAS lib
|
||||
require_once $phpcas_path . '/CAS.php';
|
||||
|
||||
// Enable debugging
|
||||
phpCAS::setLogger();
|
||||
// Enable verbose error messages. Disable in production!
|
||||
phpCAS::setVerbose(true);
|
||||
|
||||
// Initialize phpCAS
|
||||
phpCAS::client(CAS_VERSION_2_0, $cas_host, $cas_port, $cas_context, $client_service_name);
|
||||
|
||||
// For production use set the CA certificate that is the issuer of the cert
|
||||
// on the CAS server and uncomment the line below
|
||||
// phpCAS::setCasServerCACert($cas_server_ca_cert_path);
|
||||
|
||||
// For quick testing you can disable SSL validation of the CAS server.
|
||||
// THIS SETTING IS NOT RECOMMENDED FOR PRODUCTION.
|
||||
// VALIDATING THE CAS SERVER IS CRUCIAL TO THE SECURITY OF THE CAS PROTOCOL!
|
||||
phpCAS::setNoCasServerValidation();
|
||||
|
||||
// If you want your service to be proxied you have to enable it (default
|
||||
// disabled) and define an accepable list of proxies that are allowed to
|
||||
// proxy your service.
|
||||
//
|
||||
// Add each allowed proxy definition object. For the normal CAS_ProxyChain
|
||||
// class, the constructor takes an array of proxies to match. The list is in
|
||||
// reverse just as seen from the service. Proxies have to be defined in reverse
|
||||
// from the service to the user. If a user hits service A and gets proxied via
|
||||
// B to service C the list of acceptable on C would be array(B,A). The definition
|
||||
// of an individual proxy can be either a string or a regexp (preg_match is used)
|
||||
// that will be matched against the proxy list supplied by the cas server
|
||||
// when validating the proxy tickets. The strings are compared starting from
|
||||
// the beginning and must fully match with the proxies in the list.
|
||||
// Example:
|
||||
// phpCAS::allowProxyChain(new CAS_ProxyChain(array(
|
||||
// 'https://app.example.com/'
|
||||
// )));
|
||||
// phpCAS::allowProxyChain(new CAS_ProxyChain(array(
|
||||
// '/^https:\/\/app[0-9]\.example\.com\/rest\//',
|
||||
// 'http://client.example.com/'
|
||||
// )));
|
||||
phpCAS::allowProxyChain(new CAS_ProxyChain(array($pgtUrlRegexp)));
|
||||
phpCAS::allowProxyChain(
|
||||
new CAS_ProxyChain(
|
||||
array('/^' . $pgtBase . 'example_service_that_proxies.php$/',
|
||||
'/^' . $pgtBase . 'example_proxy_serviceWeb_chaining.php$/'
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
// For quick testing or in certain production screnarios you might want to
|
||||
// allow allow any other valid service to proxy your service. To do so, add
|
||||
// the "Any" chain:
|
||||
// phpCAS::allowProxyChain(new CAS_ProxyChain_Any);
|
||||
// THIS SETTING IS HOWEVER NOT RECOMMENDED FOR PRODUCTION AND HAS SECURITY
|
||||
// IMPLICATIONS: YOU ARE ALLOWING ANY SERVICE TO ACT ON BEHALF OF A USER
|
||||
// ON THIS SERVICE.
|
||||
//phpCAS::allowProxyChain(new CAS_ProxyChain_Any);
|
||||
|
||||
// force CAS authentication
|
||||
phpCAS::forceAuthentication();
|
||||
|
||||
print '<h1>I am a service that can be proxied.</h1>';
|
||||
|
||||
// at this step, the user has been authenticated by the CAS server
|
||||
// and the user's login name can be read with phpCAS::getUser().
|
||||
require 'script_info.php';
|
||||
|
||||
// for this test, simply print that the authentication was successfull
|
||||
echo '<p>The user\'s login is <b>' . phpCAS::getUser() . '</b>.</p>';
|
||||
|
||||
// increment the number of requests of the session and print it
|
||||
if (!isset($_SESSION['n'])) {
|
||||
$_SESSION['n'] = 0;
|
||||
}
|
||||
echo '<p>request #' . (++$_SESSION['n']) . '</p>';
|
||||
|
||||
?>
|
||||
104
include/phpCAS/docs/examples/example_service_POST.php
Normal file
104
include/phpCAS/docs/examples/example_service_POST.php
Normal file
@@ -0,0 +1,104 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Example for proxied service with session support and POST support
|
||||
*
|
||||
* PHP Version 7
|
||||
*
|
||||
* @file example_service_POST.php
|
||||
* @category Authentication
|
||||
* @package PhpCAS
|
||||
* @author Joachim Fritschi <jfritschi@freenet.de>
|
||||
* @author Adam Franco <afranco@middlebury.edu>
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @link https://wiki.jasig.org/display/CASC/phpCAS
|
||||
*/
|
||||
|
||||
// Load the settings from the central config file
|
||||
require_once 'config.php';
|
||||
// Load the CAS lib
|
||||
require_once $phpcas_path . '/CAS.php';
|
||||
|
||||
// Enable debugging
|
||||
phpCAS::setLogger();
|
||||
// Enable verbose error messages. Disable in production!
|
||||
phpCAS::setVerbose(true);
|
||||
|
||||
// Initialize phpCAS
|
||||
phpCAS::client(CAS_VERSION_2_0, $cas_host, $cas_port, $cas_context, $client_service_name);
|
||||
|
||||
// For production use set the CA certificate that is the issuer of the cert
|
||||
// on the CAS server and uncomment the line below
|
||||
// phpCAS::setCasServerCACert($cas_server_ca_cert_path);
|
||||
|
||||
// For quick testing you can disable SSL validation of the CAS server.
|
||||
// THIS SETTING IS NOT RECOMMENDED FOR PRODUCTION.
|
||||
// VALIDATING THE CAS SERVER IS CRUCIAL TO THE SECURITY OF THE CAS PROTOCOL!
|
||||
phpCAS::setNoCasServerValidation();
|
||||
|
||||
// If you want your service to be proxied you have to enable it (default
|
||||
// disabled) and define an accepable list of proxies that are allowed to
|
||||
// proxy your service.
|
||||
//
|
||||
// Add each allowed proxy definition object. For the normal CAS_ProxyChain
|
||||
// class, the constructor takes an array of proxies to match. The list is in
|
||||
// reverse just as seen from the service. Proxies have to be defined in reverse
|
||||
// from the service to the user. If a user hits service A and gets proxied via
|
||||
// B to service C the list of acceptable on C would be array(B,A). The definition
|
||||
// of an individual proxy can be either a string or a regexp (preg_match is used)
|
||||
// that will be matched against the proxy list supplied by the cas server
|
||||
// when validating the proxy tickets. The strings are compared starting from
|
||||
// the beginning and must fully match with the proxies in the list.
|
||||
// Example:
|
||||
// phpCAS::allowProxyChain(new CAS_ProxyChain(array(
|
||||
// 'https://app.example.com/'
|
||||
// )));
|
||||
// phpCAS::allowProxyChain(new CAS_ProxyChain(array(
|
||||
// '/^https:\/\/app[0-9]\.example\.com\/rest\//',
|
||||
// 'http://client.example.com/'
|
||||
// )));
|
||||
phpCAS::allowProxyChain(new CAS_ProxyChain(array($pgtUrlRegexp)));
|
||||
|
||||
// For quick testing or in certain production screnarios you might want to
|
||||
// allow allow any other valid service to proxy your service. To do so, add
|
||||
// the "Any" chain:
|
||||
// phpCAS::allowProxyChain(new CAS_ProxyChain_Any);
|
||||
// THIS SETTING IS HOWEVER NOT RECOMMENDED FOR PRODUCTION AND HAS SECURITY
|
||||
// IMPLICATIONS: YOU ARE ALLOWING ANY SERVICE TO ACT ON BEHALF OF A USER
|
||||
// ON THIS SERVICE.
|
||||
//phpCAS::allowProxyChain(new CAS_ProxyChain_Any);
|
||||
|
||||
// force CAS authentication
|
||||
phpCAS::forceAuthentication();
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
|
||||
header('HTTP/1.1 400 Bad Request');
|
||||
print
|
||||
"<h1>I only respond to POST requests. This is a "
|
||||
. $_SERVER['REQUEST_METHOD'] . " request.</h1>";
|
||||
exit;
|
||||
}
|
||||
if (empty($_POST['favorite_color'])) {
|
||||
header('HTTP/1.1 400 Bad Request');
|
||||
print '<h1>You must post a <strong>favorite_color</strong>.</h1>';
|
||||
exit;
|
||||
}
|
||||
|
||||
print '<h1>I am a service that responds to POST requests.</h1>';
|
||||
|
||||
// at this step, the user has been authenticated by the CAS server
|
||||
// and the user's login name can be read with phpCAS::getUser().
|
||||
require 'script_info.php';
|
||||
|
||||
// for this test, simply print that the authentication was successfull
|
||||
echo '<p>The user\'s login is <b>' . phpCAS::getUser() . '</b>.</p>';
|
||||
|
||||
print
|
||||
'<h1>Your favorite color is ' . htmlentities($_POST['favorite_color'])
|
||||
. '</h1>';
|
||||
|
||||
// increment the number of requests of the session and print it
|
||||
if (!isset($_SESSION['n'])) {
|
||||
$_SESSION['n'] = 0;
|
||||
}
|
||||
echo '<p>request #' . (++$_SESSION['n']) . '</p>';
|
||||
105
include/phpCAS/docs/examples/example_service_that_proxies.php
Normal file
105
include/phpCAS/docs/examples/example_service_that_proxies.php
Normal file
@@ -0,0 +1,105 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Example for a proxied proxy
|
||||
*
|
||||
* PHP Version 7
|
||||
*
|
||||
* @file example_service_that_proxies.php
|
||||
* @category Authentication
|
||||
* @package PhpCAS
|
||||
* @author Joachim Fritschi <jfritschi@freenet.de>
|
||||
* @author Adam Franco <afranco@middlebury.edu>
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @link https://wiki.jasig.org/display/CASC/phpCAS
|
||||
*/
|
||||
|
||||
// Load the settings from the central config file
|
||||
require_once 'config.php';
|
||||
// Load the CAS lib
|
||||
require_once $phpcas_path . '/CAS.php';
|
||||
|
||||
// Enable debugging
|
||||
phpCAS::setLogger();
|
||||
// Enable verbose error messages. Disable in production!
|
||||
phpCAS::setVerbose(true);
|
||||
|
||||
// Initialize phpCAS
|
||||
phpCAS::proxy(CAS_VERSION_2_0, $cas_host, $cas_port, $cas_context, $client_service_name);
|
||||
|
||||
// For production use set the CA certificate that is the issuer of the cert
|
||||
// on the CAS server and uncomment the line below
|
||||
// phpCAS::setCasServerCACert($cas_server_ca_cert_path);
|
||||
|
||||
// For quick testing you can disable SSL validation of the CAS server.
|
||||
// THIS SETTING IS NOT RECOMMENDED FOR PRODUCTION.
|
||||
// VALIDATING THE CAS SERVER IS CRUCIAL TO THE SECURITY OF THE CAS PROTOCOL!
|
||||
phpCAS::setNoCasServerValidation();
|
||||
|
||||
// If you want your service to be proxied you have to enable it (default
|
||||
// disabled) and define an accepable list of proxies that are allowed to
|
||||
// proxy your service.
|
||||
//
|
||||
// Add each allowed proxy definition object. For the normal CAS_ProxyChain
|
||||
// class, the constructor takes an array of proxies to match. The list is in
|
||||
// reverse just as seen from the service. Proxies have to be defined in reverse
|
||||
// from the service to the user. If a user hits service A and gets proxied via
|
||||
// B to service C the list of acceptable on C would be array(B,A). The definition
|
||||
// of an individual proxy can be either a string or a regexp (preg_match is used)
|
||||
// that will be matched against the proxy list supplied by the cas server
|
||||
// when validating the proxy tickets. The strings are compared starting from
|
||||
// the beginning and must fully match with the proxies in the list.
|
||||
// Example:
|
||||
// phpCAS::allowProxyChain(new CAS_ProxyChain(array(
|
||||
// 'https://app.example.com/'
|
||||
// )));
|
||||
// phpCAS::allowProxyChain(new CAS_ProxyChain(array(
|
||||
// '/^https:\/\/app[0-9]\.example\.com\/rest\//',
|
||||
// 'http://client.example.com/'
|
||||
// )));
|
||||
phpCAS::allowProxyChain(new CAS_ProxyChain(array($pgtUrlRegexp)));
|
||||
|
||||
// For quick testing or in certain production screnarios you might want to
|
||||
// allow allow any other valid service to proxy your service. To do so, add
|
||||
// the "Any" chain:
|
||||
// phpCAS::allowProxyChain(new CAS_ProxyChain_Any);
|
||||
// THIS SETTING IS HOWEVER NOT RECOMMENDED FOR PRODUCTION AND HAS SECURITY
|
||||
// IMPLICATIONS: YOU ARE ALLOWING ANY SERVICE TO ACT ON BEHALF OF A USER
|
||||
// ON THIS SERVICE.
|
||||
//phpCAS::allowProxyChain(new CAS_ProxyChain_Any);
|
||||
|
||||
// force CAS authentication
|
||||
phpCAS::forceAuthentication();
|
||||
|
||||
// at this step, the user has been authenticated by the CAS server
|
||||
// and the user's login name can be read with phpCAS::getUser().
|
||||
|
||||
// moreover, a PGT was retrieved from the CAS server that will
|
||||
// permit to gain accesses to new services.
|
||||
|
||||
|
||||
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<title>phpCAS proxied proxy service example</title>
|
||||
<link rel="stylesheet" type='text/css' href='example.css'/>
|
||||
</head>
|
||||
<body>
|
||||
<h1>I am a service that can be proxied. In turn, I proxy another service.</h1>
|
||||
<?php require 'script_info.php' ?>
|
||||
<p>the user's login is <b><?php echo phpCAS::getUser(); ?></b>.</p>
|
||||
<h2>Response from service <?php echo $serviceUrl; ?></h2>
|
||||
<?php
|
||||
flush();
|
||||
// call a service and change the color depending on the result
|
||||
if ( phpCAS::serviceWeb($serviceUrl, $err_code, $output) ) {
|
||||
echo '<div class="success">';
|
||||
} else {
|
||||
echo '<div class="error">';
|
||||
}
|
||||
echo $output;
|
||||
echo '</div>';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
63
include/phpCAS/docs/examples/example_simple.php
Normal file
63
include/phpCAS/docs/examples/example_simple.php
Normal file
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Example for a simple cas 2.0 client
|
||||
*
|
||||
* PHP Version 7
|
||||
*
|
||||
* @file example_simple.php
|
||||
* @category Authentication
|
||||
* @package PhpCAS
|
||||
* @author Joachim Fritschi <jfritschi@freenet.de>
|
||||
* @author Adam Franco <afranco@middlebury.edu>
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @link https://wiki.jasig.org/display/CASC/phpCAS
|
||||
*/
|
||||
|
||||
// Load the settings from the central config file
|
||||
require_once 'config.php';
|
||||
// Load the CAS lib
|
||||
require_once $phpcas_path . '/CAS.php';
|
||||
|
||||
// Enable debugging
|
||||
phpCAS::setLogger();
|
||||
// Enable verbose error messages. Disable in production!
|
||||
phpCAS::setVerbose(true);
|
||||
|
||||
// Initialize phpCAS
|
||||
phpCAS::client(CAS_VERSION_2_0, $cas_host, $cas_port, $cas_context, $client_service_name);
|
||||
|
||||
// For production use set the CA certificate that is the issuer of the cert
|
||||
// on the CAS server and uncomment the line below
|
||||
// phpCAS::setCasServerCACert($cas_server_ca_cert_path);
|
||||
|
||||
// For quick testing you can disable SSL validation of the CAS server.
|
||||
// THIS SETTING IS NOT RECOMMENDED FOR PRODUCTION.
|
||||
// VALIDATING THE CAS SERVER IS CRUCIAL TO THE SECURITY OF THE CAS PROTOCOL!
|
||||
phpCAS::setNoCasServerValidation();
|
||||
|
||||
// force CAS authentication
|
||||
phpCAS::forceAuthentication();
|
||||
|
||||
// at this step, the user has been authenticated by the CAS server
|
||||
// and the user's login name can be read with phpCAS::getUser().
|
||||
|
||||
// logout if desired
|
||||
if (isset($_REQUEST['logout'])) {
|
||||
phpCAS::logout();
|
||||
}
|
||||
|
||||
// for this test, simply print that the authentication was successfull
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<title>phpCAS simple client</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Successfull Authentication!</h1>
|
||||
<?php require 'script_info.php' ?>
|
||||
<p>the user's login is <b><?php echo phpCAS::getUser(); ?></b>.</p>
|
||||
<p>phpCAS version is <b><?php echo phpCAS::getVersion(); ?></b>.</p>
|
||||
<p><a href="?logout=">Logout</a></p>
|
||||
</body>
|
||||
</html>
|
||||
20
include/phpCAS/docs/examples/script_info.php
Normal file
20
include/phpCAS/docs/examples/script_info.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
/**
|
||||
* Small script to add some info about the example script that is running.
|
||||
* Adds some info that makes it easier to distinguish different proxy sessions
|
||||
*
|
||||
* PHP Version 7
|
||||
*
|
||||
* @file script_info.php
|
||||
* @category Authentication
|
||||
* @package PhpCAS
|
||||
* @author Joachim Fritschi <jfritschi@freenet.de>
|
||||
* @author Adam Franco <afranco@middlebury.edu>
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @link https://wiki.jasig.org/display/CASC/phpCAS
|
||||
*/ ?>
|
||||
<dl style='border: 1px dotted; padding: 5px;'>
|
||||
<dt>Current script</dt><dd><?php print basename($_SERVER['SCRIPT_NAME']); ?></dd>
|
||||
<dt>session_name():</dt><dd> <?php print session_name(); ?></dd>
|
||||
<dt>session_id():</dt><dd> <?php print session_id(); ?></dd>
|
||||
</dl>
|
||||
Reference in New Issue
Block a user