IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Discussion :

Creer user password dans un WebService


Sujet :

Services Web

  1. #1
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut Creer user password dans un WebService
    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

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 351
    Par défaut
    Salut Olibara,

    Dans la méthode du WebService que tu consomme tu peux ajouter ceci dans "[WebMethod]":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [WebMethod (EnableSession=true)]
    .....
    Et ensuite utiliser l'objet "Session". Je ne sais si cela répond à ton besoin???

    Cédric

  3. #3
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Bonjour Cedric B

    Si je fais ce que tu propose quel est le protocole du coté client ?

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 351
    Par défaut
    Le protocol client était http, meis peut être qeu cela fonctionne aussi avec https???

    Cédric

  5. #5
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Citation Envoyé par Cédric B. Voir le message
    Le protocol client était http, meis peut être qeu cela fonctionne aussi avec https???
    Excuse moi

    Je parlais du protocole logique ....
    Que doit faire le client pour s'authentifier ?

    Mon service dispose de 4 methodes

    Imaginons qu'il l'utilise en PHP
    Comment doit (devrait) -il faire ?

  6. #6
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Bonjour

    Au plus je cherche de l'info au plus j'en trouve de tonnes et il y en a tellement que je ne parviens pas a discerner ce qu'il faut faire de maniere SIMPLE

    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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonClient.Credential=new NetworkCredential("User","Pasword");
    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 !

    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 !

  7. #7
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Pour donner plus d'info sur la definition actuelle des methode de mon service, voici l'interface

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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);
      }
    Merci a tout ceux qui auraient une petite piste pour creer une authentification pour mon service !!

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 351
    Par défaut
    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

  9. #9
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Citation Envoyé par Cédric B. Voir le message
    Salut Olibara,
    Par rapport ton web Service, utilises-tu une classe proxy en c# à partir du résultat WSDL de son ton Service Web?
    Salut,
    Je ne comprends pas bien la question ?

    Au niveau du client C#, j'ajoute une référence de service en donnant l'adresse du service ?wsdl, la classe est générée automatiquement

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 351
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    inf.context.user.credentials = new Credentials();
    ...
    Voilà pourquoi je t'ai posé cette question. Mais peut être que tu fais autremet!

    Cédric

  11. #11
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Citation Envoyé par Cédric B. Voir le message
    Voilà pourquoi je t'ai posé cette question. Mais peut être que tu fais autremet!
    Cédric
    Non pour le moment je n'ai encore rien réussi a faire avec ce foutu ClientCredential

    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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          GeoService GeoClient = new GeoService();
          soapcl.Credentials = new NetworkCredential("user", "pass");
    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 !

    Si quelqu'un dispose d'informations, merci de les signaler au post le plus proche

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 351
    Par défaut
    Salut Olibara,

    Mais pour ma part je n'ai encore rien compris a la maniere d'associer un credential a une session
    Pour mettre ton objet, par exemple "soapcl", dans l'objet tu peux faire comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    Session.Add("sopacl", soapcl);
    ...
    Et pour savoir si on ton client s'est déjà connecté déjà tu vas rechercher "soapcl" dans "Session" comme cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    SOAPCL soapcl = (SOAPCL)Session["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é.

    Est-ce cela peut te donner des idées et répondre à tes attentes?

    Cédric

  13. #13
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Merci Cedric

    Tout d'abord j'ai fais une petite erreur de couper / colller


    Dans mon exemple je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          GeoService GeoClient = new GeoService();
           GeoClient.Credentials = new NetworkCredential("user", "pass");
    Mais ca c'est du coté client et ca marche tres bien
    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

  14. #14
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 351
    Par défaut
    Mon problème c'est comment gerer ca au niveau Serveur ??
    L'exemple que je t'ai donné est aussi valable du côté serveur. L'objet Session dans mon Webervice "GeoService()"!

    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

  15. #15
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    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

  16. #16
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 351
    Par défaut
    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

  17. #17
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Merci Cedric

    Je vais essayer cela dés que j'ai 1 petite heure devant moi merc

  18. #18
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 351
    Par défaut
    Salut Olibara,

    Alors quel est le résultat de ton essai pour username et password?

    Cédric

  19. #19
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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();
          }
        }
      }
    }

Discussions similaires

  1. [Toutes versions] Mise à jour Database, User, Password dans chaine de connexion SQL Server tables liées
    Par tototiti2008 dans le forum Contribuez
    Réponses: 0
    Dernier message: 08/06/2012, 16h28
  2. Creer user dans l'AD avec execution en tant que
    Par thibgrev dans le forum VBScript
    Réponses: 10
    Dernier message: 08/04/2011, 08h58
  3. saisie d'un password dans un TEdit
    Par dirty_boy dans le forum Composants VCL
    Réponses: 4
    Dernier message: 28/11/2005, 15h46
  4. Creer une boucle dans une requête ???
    Par fdloisel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/10/2004, 14h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo