SOAP Webservice - Authentifizierung

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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

    Comment

    Working...