PHP Classes

File: web/SSO/modules/casserver/www/serviceValidate.php

Recommend this page to a friend!
  Classes of william amed   Raptor 2   web/SSO/modules/casserver/www/serviceValidate.php   Download  
File: web/SSO/modules/casserver/www/serviceValidate.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Raptor 2
Framework that takes routes from annotations
Author: By
Last change:
Date: 8 years ago
Size: 3,346 bytes
 

Contents

Class file image Download
<?php
require 'tickets.php';

# set manually if called directly - ie not included from validate.php or cas.php
if (!$function) $function = 'serviceValidate';

/*
 * Incomming parameters:
 * service
 * renew
 * ticket
 *
 */

if (array_key_exists('service', $_GET)) {
   
$service = $_GET['service'];
   
$ticket = $_GET['ticket'];
   
$forceAuthn = isset($_GET['renew']) && $_GET['renew'];
} else {
    throw new
Exception('Required URL query parameter [service] not provided. (CAS Server)');
}

try {
/* Load simpleSAMLphp, configuration and metadata */
   
$casconfig = SimpleSAML_Configuration::getConfig('module_casserver.php');
   
   
$path = $casconfig->resolvePath($casconfig->getValue('ticketcache', 'ticketcache'));
   
$ticketcontent = retrieveTicket($ticket, $path);
   
   
$usernamefield = $casconfig->getValue('attrname', 'eduPersonPrincipalName');
   
$dosendattributes = $casconfig->getValue('attributes', FALSE);
   
   
$attributes = $ticketcontent['attributes'];

   
$pgtiouxml = "";

    if (
$ticketcontent['service'] == $service
           
&& $ticketcontent['forceAuthn'] == $forceAuthn
           
&& array_key_exists($usernamefield, $attributes)
            &&
$ticketcontent['validbefore'] > time()) {
                   
        if (isset(
$_GET['pgtUrl'])) {
           
$pgtUrl = $_GET['pgtUrl'];
           
$pgtiou = str_replace( '_', 'PGTIOU-', SimpleSAML_Utilities::generateID());
           
$pgt = str_replace( '_', 'PGT-', SimpleSAML_Utilities::generateID());
           
$content = array(
               
'attributes' => $attributes,
               
'forceAuthn' => false,
               
'proxies' => array_merge(array($service), $ticketcontent['proxies']),
               
'validbefore' => time() + 60);
           
SimpleSAML_Utilities::fetch($pgtUrl . '?pgtIou=' . $pgtiou . '&pgtId=' . $pgt);
           
storeTicket($pgt, $path, $content);
           
$pgtiouxml = "\n<cas:proxyGrantingTicket>$pgtiou</cas:proxyGrantingTicket>\n";
        }
       
       
$proxiesxml = join("\n", array_map(create_function('$a', 'return "<cas:proxy>$a</cas:proxy>";'), $ticketcontent['proxies']));
        if (
$proxiesxml) $proxiesxml = "<cas:proxies>\n$proxiesxml\n</cas:proxies>\n";
       
returnResponse('YES', $function, $attributes[$usernamefield][0], $dosendattributes ? $attributes : array(), $pgtiouxml.$proxiesxml);
    } else {
       
returnResponse('NO', $function);
    }

} catch (
Exception $e) {
   
returnResponse('NO', $function, $e->getMessage());
}

function
returnResponse($value, $function, $usrname = '', $attributes = array(), $xtraxml = "") {
    if (
$value === 'YES') {
        if (
$function != 'validate') {
           
$attributesxml = "";
            foreach (
$attributes as $attributename => $attributelist) {
               
$attr = htmlspecialchars($attributename);
                foreach (
$attributelist as $attributevalue) {
                   
$attributesxml .= "<cas:$attr>" . htmlspecialchars($attributevalue) . "</cas:$attr>\n";
                }
            }
            if (
sizeof($attributes)) $attributesxml = "<cas:attributes>\n" . $attributesxml . "</cas:attributes>\n";
            echo
'<cas:serviceResponse xmlns:cas="http://www.yale.edu/tp/cas">
<cas:authenticationSuccess>
<cas:user>'
. htmlspecialchars($usrname) . '</cas:user>' .
       
$xtraxml .
       
$attributesxml .
       
'</cas:authenticationSuccess>
</cas:serviceResponse>'
;
        } else {
            echo
'yes' . "\n" . $usrname;
        }
    } else {
        if (
$function != 'validate') {
            echo
'<cas:serviceResponse xmlns:cas="http://www.yale.edu/tp/cas">
<cas:authenticationFailure code="">
</cas:authenticationFailure>
</cas:serviceResponse>'
;
        } else {
            echo
'no';

        }
    }
}

?>