php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.03.2011, 20:50  
Neuer Benutzer
 
Registriert seit: 09.03.2011
Beiträge: 8
PHP-Kenntnisse:
Anfänger
paos befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] (Nu)SOAP via HTTP(S) und Session-Handling

Hallo zusammen,

ich stehe vor der Aufgabe einen Web-Service zu entwickeln und habe darin bisher (fast) keine Erfahrung. Für die Entwicklung habe ich mich für NuSOAP entschieden, allerdings noch nicht letztendlich festgelegt.

Der Service soll einen Login mit Email und Passwort anbieten; Angemeldete User sollen dann Zugriff bestimmte Services/Funktionen erhalten.

Mich beschäftgt aktuell die Frage des Session Handlings. Wie funktioniert das generell bei Web-Services? Die Clients sollen nicht zwangsläufg Browser sein und können zB. nichts mit Cookies anfangen.

Aktuell schwebt mir folgender Ablauf vor:

1. Client-Login mit User und Passwort
2. Login-Funktion auf Server wird ausgeführt und eine Session-ID wird generiert, Session-ID wird in Datenbank geschrieben
3. Antwort von Server an Client inkl. generierter Session-ID
...
N. Client-Funktionsaufruf inkl. Session-ID
N+1. Funktionsaufruf überprüft anhand Session-ID Befugnis
N+2. Antwort von Server...

ALternativ kann man natürlich auch immer die Anmeldeparamter mitsenden und so vor Ausführung der Funktion die Berechtigung prüfen.

Wie ist die übliche Vorgehensweise? Kennt jmd. vielleicht ein Beispiel?

Beste Grüße, Marco
paos ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 09.03.2011, 21:00  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.268
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Welchen Vorteil hat dann die Session? HTTP-Authentifizierung macht es ja auch ohne: einfach die Zugangsdaten immer mit im Header senden. Einen Logout muss es dann auch nicht mehr geben, du brauchst keinen Garbage-Collector, du hast keinen Session-Timeout, du kannst User sofort aussperren, .. und dank SSL ist es dann auch weniger problematisch, wenn du dauernd das Passwort hin und her schickst. Muss aber zugeben, dass ich nicht mehr auf dem neuesten Stand dahingehend bin.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 10.03.2011, 01:12  
Erfahrener Benutzer
 
Registriert seit: 21.12.2009
Beiträge: 415
PHP-Kenntnisse:
Fortgeschritten
G.Schuster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Chriz Beitrag anzeigen
HTTP-Authentifizierung macht es ja auch ohne: einfach die Zugangsdaten immer mit im Header senden.
Was nicht heißt, dass das eine gute Idee ist.
Bedenkt man, dass sicherlich 90% der User ein Passwort für nahezu alle Seiten/sonstiges verwenden sollte man Passwörter - auch mit SSL - so selten wie möglich transferieren.

Zitat:
Zitat von Chriz Beitrag anzeigen
Einen Logout muss es dann auch nicht mehr geben
Hm?

Zitat:
Zitat von Chriz Beitrag anzeigen
du hast keinen Session-Timeout
Den kann man beliebig einstellen, erhöhen, verringern...also kein Argument.

Zitat:
Zitat von Chriz Beitrag anzeigen
du kannst User sofort aussperren
Mit z.B. einem DB-SessionHandler kein Problem.

