Soap avec authentification

Signaler
Messages postés
17
Date d'inscription
mercredi 9 mars 2005
Statut
Membre
Dernière intervention
13 janvier 2006
-
Messages postés
3
Date d'inscription
vendredi 10 octobre 2008
Statut
Membre
Dernière intervention
4 mai 2011
-
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

Messages postés
273
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
6 février 2009
1
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.
Messages postés
17
Date d'inscription
mercredi 9 mars 2005
Statut
Membre
Dernière intervention
13 janvier 2006

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.
Messages postés
273
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
6 février 2009
1
Je ne connaissait pas, mais vas voir ici il y a un exemple

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

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.
Messages postés
273
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
6 février 2009
1
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.
Messages postés
17
Date d'inscription
mercredi 9 mars 2005
Statut
Membre
Dernière intervention
13 janvier 2006

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.
Messages postés
1
Date d'inscription
mardi 21 mars 2006
Statut
Membre
Dernière intervention
21 mars 2006

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 ...)
Messages postés
10
Date d'inscription
mercredi 24 novembre 2004
Statut
Membre
Dernière intervention
19 juin 2010

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.
Messages postés
3
Date d'inscription
vendredi 10 octobre 2008
Statut
Membre
Dernière intervention
4 mai 2011

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.