| | |
| | | $port = 0; |
| | | if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') { |
| | | $url = 'https://'; |
| | | if(isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] != '443') { |
| | | if(isset($_SERVER['SERVER_PORT']) |
| | | && $_SERVER['SERVER_PORT'] != '443') { |
| | | $port = $_SERVER['SERVER_PORT']; |
| | | } |
| | | } elseif(isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] != '80') { |
| | | } elseif(isset($_SERVER['SERVER_PORT']) |
| | | && $_SERVER['SERVER_PORT'] != '80') { |
| | | $port = $_SERVER['SERVER_PORT']; |
| | | } |
| | | |
| | |
| | | ), |
| | | 'ssl' => array( |
| | | 'verify_peer' => TRUE, |
| | | 'allow_self_signed' => FALSE, |
| | | 'verify_peer_name' => TRUE, |
| | | 'verify_depth' => 5, |
| | | 'ciphers' => 'HIGH:-MD5:-aNULL:-DES', |
| | | 'allow_self_signed' => FALSE, |
| | | 'disable_compression' => TRUE, |
| | | ), |
| | | ); |
| | | |
| | | $data = file_get_contents($this->serverUrl.'/serviceValidate?service='.urlencode($this->serviceUrl).'&ticket='.urlencode($ticket), |
| | | $data = file_get_contents($this->serverUrl |
| | | .'/serviceValidate?service='.urlencode($this->serviceUrl) |
| | | .'&ticket='.urlencode($ticket), |
| | | FALSE, stream_context_create($context)); |
| | | if($data === FALSE) { |
| | | throw new JasigException('Authentication error: CAS server is unavailable'); |
| | |
| | | $xml->loadXML($data); |
| | | |
| | | foreach(libxml_get_errors() as $error) { |
| | | $e = new ErrorException($error->message, $error->code, 1, $error->file, $error->line); |
| | | $e = new ErrorException($error->message, $error->code, 1, |
| | | $error->file, $error->line); |
| | | switch ($error->level) { |
| | | case LIBXML_ERR_ERROR: |
| | | throw new Exception('Fatal error during XML parsing', 0, $e); |
| | | break; |
| | | case LIBXML_ERR_FATAL: |
| | | throw new Exception('Fatal error during XML parsing', 0, $e); |
| | | throw new Exception('Fatal error during XML parsing', |
| | | 0, $e); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | catch(Exception $e) { |
| | | throw new JasigException('Authentication error: CAS server response invalid - parse error', 0, $e); |
| | | throw new JasigException('Authentication error: CAS server' |
| | | .' response invalid - parse error', 0, $e); |
| | | } finally { |
| | | libxml_clear_errors(); |
| | | libxml_disable_entity_loader($xmlEntityLoader); |
| | |
| | | if($failure->length > 0) { |
| | | $failure = $failure->item(0); |
| | | if(!($failure instanceof DOMElement)) { |
| | | throw new JasigException('Authentication error: CAS server response invalid - authenticationFailure'); |
| | | throw new JasigException('Authentication error: CAS server' |
| | | .' response invalid - authenticationFailure'); |
| | | } |
| | | throw new JasigAuthException('Authentication error: '.$failure->textContent); |
| | | throw new JasigAuthException('Authentication error: ' |
| | | .$failure->textContent); |
| | | } elseif($success->length > 0) { |
| | | $success = $success->item(0); |
| | | if(!($success instanceof DOMElement)) { |
| | | throw new JasigException('Authentication error: CAS server response invalid - authenticationSuccess'); |
| | | throw new JasigException('Authentication error: CAS server' |
| | | .' response invalid - authenticationSuccess'); |
| | | } |
| | | |
| | | $user = $success->getElementsByTagName('user'); |
| | | if($user->length == 0) { |
| | | throw new JasigException('Authentication error: CAS server response invalid - user'); |
| | | throw new JasigException('Authentication error: CAS server' |
| | | .' response invalid - user'); |
| | | } |
| | | |
| | | $user = trim($user->item(0)->textContent); |
| | | if(strlen($user)<1) { |
| | | throw new JasigException('Authentication error: CAS server response invalid - user value'); |
| | | throw new JasigException('Authentication error: CAS server' |
| | | .' response invalid - user value'); |
| | | } |
| | | |
| | | $jusr = new JasigUser(); |
| | |
| | | } |
| | | else |
| | | { |
| | | throw new JasigException('Authentication error: CAS server response invalid - required tag not found'); |
| | | throw new JasigException('Authentication error: CAS server' |
| | | .' response invalid - required tag not found'); |
| | | } |
| | | } |
| | | } |