Was ich recht praktisch finde (und auch erst so umgesetzt habe): Login mit Zugangsdaten, Session zuteilen, Client sendet die Session dann bei jedem Request als SOAP-Header mit.
Ich weiß jetzt nicht, wie das bei nuSoap ist, bei der PHP-Ext. jedenfalls wird für einen mitgesendeten Header eine Methode des gleichen Namens aufgerufen, bevor die eigentliche Methode ausgeführt wird.
Du könntest dir allgemein zum Thema WebService-Auth mal die WSS-Spezifikationen und das WSO-Framework (wso2.com) ansehen.
Es gab hier übrigens erst kürzlich einen Thread zu dem Thema
__________________
actra.development - Schwabstr. 2 - 70825 Münchingen
www.actra.de/velopment/ - eMail: php.de@actra.de
Zend Certified Engineer for PHP5
G.Schuster ist offline   Mit Zitat antworten
Alt 10.03.2011, 09:18  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.268
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von G.Schuster Beitrag anzeigen
Hm?
Was ist daran unverstaendlich? Wenn eine Session geoeffnet wird, sollte sie auch wieder geschlossen werden. Selbst ein Webservice bekommt das grade noch hin, oder?

Zitat:
Zitat von G.Schuster Beitrag anzeigen
Mit z.B. einem DB-SessionHandler kein Problem.
Das hab ich ja auch nicht gesagt. Ich meine nur, dass - fuer mich - die Summe der TODOs gegen Session-Handling spricht. Der einzige Nachteil den ich sehen kann ist, wie du schon angesprochen hast, das mehrmalige Verschicken des Passworts, was ich aber dank SSL als kein Problem ansehe.

Aber sicher, die Klasse waere ohne SSL dann nicht wirklich fuer den Einsatz zu empfehlen.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 10.03.2011, 09:26  
Erfahrener Benutzer
 
Registriert seit: 21.12.2009
Beiträge: 415
PHP-Kenntnisse:
Fortgeschritten
G.Schuster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Chriz Beitrag anzeigen
Was ist daran unverstaendlich? Wenn eine Session geoeffnet wird, sollte sie auch wieder geschlossen werden. Selbst ein Webservice bekommt das grade noch hin, oder?
Ich konnte dir nur einfach nicht folgen.
Was in meinen Augen allerdings noch _für_ Sessions spricht ist die Tatsache, _dass_ Sessions ablaufen.
D.h. gesniffte Zugangsdaten sind so lange gültig, bis sie geändert werden (sofern man den Standard-Weg geht), Sessions hingegen bringen einem Angreifer idR einige Stunden später schon nichts mehr.

Aber um bei deinem Ansatz zu bleiben und wieder auf die Diskussion aus dem letzten Thread zu kommen - sofern die PWs bei jedem Request mittels eines anderen Hashs (Nonce/Timestamp, siehe WSS UsernameToken) bekommen, die nach einer Benutzung gesperrt werden dürfte das auch relativ OK sein.
__________________
actra.development - Schwabstr. 2 - 70825 Münchingen
www.actra.de/velopment/ - eMail: php.de@actra.de
Zend Certified Engineer for PHP5
G.Schuster ist offline   Mit Zitat antworten
Alt 10.03.2011, 11:20  
Neuer Benutzer
 
Registriert seit: 09.03.2011
Beiträge: 8
PHP-Kenntnisse:
Anfänger
paos befindet sich auf einem aufstrebenden Ast
Standard

Wie ich sehe, ist die Antwort auf meine Frage gar nicht so einfach wie ich sie mir erhofft habe.

Ich bin auch der Meinung, dass Passwörter nur so oft wie eben wirklich notwendig übertragen werden sollten. Zudem würde diese Lösung ja weitere unnötige Datebankabfragen nach sich ziehen. Ein Session-Handling finde ich da auch praktischer.

Allerdings bin ich mir immer noch unsicher, wie man das jetzt wirklich realisiert. Gibt es zu diesem Thema ein kleines Tutorial oder ein Code-Snipplet.
paos ist offline   Mit Zitat antworten
Alt 10.03.2011, 20:22  
Erfahrener Benutzer
 
