Soap avec authentification

cs_hmurielle Messages postés 17 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 13 janvier 2006 - 12 janv. 2006 à 10:05
abduzed Messages postés 3 Date d'inscription vendredi 10 octobre 2008 Statut Membre Dernière intervention 4 mai 2011 - 31 mars 2010 à 22:18
Bonjour à tous,

Je débute totalement en web service. Comment code-t-on dans c# .net pour donner le login et mot de passe à Soap pour pouvoir accéder au web service ? Je vous remercie.

9 réponses

zebobo5 Messages postés 273 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 6 février 2009 1
12 janv. 2006 à 10:19
Salut

Le plus simple est de demander le login et mot de passe dans les méthodes, exemple :

/// <summary>
/// Récupère la liste des villes correspondant à un code postal
/// </summary>
/// login d'autorisation

/// password d'autorisation

/// code postal

/// liste des villes retournées

/// <returns></returns>
public bool getVilleFromCP(string login, string pwd, string codepostal, out string[] villes)
{
if(login et pwd OK)
{
//traitement
//villes =

return true;
}
else
{
return false;
}
}

<hr>ZeBobo5
N'oubliez pas de cloturer votre post.
0
cs_hmurielle Messages postés 17 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 13 janvier 2006
12 janv. 2006 à 11:48
Bonjour,

Voilà, j'ai un client qui met à ma disposition ses web-services pour tester avant d'attaquer les vrais. Donc je développe de mon côté la partie cliente, en .Net c#. Tant que les web services ne demandent pas login et pwd, ça roule mais qd ils veulent une authentification, là je ne sais pas où mettre mon login et pwd pour leur donner. Il n'est pas question d'interface où je peux entrer , taper à la main, login et pws dans un textbox. Tout doit se faire de façon automatique, bon même si j'écris en dur pour l'instant login et pwd. Mais justement je les passe où mes infos.


private
void butCalculator_Click(
object sender, System.EventArgs e)


{


CalculatorAuth.CalculatorAuthService calc1 =
new WindowsApplication1.CalculatorAuth.CalculatorAuthService() ;


richTextBox1.Text = "Calc auth : " + calc1.add(10,7).ToString() ;


calc1 =
null ;


}

( le test est très bête, il s'agit d'une addition). Et donc dans cette partie, avant de faire


richTextBox1.Text = "Calc auth : " + calc1.add(10,7).ToString() ;

je pense qu'il faut que je fournisse login et pwd, mais de quelle façon ? le service calc1 n'a de propriété UserName, Pwd par exemple. J'ai essayé de passer par Credentials, mais ça plante qd mm. J'ai cru comprendre qu'il fallait utiliser SoapHeader mais je ne sais pas comment. Si qq1 pouvait me donner le bout de code qui utilise SoapHeader, ça m'aiderait beaucoup. Merci à vous.
0
zebobo5 Messages postés 273 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 6 février 2009 1
12 janv. 2006 à 11:53
Je ne connaissait pas, mais vas voir ici il y a un exemple

<hr>ZeBobo5
N'oubliez pas de cloturer votre post.
0
cs_hmurielle Messages postés 17 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 13 janvier 2006
12 janv. 2006 à 13:30
Bonjour,

Je te remercie pour cet exemple. J'en trouvé de semblable en faisant des recherches, mais malheureusement, je ne suis pas du côté création du web services où je devrais mettre des sécurité, mais du côté client où je dois programmer pour y accéder. Donc j'aurais beau mis des SoapHeaders dans mon programme client sur le même modèle que l'exemple cité, si du côté web services les développeurs n'ont pas fait de cette façon, ça coincidera pas. Du coup suis-je obligée de demander à mon client de me donner leurs codes, pour voir comment ils ont fait ?? ça devrait être transparent pourtant.

Je ne clos pas encore cette discu, en espérant encore des aides de votre part. Merci bien.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zebobo5 Messages postés 273 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 6 février 2009 1
12 janv. 2006 à 14:19
Sinon, tu demande un code à ton client avant de lancer ton acces au webservice.
A toi de voir où tu enregistres les codes coté client

<hr>ZeBobo5
N'oubliez pas de cloturer votre post.
0
cs_hmurielle Messages postés 17 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 13 janvier 2006
13 janv. 2006 à 13:07
Bonjour,

mon client m'a envoyé un exemple de message soap lors de la requête :

============
Listen Port: 1234
Target Host: 127.0.0.1
Target Port: 8080
== Request ====
POST /sigemstest/services/CalculatorAuth HTTP/1.0
Content-Type: text/xml; charset=utf-8
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: Axis/1.1
Host: 127.0.0.1
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: ""
Content-Length: 420
Authorization: Basic ZG9uYYYY06MTIz


<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
http://schemas.xmlsoap.org/soap/encoding/">
<op1 xsi:type="xsd:int">7</op1>
<op2 xsi:type="xsd:int">2</op2>

</soapenv:Body>
</soapenv:Envelope>



== Response ====
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Connection: close
Date: Tue, 23 Mar 2004 16:04:40 GMT............

et l'authentification est contenue dans le header non pas de enveloppe soap proprement dite mais du http : Authorization: Basic ZG9uYYYY06MTIz

Connaîtriez-vous un moyen d'insérer un en tête http dans un message soap en c# dotnet s'il vous plaît ?

et supposons que je devrais refaire ce genre de message (quitte à tapez tout à la main), comment je pourrais faire pour envoyer ce texte au web service ? Je vous remercie.
0
polletfa Messages postés 1 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 21 mars 2006
21 mars 2006 à 14:22
Il me semble avoir reussi a faire ce que tu cherches (enfin ... cherchais ... depuis le temps ...) ... j'avais a vrai dire le meme probleme.
la solution avec dotNet est simple :

soit WSproxy une instance de ta classe proxy (generee par dotNET) :
NetworkCredential cred = new NetworkCredential(username, password);
WSproxy.Credentials = cred;

c'est pas plus complique que ca ...
si la methode d'authentification utilisee est Basic, le mot de passe circule cependant en clair sur le Web (enfin ... encode en Base64 ou je ne sais quoi ... mais en tout cas la requete peut etre interceptee et utilisee pour contacter le serveur ... donc niveau securite cest pas terrible ...) je pense que ca marche aussi avec la methode digest mais je n'ai pas essaye (le service web que jessaie de contacter utilise la methode basic ...)
0
sebkill25 Messages postés 10 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 19 juin 2010
20 juil. 2009 à 09:16
Bonjour,

Je sais que cette discussion est vieille mais peut être que quelqu'un la suit encore.

Je doit consommer un Web Service en C# .Net qui me demande une authentification dans le header de ma requête SOAP et je n'ai rien trouvé pour fournir les paramètres d'authentification.

Je précise que je ne suis pas serveur Web Service et que je ne contrôle donc pas le serveur Web Service. Je suis simple client qui doit le consommer.

Si quelqu'un à une idée pour passer dans le HEADER des paramètres de la requête SOAP.
0
abduzed Messages postés 3 Date d'inscription vendredi 10 octobre 2008 Statut Membre Dernière intervention 4 mai 2011
31 mars 2010 à 22:18
Le forum m'as beaucoup aider a assimiler de  nombrux astuces en vb et en c# et surtout ceux qui ont relation avec les projets.
0
Rejoignez-nous