source-class-CAS_ProxyChain_AllowedList

It appears that you are using AdBlocking software. The cost of running this website is covered by advertisements. If you like it please feel free to a small amount of money to secure the future of this website.
Overview

Classes

Interfaces

Exceptions

Functions

  1: <?php
  2: 
  3: /**
  4:  * Licensed to Jasig under one or more contributor license
  5:  * agreements. See the NOTICE file distributed with this work for
  6:  * additional information regarding copyright ownership.
  7:  *
  8:  * Jasig licenses this file to you under the Apache License,
  9:  * Version 2.0 (the "License"); you may not use this file except in
 10:  * compliance with the License. You may obtain a copy of the License at:
 11:  *
 12:  * http://www.apache.org/licenses/LICENSE-2.0
 13:  *
 14:  * Unless required by applicable law or agreed to in writing, software
 15:  * distributed under the License is distributed on an "AS IS" BASIS,
 16:  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 17:  * See the License for the specific language governing permissions and
 18:  * limitations under the License.
 19:  *
 20:  * PHP Version 5
 21:  *
 22:  * @file     CAS/ProxyChain/AllowedList.php
 23:  * @category Authentication
 24:  * @package  PhpCAS
 25:  * @author   Adam Franco <afranco@middlebury.edu>
 26:  * @license  http://www.apache.org/licenses/LICENSE-2.0  Apache License 2.0
 27:  * @link     https://wiki.jasig.org/display/CASC/phpCAS
 28:  */
 29: 
 30: 
 31: /**
 32:  * ProxyChain is a container for storing chains of valid proxies that can
 33:  * be used to validate proxied requests to a service
 34:  *
 35:  * @class    CAS_ProxyChain_AllowedList
 36:  * @category Authentication
 37:  * @package  PhpCAS
 38:  * @author   Adam Franco <afranco@middlebury.edu>
 39:  * @license  http://www.apache.org/licenses/LICENSE-2.0  Apache License 2.0
 40:  * @link     https://wiki.jasig.org/display/CASC/phpCAS
 41:  */
 42: 
 43: class CAS_ProxyChain_AllowedList
 44: {
 45: 
 46:     private $_chains = array();
 47: 
 48:     /**
 49:      * Check whether proxies are allowed by configuration
 50:      *
 51:      * @return bool
 52:      */
 53:     public function isProxyingAllowed()
 54:     {
 55:         return (count($this->_chains) > 0);
 56:     }
 57: 
 58:     /**
 59:      * Add a chain of proxies to the list of possible chains
 60:      *
 61:      * @param CAS_ProxyChain_Interface $chain A chain of proxies
 62:      *
 63:      * @return void
 64:      */
 65:     public function allowProxyChain(CAS_ProxyChain_Interface $chain)
 66:     {
 67:         $this->_chains[] = $chain;
 68:     }
 69: 
 70:     /**
 71:      * Check if the proxies found in the response match the allowed proxies
 72:      *
 73:      * @param array $proxies list of proxies to check
 74:      *
 75:      * @return bool whether the proxies match the allowed proxies
 76:      */
 77:     public function isProxyListAllowed(array $proxies)
 78:     {
 79:         phpCAS::traceBegin();
 80:         if (empty($proxies)) {
 81:             phpCAS::trace("No proxies were found in the response");
 82:             phpCAS::traceEnd(true);
 83:             return true;
 84:         } elseif (!$this->isProxyingAllowed()) {
 85:             phpCAS::trace("Proxies are not allowed");
 86:             phpCAS::traceEnd(false);
 87:             return false;
 88:         } else {
 89:             $res = $this->contains($proxies);
 90:             phpCAS::traceEnd($res);
 91:             return $res;
 92:         }
 93:     }
 94: 
 95:     /**
 96:      * Validate the proxies from the proxy ticket validation against the
 97:      * chains that were definded.
 98:      *
 99:      * @param array $list List of proxies from the proxy ticket validation.
100:      *
101:      * @return if any chain fully matches the supplied list
102:      */
103:     public function contains(array $list)
104:     {
105:         phpCAS::traceBegin();
106:         $count = 0;
107:         foreach ($this->_chains as $chain) {
108:             phpCAS::trace("Checking chain ". $count++);
109:             if ($chain->matches($list)) {
110:                 phpCAS::traceEnd(true);
111:                 return true;
112:             }
113:         }
114:         phpCAS::trace("No proxy chain matches.");
115:         phpCAS::traceEnd(false);
116:         return false;
117:     }
118: }
119: ?>
120: 
 

© 2004-2018 – Nicola Asuni - Tecnick.com - All rights reserved.
about - disclaimer - privacy