SOAP Webservice - Authentifizierung

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

  • SOAP Webservice - Authentifizierung

    Hallo!

    Ich möchte mehrere Funktionen über einen WebService anbieten.
    Um die Services zu nutzen muss man angemeldet sein. D.h. Ich habe eine Funktion chkAuth der man User und Password mitgeben muss und damit für eine bestimmte Zeit angemeldet ist. (Am besten über eine PHP-Session oder ähnliches).

    Ich habe zum Testen mal 2 Funktionen in eine Klasse geschrieben:

    PHP-Code:
    class SoapTest {
      
      function 
    Soap_chkAuth($User$Password) {
        
    $state anmeldungpruefen("'".$User."'","'".$Password."'");
        if (
    $state == 'OK') {
          
    $_SESSION['CurrentUser'] = $User;
        }  
        return 
    $state;
      }

      function 
    Soap_test() {
        
    $result 'Nope!';
        if (isset(
    $_SESSION['CurrentUser'])) {
          
    $result 'Angemeldet: '.$_SESSION['CurrentUser'];
        }
        return 
    $result;
      }


    Im gleichen PHP-File liegt der Teil für den Server:

    PHP-Code:
    session_start();
    $server = new SoapServer(Null,
     array(
    'uri'=> $_SERVER['REQUEST_URI']));

    // $server->addFunction(array('Soap_chkAuth'));
    $server->setClass("SoapTest");  //Egal wie ich die Klasse hinzufüge, der Service läuft!
    //$server->setObject(new SoapTest());

    $server->setPersistence(SOAP_PERSISTENCE_SESSION);
    $server->setPersistence(SOAP_PERSISTENCE_REQUEST);
    $server->handle(); 
    Wenn ich die chkAuth-Funktion mit einem SOAP-Client Aufrufe funktioniert dieser und gibt 'OK' oder 'False' zurück.

    Nur die test-Funktion gibt immer ein 'Nope!' zurück.

    Was mache ich falsch? Danke!

  • #2
    PHP-Code:
    $server->setPersistence(SOAP_PERSISTENCE_SESSION);
    $server->setPersistence(SOAP_PERSISTENCE_REQUEST); 
    Beides ist Unsinn!

    Das Zweite überschreibt das Erste.

    Mit SoapClient::__getLastRequestHeaders und SoapClient::__getLastResponseHeaders kannst du prüfen ob Server und Client die Sessioncookies richtig senden.

    Ob da ein session_start() nötig ist, kann ich so nicht sagen.....
    Wir werden alle sterben

    Kommentar

    Lädt...
    X