Re: [SOAP] Re: PHP4 SOAP Request problem logging in to salesforce.com

From: Date: Thu, 27 Oct 2005 13:17:02 +0000
Subject: Re: [SOAP] Re: PHP4 SOAP Request problem logging in to salesforce.com
References: 1 2 3 4 5 6 7 8 9 10  Groups: php.soap 
Request: Send a blank email to php-soap+get-2041@lists.php.net to get a copy of this message
Michael Rasmussen wrote:
On Wed, 26 Oct 2005 21:19:25 -0400, Colin Goldberg wrote:
Taking your code as-is, I get the error: "curl_exec error 60 error setting certificate verify locations". I think I have to set the curl CURLOPT_CAINFO option to point to a certificate file, but I am not sure where in the SOAP file hierarchy the curl function is available.
Correct. The login function requires that php-curl is installed and enabled because the action specifies that the request must use https. What distro are you using? On my Debian it was just apt-get install php5.0-curl and then it worked out-of-the-box. I have curl installed. I see that curl options are set in function _sendHTTPS in SOAP/Transport/HTTP.php.
What statement(s) do I need to set CURLOPT_CAINFO, etc. eg. If I were to place the statement inside function _sendHTTPS it would be: $ch = curl_init(); curl_setopt($ch, CURLOPT_CAINFO, '/my path to/ca-bundle.crt'); How do I do this without disturbing the SOAP distribution?
But a View Source shows me that the username and password were inserted into the SOAP body.
Jep, after looking at the WSDL I found out that the are using I none standard way of doing login or perhaps the are using some kind of session feature outside of SOAP. The prescribed way of handling this issue is to add it to the header of every SOAP request. An example server could look like this: <?php // authServer.php require_once 'SOAP/Server.php'; // The handler of SOAP headers class Header_Handler { var $method_namespace = 'urn:AuthHandler'; var $authenticated = FALSE; function authenticate($authinfo) {
       if ($authinfo->username == 'foo' &&
           $authinfo->password == 'bar') {
           $this->authenticated = TRUE;
           return 'Authentication OK';
       }
       $faultcode = 'Client';
       $faultstring = 'Invalid Authentication';
       $faultactor = $this->method_namespace;
       $detail = NULL;
       return new SOAP_Fault($faultstring,
                             $faultcode,
                             $faultactor,
                             $detail);
} } // The class server class Simple_Server { var $method_namespace = 'urn:AuthServer'; function Simple_Server() {
       global $server;
       $this->headers = new Header_Handler();
       $server->addObjectMap($this->headers, 'urn:AuthHandler');
} function echoString($text) {
       if (!$this->headers->authenticated) {
           $faultcode = 'Client';
           $faultstring = 'You must send authentication headers';
           $faultactor = $this->method_namespace;
           $detail = NULL;
           return new SOAP_Fault($faultstring,
                                 $faultcode,
                                 $faultactor,
       }
       return $text;
} } $server = new SOAP_Server; $myserver = new Simple_Server(); $server->addObjectMap($myserver, 'urn:AuthServer'); $server->service($HTTP_RAW_POST_DATA); ?> Colin Goldberg


« previous php.soap (#2041) next »