PhP SOAP - "Forbidden"

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PhP SOAP - "Forbidden"

    Hallihallo und Grüße an die Community!

    Habe ein (kleines?) Problem mit einem PhP-SOAP Client (PHP5.2). Dieser greift auf einen .NET-Webservice zu, der auf der gleichen Maschine liegt.

    In meiner Entwicklungsumgebung (WinVista 32bit, XAMPP) funktioniert dieser problemlos. Wobei der .NET-Webserver hier nicht auf der selben Maschine liegt, sondern nur im gleichen Netzwerk...


    Nach Übertragen der Website auf den Produktivserver (Win2003 Server 64bit, IIS 6, PHP5.2) funktioniert der SOAP-Zugriff leider nicht mehr. :-(


    Der Fehler:
    - Die Website (PHP / HTML) ansich wird korrekt geladen.
    - Im Webservice wird KEINE Verbindung verzeichnet, weder erfolgreich noch erfolglos!
    - Allerdings wird dem PhP-Client "Forbidden" als Fehler zurückgemeldet, und zwar beim ersten Aufruf einer beliebigen Webservice-Funktion (hier der var_dump der Exception):

    object(SoapFault)#5 (8) { ["messagerotected"]=> string(9) "Forbidden" ["stringrivate"]=> string(0) "" ["coderotected"]=> int(0) ["filerotected"]=> string(59) "*****\soapCon.php" ["linerotected"]=> int(66) ["tracerivate"]=> array(7) { [0]=> array(4) { ["function"]=> string(11) "__doRequest" ["class"]=> string(10) "SoapClient" ["type"]=> string(2) "->" ["args"]=> array(5) { [0]=> string(252) " false " [1]=> string(28) "*****" [2]=> string(39) "*****/GetUser" [3]=> int(1) [4]=> int(0) } } [1]=> array(4) { ["function"]=> string(6) "__call" ["class"]=> string(10) "SoapClient" ["type"]=> string(2) "->" ["args"]=> array(2) { [0]=> string(7) "GetUser" [1]=> array(1) { [0]=> array(1) { ["zip"]=> bool(false) } } } } [2]=> array(6) { ["file"]=> string(59) "*****\soapCon.php" ["line"]=> int(66) ["function"]=> string(7) "GetUser" ["class"]=> string(10) "SoapClient" ["type"]=> string(2) "->" ["args"]=> array(1) { [0]=> array(1) { ["zip"]=> bool(false) } } } [3]=> array(6) { ["file"]=> string(56) "*****\user.php" ["line"]=> int(31) ["function"]=> string(7) "getUser" ["class"]=> string(7) "soapCon" ["type"]=> string(2) "::" ["args"]=> array(1) { [0]=> &string(5) "*****" } } [4]=> array(6) { ["file"]=> string(57) "*****\login.php" ["line"]=> int(19) ["function"]=> string(5) "login" ["class"]=> string(4) "user" ["type"]=> string(2) "->" ["args"]=> array(2) { [0]=> &string(5) "*****" [1]=> &string(5) "*****" } } [5]=> array(4) { ["file"]=> string(63) "*****\page_header.php" ["line"]=> int(45) ["args"]=> array(1) { [0]=> string(57) "*****\login.php" } ["function"]=> string(12) "include_once" } [6]=> array(4) { ["file"]=> string(56) "*****\home.php" ["line"]=> int(4) ["args"]=> array(1) { [0]=> string(63) "*****\page_header.php" } ["function"]=> string(12) "include_once" } } ["faultstring"]=> string(9) "Forbidden" ["faultcode"]=> string(4) "HTTP" }


    Bisher Überprüft:

    - Das WSDL wird korrekt geladen, die zur Verfügung stehenden Funktionen angezeigt (->__getFunctions()).
    - Die Extensions sind sowohl im IIS freigegeben, als auch in der PHP.ini (php_info zeigt die Module korrekt an).
    - Keine Zertifikate eingerichtet - werden derzeit auch noch nicht benötigt, SOAP-Kontenpunkte ohne Verschlüsselung (nur mit Transport-Authentifizierung).
    - Firewall testweise komplett deaktiviert.


    Die Connection wird über folgenden Aufruf aufgebaut:
    PHP-Code:
        soapCon::$client = new SoapClient($SOAP_wsdlPath
                                        array(
    'login'    => $login,    
                                              
    'password' => $pw,    
                                              
    'trace'    => 1,
                                              
    'cache_wsdl' => 0,
                                              
    'connection_timeout' => 5)); 


    Ein Funktionsaufruf, der den Fehler auslöst (Beispiel):

    PHP-Code:
    $result soapCon::$client->GetUser(array ('zip' => soapCon::$zip) ); 
    Weitere Ideen, wo der Fehler genau liegen könnte:
    - Leider kein Schimmer mehr...

    Hilfe!

    Vielen Dank im Voraus,
    LuWo (>',,'<)

  • #2
    So, ich habe anscheined etwas übersehen:

    In der lokalen Entwicklungsumgebung läuft der Webservice unter .NET 3.5.
    Der Webserver bietet leider nur maximal Version 3.0 an, sodass meine Transport Authentication in die Hose gehen musste. :-(

    Ich werde jetzt auf WS Auth übergehen, und das mit nuSoap. Hoffentlich bekomm' ich das hin... ;-)

    Kommentar

    Lädt...
    X