Authentification à un webservice via header SOAP (nusoap)

Authentification à un webservice via header SOAP (nusoap) - PHP - Programmation

Marsh Posté le 15-10-2008 à 10:40:54    

Coucou [:dawa]
 
Premier topic dans la cat PHP, ça se fête [:kadreg]
 
Bon alors mon problème est tout con [:god]
 
J'ai un webservice en C#, mais j'ai pas envie que tout le monde y accède (faut pas déconner non plus [:dawao]). Donc, j'ai eu la bonne idée d'implémenter une authentification par les headers SOAP. Du coup, tout client qui veut s'y connecter est obligé de m'envoyer ses infos dans les headers SOAP, et c'est moi qui valide ou pas son entrée [:kbchris]
 
Passons maintenant au gusse qui veut accéder à mon joli webservice : il utilise un client PHP avec l'extension nusoap. Or, moi je sais parfaitement insérer des infos dans le header SOAP en C#, mais je n'ai aucune idée de comment on le fait en PHP avec nusoap, donc je m'en remets aux experts de tout poil qui hantent cette cat d'élite [:prosterne]
 
Donc ma question toute conne : comment je fais (ou plutot comment mon collègue fera, j'anticipe) pour insérer des infos dans le header SOAP en PHP5 avec l'extension nusoap ?
 
Merci les loulous [:dawa]


Message édité par Harkonnen le 15-10-2008 à 12:34:48

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

Marsh Posté le 15-10-2008 à 10:40:54   

Reply

Marsh Posté le 15-10-2008 à 10:45:24    

RTFM noob
http://www.beanizer.org/site/index [...] Proxy.html

Spoiler :

[:cupra]

 

sinon, j'avais utilisé ca la derniere fois que j'ai eu a me battre avec soap

Code :
  1. $client = new SoapClient(    "http://192.6.1.10:8080/rh_test/services/Boite_A_Tache?wsdl" ,
  2.                             array(    'trace'=>1,
  3.                                     'exceptions'=>0,
  4.                                     'login' => $login,
  5.                                     'password' => $pass
  6.                                 )
  7.                         );


Message édité par flo850 le 15-10-2008 à 10:49:49

---------------

Reply

Marsh Posté le 15-10-2008 à 11:03:35    

oué mais ça, ça transmet bien toutes les infos dans le header SOAP ? t'es sur ?
dans mon webservice C#, j'ai une classe CredentialHeader :

Code :
  1. public class CredentialHeader : SoapHeader
  2.    {
  3.        string _userName;
  4.        string _password;
  5.  
  6.        public string Password
  7.        {
  8.            get { return _password; }
  9.            set { _password = value; }
  10.        }
  11.  
  12.        public string UserName
  13.        {
  14.            get { return _userName; }
  15.            set { _userName = value; }
  16.        }
  17.        
  18.        public CredentialHeader()
  19.            : base()
  20.        {
  21.        }
  22.  
  23.        public CredentialHeader(string user, string pass)
  24.        {
  25.            this._userName = user;
  26.            this._password = pass;
  27.        }
  28.  
  29.    }
 

puis, dans les méthodes exposées de mon webservice, j'ai rajouté ceci en métadonnée (ligne 4):

Code :
  1. public CredentialHeader Authentication;
  2.  
  3. [WebMethod(CacheDuration = 30)]
  4. [SoapHeader("Authentication" )]
  5. public string GetTypeOfAttachedFile(string xml)
  6. {...}
 

du coup, le gars qui veut accéder à la méthode GetTypeOfAttachedFile() est obligé de me fournir les infos suivantes dans le fichier XML correspondant à sa requête SOAP :

Code :
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <soap:Header>
  3.  <CredentialHeader xmlns="http://www.ilist5.com/">
  4.    <UserName>tugludu</UserName>
  5.    <Password>phpisl33tz</Password>
  6.  </CredentialHeader>
  7. </soap:Header>


et dans ton code, je vois pas comment lui spécifier la balise CredentialHeader (correspondant à l'objet utilisé pour s'authentifier dans mon code C#)

 

'scuse ma n00bité hein [:god]


Message édité par Harkonnen le 15-10-2008 à 11:04:21

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

Marsh Posté le 15-10-2008 à 11:18:13    

cf la doc qu'il a mise en lien, c'est fait pour des type d'identification "standard", pas pour ton truc bidouillé.[:petrus75]


Message édité par skeye le 15-10-2008 à 11:18:47

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-10-2008 à 11:25:47    

les headers SOAP, une bidouille ?  [:mlc]
c'est la méthode la plus propre et la plus secure pour s'identifier auprès d'un webservice :o
dégage de ce topic, et profites en pour lire ceci, n00b : http://www.codeproject.com/KB/cpp/ [...] vices.aspx
 
dans cette page, il y a le passage suivant :

Citation :

Basically all the client needs to do is create an authentication object, fill out the username and password, then pass them to the web service object. The web service code is also pretty simple, the .NET framework lets you create custom SOAP headers by deriving from the SoapHeader class, so we wanted to add a username and password:


 
et moi je veux juste savoir comment créer cet objet en PHP, rien de plus [:dawao]
(ou comment obtenir l'équivalent, le but étant de m'envoyer la requête SOAP avec les infos que j'ai écrit plus haut, peu importe le moyen)
 
tu es indigne de cette cat, file donc t'instruire et laisse répondre l'élite [:kiki]


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

Marsh Posté le 15-10-2008 à 11:27:04    

Au passage, pourquoi nusoap alors qu'il y a des trucs fournis avec php?
Parce-que si je lis bien la doc là http://fr3.php.net/manual/fr/funct [...] apcall.php il y a moyen de faire un appel en spécifiant des headers spécifiques...[:petrus75]

Message cité 1 fois
Message édité par skeye le 15-10-2008 à 11:27:22

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-10-2008 à 11:30:16    

skeye a écrit :

Au passage, pourquoi nusoap alors qu'il y a des trucs fournis avec php?


parce qu'on a commencé le projet sur une version de PHP qui n'intégrait pas SOAP (merci OVH [:kiki]], on a donc du utiliser nusoap. et on a pas trop le temps de tout réécrire :o
 
bon sinon, y'a pas des intervenants de qualité sur cette cat d'habitude ? parce que là c'est la foire à neuneu hein [:mlc]


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

Marsh Posté le 15-10-2008 à 11:31:11    

nan , mais sérieusement, pourquoi ne pas utiliser un truc standard ( au sens de standard dans tous les langages ) ?  genre une simple basic authitification ?

 

sinon,avec ton truc bidouillé,  ça va etre un poil plus désagréable à faire

 

http://techblog.bronto.com/brontot [...] psoap.html

Citation :

Header support in PHP-SOAP is much better than NuSOAP.  In NuSOAP, you had to manually generate the XML.

Message cité 1 fois
Message édité par flo850 le 15-10-2008 à 11:32:50

---------------

Reply

Marsh Posté le 15-10-2008 à 11:39:28    

flo850 a écrit :

nan , mais sérieusement, pourquoi ne pas utiliser un truc standard ( au sens de standard dans tous les langages ) ?  genre une simple basic authitification ?  


parce qu'on veut un truc le plus secure possible :o
 

flo850 a écrit :


sinon,avec ton truc bidouillé,  ça va etre un poil plus désagréable à faire  
 
http://techblog.bronto.com/brontot [...] psoap.html

Citation :

Header support in PHP-SOAP is much better than NuSOAP.  In NuSOAP, you had to manually generate the XML.



ah ben voilà [:god]
ça fera la bite à mon collègue, il est un peu trop habitué au PHP "pur", ça lui fera pas de mal de tater un peu ce genre de truc :D
et puis bon, c'est pas la lune non plus hein, un truc du style :

Code :
  1. $auth_header = "<CredentialHeader xmlns=\"http://www.ilist5.com\"><username>toto</username><password>tugludu</password></CredentialHeader>";
  2. $Binding->setHeaders($auth_header);


pas de quoi casser 3 pattes à un canard :o
 
merci bien gros [:god]


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

Marsh Posté le 15-10-2008 à 11:41:34    

pense a ajouter l'echappement de certains caractères lors de la génération du xml, sinon, ca va pas etre très secure  
 
 


---------------

Reply

Marsh Posté le 15-10-2008 à 11:41:34   

Reply

Marsh Posté le 15-10-2008 à 11:44:18    

Harkonnen a écrit :

et on a pas trop le temps de tout réécrire :o


 
S'il s'agit juste de changer de client soap, dans une appli bien codée ça devrait poser aucun problème.:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-10-2008 à 11:49:24    

flo850 a écrit :

pense a ajouter l'echappement de certains caractères lors de la génération du xml, sinon, ca va pas etre très secure  
 
 


c'est pas moi qui vais m'en occuper mais je transmettrais :jap:
 

skeye a écrit :


 
S'il s'agit juste de changer de client soap, dans une appli bien codée ça devrait poser aucun problème.:o


on le fera, c'est clair, mais pour l'instant il faut parer au plus pressé, Moktar nous a collé une deadline intenable [:petrus75]


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

Marsh Posté le 15-10-2008 à 11:52:45    

pète lui les jambes [:proy]


---------------

Reply

Marsh Posté le 15-10-2008 à 12:06:47    

Harkonnen a écrit :


on le fera, c'est clair, mais pour l'instant il faut parer au plus pressé, Moktar nous a collé une deadline intenable [:petrus75]

 

Bah t'es sûr qu'une génération manuelle du xml sera pas aussi/plus longue à faire?:o


Message édité par skeye le 15-10-2008 à 12:06:54

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-10-2008 à 12:08:34    

ben t'as vu ce qu'il y a à générer ? mon collègue à la limite n'aura juste qu'à faire un copier/coller de ce que j'ai écrit plus haut :spamafote:


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

Marsh Posté le 15-10-2008 à 12:13:47    

Harkonnen a écrit :

ben t'as vu ce qu'il y a à générer ? mon collègue à la limite n'aura juste qu'à faire un copier/coller de ce que j'ai écrit plus haut :spamafote:


oui enfin la classe soapclient de nusoap et celle fournie sont quasiment identiques de ce que j'en vois...la boulot doit pas être monstrueux.[:petrus75]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-10-2008 à 12:16:02    

euh ouais, mais y'a l'interface chaise-clavier aussi [:petrus75]


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

Marsh Posté le 15-10-2008 à 12:38:09    

Harkonnen a écrit :

euh ouais, mais y'a l'interface chaise-clavier aussi [:petrus75]


On sent que tu fais confiance aux collègues, c'est bien.[:petrus75]


---------------
Can't buy what I want because it's free -
Reply

Sujets relatifs:

Leave a Replay

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