Servus miteinander,
ich mache mir gerade Gedanken über die Implementierung eines REST, bzw. REST-artigen Webservices in PHP, bzw. einer damit verbundenen Benutzerauthentifizierung.
Nehmen wir beispielweise an, Clients können über einen Webservice
mit der Übergabe von zwei Suchparametern und der Kundennummer eine Liste von Produkten (o.ä) abrufen.
1. HASHWERT
-----------------
Meine Idee zur Authentifizierung des Kunden, bzw. der Echtheit der Anfrage einen MD5-Hashwert der Suchparameter mitzusenden.
Dieser wird auf der Clientseite mit
generiert. Wobei der PRIVATE_KEY sowohl auf der Serverseite, als natürlich auch beim Client bekannt ist.
2. SESSION
--------------
Eine andere Möglichkeit wäre ein Login-Webservice anzubieten, und die weiteren relevanten Webservices über diese Session dann entsprechend schützen.
Zwar würde der zweite Ansatz über Sessions der eigentlichen REST-Philosophie (wie auch die URL und die Parameterübergabe) widersprechen - daher formulierte ich auch REST-artig. Hauptsächlich geht es mir um einen praktikablen Ansatz ohne viel Overhead.
Was haltet ihr von obigen Ansätzen? Beziehungsweise würdet ihr andere Ansätze/Lösungen bevorzugen?
Bin gespannt auf euere Meinungen
Markus
ich mache mir gerade Gedanken über die Implementierung eines REST, bzw. REST-artigen Webservices in PHP, bzw. einer damit verbundenen Benutzerauthentifizierung.
Nehmen wir beispielweise an, Clients können über einen Webservice
PHP-Code:
GET http://webservice.irgendwo.de/?uid=xyz¶m1=xyz¶m2=xyz
1. HASHWERT
-----------------
Meine Idee zur Authentifizierung des Kunden, bzw. der Echtheit der Anfrage einen MD5-Hashwert der Suchparameter mitzusenden.
PHP-Code:
GET http://webservice.irgendwo.de/?uid=xyz¶m1=xyz¶m2=xyz&hash=HASHWERT
PHP-Code:
define('PRIVATE_KEY', 'xyz');
$hash = md5($uid.$param1.$param2.PRIVATE_KEY);
2. SESSION
--------------
Eine andere Möglichkeit wäre ein Login-Webservice anzubieten, und die weiteren relevanten Webservices über diese Session dann entsprechend schützen.
Zwar würde der zweite Ansatz über Sessions der eigentlichen REST-Philosophie (wie auch die URL und die Parameterübergabe) widersprechen - daher formulierte ich auch REST-artig. Hauptsächlich geht es mir um einen praktikablen Ansatz ohne viel Overhead.
Was haltet ihr von obigen Ansätzen? Beziehungsweise würdet ihr andere Ansätze/Lösungen bevorzugen?
Bin gespannt auf euere Meinungen
Markus
EDIT:
Übrigens, wird der angedachte Webservice nachher in einem Bereich eingesetzt, in dem die Daten nicht unbedingt sensibel, etc. sind. Es geht mir einfach darum, dass nicht jeder x-Beliebige Anfragen an den Webservice stellen kann und natürlich auch um ein gewisses Mitprotokollieren der Anfragen