[NUSOAP] Authentification

Authentification [NUSOAP] - PHP - Programmation

Marsh Posté le 14-04-2009 à 23:50:46    

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 :
 

Code :
  1. $soapclient = new soapclient($urlws);
  2. $soapclient->setCredentials("user","password" );


 ou

Code :
  1. $client = new SoapClient( $urlws,
  2.       array(  'trace'=>1,
  3.                 'exceptions'=>0,
  4.                 'login' => $login,
  5.                 'password' => $pass
  6.             )
  7. );


 
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  ?

Reply

Marsh Posté le 14-04-2009 à 23:50:46   

Reply

Marsh Posté le 15-04-2009 à 11:34:12    

Un gros +1, j'ai le même problème :'(

Reply

Marsh Posté le 15-04-2009 à 16:54:48    

Le plus sécurisé est de fournir les infos d'authentification par les headers SOAP.
Plus d'infos ici : http://techblog.bronto.com/brontot [...] psoap.html


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 15-04-2009 à 18:32:02    

Je suis pas contre. lol
J'ai déja essayé mais 'y a un truc que je dois mal faire (ou pas faire d'ailleurs) car ca change rien. Car sur le lien que tu m'as envoyé (que j'avais déjà vu ;)) il est question uniquement du coté client.
 
Mais j'imagine qu'il faut faire quelque coté serveur pour que les infos d'authentification par les headers SOAP soient interprétés.
 
Il dit :

Code :
  1. //Assume a header of complexType "session" in namespace "http://namespace" containing a single element "id" (Document/Literal)


Moi j'ai besoin d'un couple login/mdp donc y aura 2 éléments dans mon complexType.
J'ai posé donc coté serveur :  

Code :
  1. $s->wsdl->addComplexType(
  2.     'session',
  3.     'complexType',
  4.     'struct',
  5.     'all',
  6.     '',
  7.     array(
  8.  'login' => array('name'=>'login','type'=>'xsd:string'),
  9.  'mdp' => array('name'=>'mdp','type'=>'xsd:string')
  10. )
  11. );


et coté client j'ai :  

Code :
  1. $chemin="http://www.mondomain.fr/serveur.php?wsdl";
  2. $namespace="urn:monws";
  3. //ca, le namespace, je suis pas sur que ce soit correct.
  4. $soapclient = new nusoap_client($chemin,true);
  5. $session_header = "<session xmlns=\"".$namespace."\"><login>monlogin</login><mdp>monmotdepasse</mdp></session>";
  6. $soapclient->setHeaders($session_header);


Mais il se passe rien (j aurai limité préféré avoir un bon gros message d erreur histoire d avancer)
Le point qui me manque est comment dire a mon serveur que quand un client "arrive" il faut checker s'il est autorisé à l'utiliser. (enfin en partant de l'hypothèse j'ai pas écrit de connerie au dessus)


Message édité par Yanlaz le 15-04-2009 à 18:34:31
Reply

Marsh Posté le 18-04-2009 à 09:10:40    

Côté client, tu envoies donc le couple login / mot de passe, ce sont les "credentials", et côté serveur il faut utiliser un .htaccess avec le même couple login / mot de passe.
Tu peux trouver des générateur de .htaccess sur le net très facilement.
 
Lionel.


---------------
On dit que les gens veulent du travail, mais c'est faux ! Etre payé leur suffirait !
Reply

Marsh Posté le 19-04-2009 à 19:24:09    

En fait j'ai trouvé une autre solution avec les headers mais je testerai avec l htaccess histoire de voir ce qui me convient le mieux

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed