Hallo zusammen,
ich bastele grad an einem Authentifizierungsmechanismus
für SOAP-Kommunikation via Header.
Ich will an meinen Server im Header einen String, PWD
oder Ticket, übergeben und dann entsprechend auswerten.
So weit, so einfach.
Folgendes wird an den Server übermittelt:
POST /SOAP_Projekt/ep_vor_server.php HTTP/1.0
User-Agent: PEAR-SOAP 0.8.0RC4-devel
Host: localhost
Content-Type: text/xml; charset=UTF-8
Content-Length: 612
SOAPAction: ""
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns4="http://localhost/SOAP_Projekt/"
xmlns:ns5="urn:webservice"
>
<SOAP-ENV:Header>
<ns4:HeaderLogin SOAP-ENV:actor="http://schemas.xmlsoap.org/soap/actor/next" SOAP-ENV:mustUnderstand="1">abc123</ns4:HeaderLogin>
</SOAP-ENV:Header>
...
Zurück bekomme ich allerding ein SOAP-Fault mit dem Hinweis
dass der Server den Header nicht versteht.
Serverseitig geht es um folgenden Code:
Meiner Meinung müßte das klappen...
Falls jemand eine Idee hat woran es liegt wäre ich für
einen Hinweis dankbar...
dN
ich bastele grad an einem Authentifizierungsmechanismus
für SOAP-Kommunikation via Header.
Ich will an meinen Server im Header einen String, PWD
oder Ticket, übergeben und dann entsprechend auswerten.
So weit, so einfach.
PHP-Code:
require_once "SOAP/Client.php";
$soap = new SOAP_Client("http://localhost/SOAP_Projekt/ep_vor_server.php");
$header = new SOAP_Header
(
"{http://localhost/SOAP_Projekt/}HeaderLogin",
"string",
"abc123",
1
);
$soap->addHeader($header);
POST /SOAP_Projekt/ep_vor_server.php HTTP/1.0
User-Agent: PEAR-SOAP 0.8.0RC4-devel
Host: localhost
Content-Type: text/xml; charset=UTF-8
Content-Length: 612
SOAPAction: ""
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns4="http://localhost/SOAP_Projekt/"
xmlns:ns5="urn:webservice"
>
<SOAP-ENV:Header>
<ns4:HeaderLogin SOAP-ENV:actor="http://schemas.xmlsoap.org/soap/actor/next" SOAP-ENV:mustUnderstand="1">abc123</ns4:HeaderLogin>
</SOAP-ENV:Header>
...
Zurück bekomme ich allerding ein SOAP-Fault mit dem Hinweis
dass der Server den Header nicht versteht.
Serverseitig geht es um folgenden Code:
PHP-Code:
function HeaderLogin($s)
{
if($s == "abc123")
{
$GLOBALS["Authentifizierung"] = TRUE;
}
return new SOAP_Value("{http://localhost/SOAP_Projekt/}HeaderLoginResponse", "string", $s);
//return $s;
}
Meiner Meinung müßte das klappen...
Falls jemand eine Idee hat woran es liegt wäre ich für
einen Hinweis dankbar...
dN