[NuSOAP] Comment gérer l'authentification à mon webservice ?

Petit nouveau ! | 2 Messages

15 avr. 2009, 18:42

Hello,

je me suis récemment mis à soap et plus particulièrement à nusoap. J'ai quasiment résolu tous mes soucis, le wsdl, les complexType...
Un seul point me reste sur les bras : la gestion de l'authentification afin de restreindre l'accès à mon webservice.

D'après ce que j'ai capté coté client, il semble y avoir 2 solutions :
   $soapclient = new soapclient($urlws);
   $soapclient->setCredentials("user","password" );

ou
$client = new SoapClient( $urlws,
       array(  'trace'=>1,
                 'exceptions'=>0,
                 'login' => $login,
                 'password' => $pass
             )
);
Je sais aussi qu'on peut faire par les headers SOAP
Coté client ca donnerait :
$namespace="urn:monws";
//ca, le namespace, je suis pas sur que ce soit correct.
$soapclient = new nusoap_client($chemin,true);
$session_header = "<session xmlns=\"".$namespace."\"><login>monlogin</login><mdp>monmotdepasse</mdp></session>";
$soapclient->setHeaders($session_header);

Par contre coté serveur, j'ai pas trouvé où/comment on faisait la vérif du couple login/mot de passe :?
Une idée, une explication ? Parce que j'ai beaucoup cherché, j'ai essayé de me documenter sur ce point mais mes recherches ont malheureusement été vaines et dans mon entourage (ou il y a plutot pas mal de dev web) personne n'a pu me fournir une solution

ViPHP
ViPHP | 3300 Messages

15 avr. 2009, 19:35

le serveur peut ne pas maintenir d'authentification, il suffit de faire le travail côté client, d'avoir une fonction d'auth côté serveur, et de passer le login a toutes transactions ultérieures. c'est ce qui est le plus classique sans être parfait niveau sécu.
Fait du php depuis que ca existe ou presque :)

Petit nouveau ! | 2 Messages

15 avr. 2009, 21:44

Donc d'après toi, faut passer le couple mdp/login dans dans chaque call et de vérifier dans chaque méthode de mon web service le login /mdp ?

Mais setcredential, ca sert à quoi alors ?
Je trouve étrange de voir des éléments d'authentification dans des script de client WS mais que cela ne soit pas implémentable coté Serveur.

J'ai eu une idée (peut etre débile ou irréalisable) : ca serait de surcharger les constructeurs des classes soapclient ou/et soapserver pour le permettre mais je vois pas comment m'y prendre (ni meme si c'est réellement réalisable)

ViPHP
ViPHP | 4674 Messages

18 avr. 2009, 13:50

Hey :-),

Je n'ai lu que en diagonal mais j'ai plusieurs remarques.

Pourquoi SOAP et pas plutôt XML-RPC ? Au moins c'est standard, et c'est moins compliqué (à puissance égale) …

Au lieu de gérer une authentification compliquée, pourquoi ne pas passer par un protocole SSL ? Au pif : HTTPS. Ça fonctionne toujours avec XML-RPC forcément, et l'authentification est déjà prise en compte. Et t'as même droit à un cryptage contre les man in the middle ;-).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).