Bonjour
Je cherche la methode la plus simple pour creer pour recuperer et verifier un user / pasword dans un webservice que je viens de mettre en place
Le WEB service doit pouvoir etre consomé par des client PHP ou autre
Merci
Version imprimable
Bonjour
Je cherche la methode la plus simple pour creer pour recuperer et verifier un user / pasword dans un webservice que je viens de mettre en place
Le WEB service doit pouvoir etre consomé par des client PHP ou autre
Merci
Salut Olibara,
Dans la méthode du WebService que tu consomme tu peux ajouter ceci dans "[WebMethod]":
Et ensuite utiliser l'objet "Session". Je ne sais si cela répond à ton besoin???Code:
1
2
3 [WebMethod (EnableSession=true)] .....
Cédric
Bonjour Cedric B
Si je fais ce que tu propose quel est le protocole du coté client ?
Le protocol client était http, meis peut être qeu cela fonctionne aussi avec https???
Cédric
Bonjour
Au plus je cherche de l'info au plus j'en trouve de tonnes 8O et il y en a tellement que je ne parviens pas a discerner ce qu'il faut faire de maniere SIMPLE :roll:
La premiere fois que j'ai eu a utiliser un WebService, c'etait en tant que client
Le principe etait asser simple, la classe du service disposait d'un Attribut Credential
et pour pouvoir utiliser le service j'assignais
Ma question de full debutant en création de WebService, c'est que faut il faire et declarer au niveau de la création du service pour exploiter ce type de credential de la maniere LA PLUS SIMPLE pour commencer !Code:MonClient.Credential=new NetworkCredential("User","Pasword");
Le but n'est pas de proteger le patrimoine de l'humanité mais de voir simplement comment ca marche avant de faire plus compliqué !
Merci de votre aide !
Pour donner plus d'info sur la definition actuelle des methode de mon service, voici l'interface
Merci a tout ceux qui auraient une petite piste pour creer une authentification pour mon service !!Code:
1
2
3
4
5
6
7
8
9
10
11
12 [ServiceContract] public interface IPap { [OperationContract] List<Contracts.Messages.PAP_MobilePhoneBrand> GetListBrand(); [OperationContract] List<Contracts.Messages.PAP_MobilePhoneModel> GetListModel(); [OperationContract] PAP_Price GetPriceByHRK(string HRK,string HQ,string Shop); [OperationContract] List<PAP_Price> GetPriceList(string HQ,string Shop); }
Salut Olibara,
Bon, pour ma part je n'avais pas utiliser cette façon de faire! Comme dit plus haut, j'avais utiliser l'objet Session avec lequel, j'utilisait pour identifier mon acheteur et de conserver les infos liées à son panier à commission, ainsi lorsqu'il ajoutait quelque chose dans son panier il ne s'identifiait que le premier fois!
Par rapport ton web Service, utilises-tu une classe proxy en c# à partir du résultat WSDL de son ton Service Web?
Cédric
Dans mon cas, le Service Web Client était écrit dans un autre language que c# et afin d'avoir un message soap conforme, une des manière était de créer une classe proxy avec wsdl.exe et csc.exe sur ce service Web.
Ensuite j'ai ajouter un référence à cette classe dont certains éléments ressemblait aux tiens:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 [ServiceContract] public interface IPap { [OperationContract] List<Contracts.Messages.PAP_MobilePhoneBrand> GetListBrand(); [OperationContract] List<Contracts.Messages.PAP_MobilePhoneModel> GetListModel(); [OperationContract] PAP_Price GetPriceByHRK(string HRK,string HQ,string Shop); [OperationContract] List<PAP_Price> GetPriceList(string HQ,string Shop); }
J'avais aussi un élément credential du style:
Voilà pourquoi je t'ai posé cette question. Mais peut être que tu fais autremet!Code:
1
2
3
4 ... inf.context.user.credentials = new Credentials(); ...
Cédric
Non pour le moment je n'ai encore rien réussi a faire avec ce foutu ClientCredential :roll::aie:
Mon service serveur tourne parfaitement
Le client fonctionne a merveille
Mais pour ma part je n'ai encore rien compris a la maniere d'associer un credential a une session
Et comme malheureusement je suite vite enervé quand les chose ne sont pas clairement expliiquées j'ai laissé ca en attente
J'ai l'exemple d'un web service en http (que je n'ai pas écrit moi-meme) et que je consomme de la maniere suivante
Mais personne n'a encore pu me dire comment on peut declarer ce type de service au niveau serveur afin d'instancier un NetWorkcredential et l'utiliser ! :calim2:Code:
1
2 GeoService GeoClient = new GeoService(); soapcl.Credentials = new NetworkCredential("user", "pass");
Si quelqu'un dispose d'informations, merci de les signaler au post le plus proche :)
Salut Olibara,
Pour mettre ton objet, par exemple "soapcl", dans l'objet tu peux faire comme ceci:Citation:
Mais pour ma part je n'ai encore rien compris a la maniere d'associer un credential a une session
Et pour savoir si on ton client s'est déjà connecté déjà tu vas rechercher "soapcl" dans "Session" comme cela:Code:
1
2
3
4 ... Session.Add("sopacl", soapcl); ...
si soapcl est null, c'set que l'user n'est pas encore connecté et s'il n'est pas nul, c'est qu'il est connecté.Code:
1
2
3
4 ... SOAPCL soapcl = (SOAPCL)Session["soapcl"]; ...
Est-ce cela peut te donner des idées et répondre à tes attentes?
Cédric
Merci Cedric
Tout d'abord j'ai fais une petite erreur de couper / colller
Dans mon exemple je fais
Mais ca c'est du coté client et ca marche tres bienCode:
1
2 GeoService GeoClient = new GeoService(); GeoClient.Credentials = new NetworkCredential("user", "pass");
Et la classe du service est GeoService
Mon problème c'est comment gerer ca au niveau Serveur ??
Pour cela il ne s'agit plus de géoservice mais d'un autre service que je cree moi meme
L'exemple que je t'ai donné est aussi valable du côté serveur. L'objet Session dans mon Webervice "GeoService()"!Citation:
Mon problème c'est comment gerer ca au niveau Serveur ??
Si j'ai bien compris ton but est de savoir si ton client s'est déjà connecté au Service Web "GeoService" ou non!
Est-ce juste ou non???
Cédric
Est-ce juste ou non???
Juste
D'une maniere générale en me basant sur le comportement de GeoService, j'aimerais que mon service actuel disons NewService ne puisse executer les requetes que si le client est correctement identifié
Ca implique effectivement a mon avis une notion de "Session" au niveau serveur qui a chaque appel de methode verifie si on utilise le bon user
Bon, dans mon cas, j'avais utilsé "Session" dans le gestion d'un caddie.
A chaque appel de ta méthode dans "NewService" tu vérifie si dans l'objet Session (comment indiqué plus hant) si ton utilisateur s'est identifié ou non. S'il ne s'est pas identifié tu le rediriger vers un formulaire aspx par exemple ou autre où il s'identifie et une fois qu'il s'est identifié, tu mets l'identification de ton user dans l'objet "Session".
As-tu déjà essayer et cela résoud-t-il ton problème?
Cédric
Merci Cedric
Je vais essayer cela dés que j'ai 1 petite heure devant moi merc
Salut Olibara,
Alors quel est le résultat de ton essai pour username et password?
Cédric
Salut Cedric
En definitive j'ai utilisé une Classe dérivée de UserNamePasswordValidator et il faut bricoler le config pour lui spécifier d'utiliser le validator
Code:
1
2
3
4
5
6
7
8
9
10 <serviceBehaviors> <behavior name="YRServiceBehaviors" > <serviceMetadata httpGetEnabled="true" /> <serviceCredentials> <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="YRCredentialValidator.Validator, YRCredentialValidator" /> </serviceCredentials> </behavior> </serviceBehaviors> </behaviors>
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IdentityModel.Selectors; using System.IdentityModel.Tokens; namespace YRCredentialValidator { public class Validator : UserNamePasswordValidator { public override void Validate(string userName, string password) { if (userName == null || password == null) { throw new ArgumentNullException(); } } } }