Moodle  2.2.1
http://www.collinsharper.com
C:/xampp/htdocs/moodle/lib/zend/Zend/Service/DeveloperGarden/Client/Soap.php
Go to the documentation of this file.
00001 <?php
00026 require_once 'Zend/Soap/Client.php';
00027 
00036 class Zend_Service_DeveloperGarden_Client_Soap extends Zend_Soap_Client
00037 {
00043     private $_credential = null;
00044 
00050     const WSSE_NAMESPACE_SECEXT = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd';
00051 
00057     const WSSE_NAMESPACE_SAML = 'urn:oasis:names:tc:SAML:2.0:assertion';
00058 
00064     const WSSE_SECURITY_ELEMENT = 'Security';
00065 
00071     const WSSE_ELEMENT_USERNAMETOKEN = 'UsernameToken';
00072 
00078     const WSSE_ELEMENT_USERNAME = 'Username';
00079 
00085     const WSSE_ELEMENT_PASSWORD = 'Password';
00086 
00091     const WSSE_ELEMENT_PASSWORD_TYPE = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText';
00092 
00098     protected $_tokenService = null;
00099 
00107     public function __call($name, $arguments)
00108     {
00112         if (!is_null($this->_tokenService)) {
00113             // if login method we addWsseLoginHeader
00114             if (in_array('login', $arguments)) {
00115                 $this->addWsseLoginHeader();
00116             } elseif ($name == 'getTokens') {
00117                 $this->addWsseTokenHeader($this->_tokenService->getLoginToken());
00118             } else {
00119                 $this->addWsseSecurityTokenHeader($this->_tokenService->getTokens());
00120             }
00121         }
00122         return parent::__call($name, $arguments);
00123     }
00124 
00131     public function setTokenService(Zend_Service_DeveloperGarden_SecurityTokenServer $tokenService)
00132     {
00133         $this->_tokenService = $tokenService;
00134         return $this;
00135     }
00136 
00142     public function getTokenService()
00143     {
00144         return $this->_tokenService;
00145     }
00146 
00153     public function setCredential(Zend_Service_DeveloperGarden_Credential $credential)
00154     {
00155         $this->_credential = $credential;
00156         return $this;
00157     }
00158 
00164     public function getCredential()
00165     {
00166         return $this->_credential;
00167     }
00168 
00174     public function getWsseLoginHeader()
00175     {
00176         $dom = new DOMDocument();
00177 
00181         $securityElement = $dom->createElementNS(
00182             self::WSSE_NAMESPACE_SECEXT,
00183             'wsse:' . self::WSSE_SECURITY_ELEMENT
00184         );
00185         $securityElement->setAttribute('mustUnderstand', true);
00186 
00190         $usernameTokenElement = $dom->createElementNS(
00191             self::WSSE_NAMESPACE_SECEXT,
00192             self::WSSE_ELEMENT_USERNAMETOKEN
00193         );
00194 
00198         $usernameElement = $dom->createElementNS(
00199             self::WSSE_NAMESPACE_SECEXT,
00200             self::WSSE_ELEMENT_USERNAME,
00201             $this->_credential->getUsername(true)
00202         );
00203 
00207         $passwordElement = $dom->createElementNS(
00208             self::WSSE_NAMESPACE_SECEXT,
00209             self::WSSE_ELEMENT_PASSWORD,
00210             $this->_credential->getPassword()
00211         );
00212         $passwordElement->setAttribute('Type', self::WSSE_ELEMENT_PASSWORD_TYPE);
00213 
00214         $usernameTokenElement->appendChild($usernameElement);
00215         $usernameTokenElement->appendChild($passwordElement);
00216 
00217         $securityElement->appendChild($usernameTokenElement);
00218         $dom->appendChild($securityElement);
00219 
00220         $authSoapVar = new SoapVar(
00221             $dom->saveXML($securityElement),
00222             XSD_ANYXML,
00223             self::WSSE_NAMESPACE_SECEXT,
00224             self::WSSE_SECURITY_ELEMENT
00225         );
00226 
00227         $authSoapHeader = new SoapHeader(
00228             self::WSSE_NAMESPACE_SECEXT,
00229             self::WSSE_SECURITY_ELEMENT,
00230             $authSoapVar,
00231             true
00232         );
00233 
00234         return $authSoapHeader;
00235     }
00236 
00243     public function getWsseTokenHeader(
00244         Zend_Service_DeveloperGarden_Response_SecurityTokenServer_SecurityTokenResponse $token
00245     ) {
00246         $format = '<wsse:%s xmlns:wsse="%s" SOAP-ENV:mustUnderstand="1">%s</wsse:%s>';
00247         $securityHeader = sprintf(
00248             $format,
00249             self::WSSE_SECURITY_ELEMENT,
00250             self::WSSE_NAMESPACE_SECEXT,
00251             $token->getTokenData(),
00252             self::WSSE_SECURITY_ELEMENT
00253         );
00254 
00255         $authSoapVar = new SoapVar(
00256             $securityHeader,
00257             XSD_ANYXML,
00258             self::WSSE_NAMESPACE_SECEXT,
00259             self::WSSE_SECURITY_ELEMENT
00260         );
00261 
00262         $authSoapHeader = new SoapHeader(
00263             self::WSSE_NAMESPACE_SECEXT,
00264             self::WSSE_SECURITY_ELEMENT,
00265             $authSoapVar,
00266             true
00267         );
00268 
00269         return $authSoapHeader;
00270     }
00271 
00278     public function getWsseSecurityTokenHeader(
00279         Zend_Service_DeveloperGarden_Response_SecurityTokenServer_GetTokensResponse $token
00280     ) {
00281         $format = '<wsse:%s xmlns:wsse="%s" SOAP-ENV:mustUnderstand="1">%s</wsse:%s>';
00282         $securityHeader = sprintf(
00283             $format,
00284             self::WSSE_SECURITY_ELEMENT,
00285             self::WSSE_NAMESPACE_SECEXT,
00286             $token->getTokenData(),
00287             self::WSSE_SECURITY_ELEMENT
00288         );
00289 
00290         $authSoapVar = new SoapVar(
00291             $securityHeader,
00292             XSD_ANYXML,
00293             self::WSSE_NAMESPACE_SECEXT,
00294             self::WSSE_SECURITY_ELEMENT
00295         );
00296 
00297         $authSoapHeader = new SoapHeader(
00298             self::WSSE_NAMESPACE_SECEXT,
00299             self::WSSE_SECURITY_ELEMENT,
00300             $authSoapVar,
00301             true
00302         );
00303 
00304         return $authSoapHeader;
00305     }
00306 
00312     public function addWsseLoginHeader()
00313     {
00314         return $this->addSoapInputHeader($this->getWsseLoginHeader());
00315     }
00316 
00323     public function addWsseTokenHeader(
00324         Zend_Service_DeveloperGarden_Response_SecurityTokenServer_SecurityTokenResponse $token
00325     ) {
00326         return $this->addSoapInputHeader($this->getWsseTokenHeader($token));
00327     }
00328 
00335     public function addWsseSecurityTokenHeader(
00336         Zend_Service_DeveloperGarden_Response_SecurityTokenServer_GetTokensResponse $token
00337     ) {
00338         return $this->addSoapInputHeader($this->getWsseSecurityTokenHeader($token));
00339     }
00340 }
 All Data Structures Namespaces Files Functions Variables Enumerations