Registriert seit: 21.12.2009
Beiträge: 415
PHP-Kenntnisse:
Fortgeschritten
G.Schuster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Prinzipiell läuft das SessionHandling wie mit einer normalen Web-Applikation.
Einziger Unterschied ist die Art, wie die ID übertragen wird.
Entweder, du übergibst sie jedem Methodenaufruf z.B. als ersten Parameter - unschön, Fehleranfällig (vergessen); oder eben per Header.
Beispiele zum Senden von Headern findest du in der Doku: http://de.php.net/manual/de/soapheader.soapheader.php
Serverseitig muss dann in deiner Klasse einfach eine Methode existieren, die genauso heißt wie der Header, die wird dann automatisch aufgerufen, bevor die eigentlich gewünschte Methode ausgeführt wird (bezogen auf PHP-Ext, nuSOAP kenne ich nicht).
__________________
actra.development - Schwabstr. 2 - 70825 Münchingen
www.actra.de/velopment/ - eMail: php.de@actra.de
Zend Certified Engineer for PHP5
G.Schuster ist offline   Mit Zitat antworten
Alt 11.03.2011, 11:34  
Neuer Benutzer
 
Registriert seit: 09.03.2011
Beiträge: 8
PHP-Kenntnisse:
Anfänger
paos befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von G.Schuster Beitrag anzeigen
Prinzipiell läuft das SessionHandling wie mit einer normalen Web-Applikation.
Einziger Unterschied ist die Art, wie die ID übertragen wird.
Entweder, du übergibst sie jedem Methodenaufruf z.B. als ersten Parameter - unschön, Fehleranfällig (vergessen); oder eben per Header.
Beispiele zum Senden von Headern findest du in der Doku: http://de.php.net/manual/de/soapheader.soapheader.php
Serverseitig muss dann in deiner Klasse einfach eine Methode existieren, die genauso heißt wie der Header, die wird dann automatisch aufgerufen, bevor die eigentlich gewünschte Methode ausgeführt wird (bezogen auf PHP-Ext, nuSOAP kenne ich nicht).
Ok, danke für die Antworten! Ich werde wohl beim ersten beschriebenen Weg bleiben und das ggfls. später noch erweitern.
paos ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Session GC und Timeout nutcracker PHP Einsteiger 1 24.01.2011 19:32
[Erledigt] $_SESSION frage tomnar PHP Tipps 2010 24 09.11.2010 19:37
session variable verschwindet bei erneutem seitenaufruf david.a.p. PHP Tipps 2009 2 17.08.2009 16:07
SessionHandler - Sessions in einer Datenbank #Avedo Software-Design 11 04.05.2009 15:44
[Erledigt] Problem mit der übergabe einer Session ID Shinak PHP Tipps 2009 12 13.03.2009 14:30
Session nofear87 PHP Tipps 2008 8 05.11.2008 10:42
[Erledigt] Session Problem karina_02 PHP Tipps 2008 6 18.05.2008 22:37
Problem bei session Lifetime Cyberbob_at_tot PHP Tipps 2007 5 05.06.2007 17:47
session nach seitenwechsel leer... GELight PHP Tipps 2006 8 17.09.2006 15:17
[Erledigt] php session problem :( PHP Tipps 2005-2 5 21.10.2005 16:37
Session wird nicht angelegt PHP Tipps 2005-2 7 24.07.2005 13:35
Kreieren einer Session PHP Tipps 2005 11 28.05.2005 15:16
Session error nach Umstellung auf PHP 5 PHP Tipps 2005 15 13.05.2005 14:35
[Erledigt] Formulardaten in einer Session speichern, per Link übergeben PHP Tipps 2004-2 2 29.12.2004 15:47
[Erledigt] Hilfe...PhpBB Session Problem!! PHP Tipps 2004-2 2 15.12.2004 18:28

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
soap session, sessionhandling soap, nusoap session, sessionhendling soap, nusoap authentifizierung, wie greiere ich einen nonce soap, php nu, php nusoap per https, nusoap, webservice session handler, soap über http verschicken, webservice cookie soap, \soap via http(s)\, php session_handling soap, php soap session net, php soap https http-authentifizierung, soap webservice session handling, session php nusoap, soap mit session, php session variable bei soap

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:28 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum