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 :

Authentification utilisateur Web service et site ASP.net


Sujet :

Services Web

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 93
    Points
    93
    Par défaut Authentification utilisateur Web service et site ASP.net
    Bonjour,

    Alors voilà, je me triture l'esprit pour essayer de gérer l'authentification à mon web service qui est utilisé dans un site web.

    Mon web service utilise l'identification username avec ws-security ce qui implique de devoir compléter à chaque utilisation du web service les informations clientcredentials comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                Client_WS ws_client = new Client_WS();
                ws_client.ClientCredentials.UserName.UserName = "toto";
                ws_client.ClientCredentials.UserName.Password = "toto";
    Toutes les fonctions de mon web service nécessite d'être authentifié car lors de la vérification de login mot de passe, j'attribut un rôle à l'utilisateur qui est utilisé pour vérifier les accès à certaines fonctions.

    Jusque là tous va bien mais dans un site web je passe donc par la page d'authentification où l'utilisateur rentre son login et mot de passe donc pas de soucis non plus.

    Puis sur les autres pages le web service et aussi utilisé par le site web pour récupérer des informations produits et les modifier.

    Donc dans chaque page j'ai besoin de rentrer à nouveau le login et mot de passe de l'utilisateur authentifier, sauf que je n'ai plus les informations car je ne me voit pas stocker ses infos sensibles dans un cookies !!

    Le cycle de vie de la page web m'oblige à re-authentifier mon utilisateur à chaque aller retour serveur !

    Comment puis je gérer ce problème ? Y a t'il une méthode connu pour palier à ce problème ?

    Merci d'avance pour votre aide et surtout n'hésitez pas à poser des questions si je me suis mal exprimé.

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    La première solution à laquelle je pense est de crypter le login et le mot de passe. Ainsi tu peux transférer de manière sécurisée ces information, et les utiliser là où tu en auras besoin.

    Une autre serait de mettre en oeuvre une solution de Single Sign On (SSO), qui permettrait de ne pas avoir à authentifier à chaque fois l'utilisateur. Un simple transfert de paramètre suffirait, via l'entête HTTP par exemple... Il existe pas mal d'outils de SSO, mais ça peut coûter assez cher. Développer son propre système de SSO est une idée, mais il faut savoir ce que l'on fait car toute la sécurité du système repose dessus.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 93
    Points
    93
    Par défaut
    Merci pour ta contribution

    Citation Envoyé par DotNetMatt Voir le message
    La première solution à laquelle je pense est de crypter le login et le mot de passe. Ainsi tu peux transférer de manière sécurisée ces information, et les utiliser là où tu en auras besoin.
    C'est aussi ce à quoi j'ai pensé. Seulement où est ce que je stocke ces informations. Dans un cookies sur le client, dans une variable de session, ou j'ai pensé aussi à gérer un fichier xml où j'associe le login et mot de passe crypté avec l'identifiant de session. Quel serait la meilleur des solutions ?

    Je me dit que le fichier xml au moins il est sur le server et si les données sont cryptés c'est plus sécurisée comme méthode, non?

    Une autre serait de mettre en oeuvre une solution de Single Sign On (SSO), qui permettrait de ne pas avoir à authentifier à chaque fois l'utilisateur. Un simple transfert de paramètre suffirait, via l'entête HTTP par exemple... Il existe pas mal d'outils de SSO, mais ça peut coûter assez cher. Développer son propre système de SSO est une idée, mais il faut savoir ce que l'on fait car toute la sécurité du système repose dessus.
    Je ne sait pas si ça en vaut vraiment la peine car c'est que pour gérer l'authentification entre le site web et le web service. Sachant que je veut mettre en place le timeout de la session du site web à 5 minutes, afin qu'il soit obligé de se ré-authentifié au bout de 5 minutes d'inactivité sur le site.

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Pour le stockage des infos cryptées, la session fait l'affaire. Tu y stocke l'info lors du login. Si la session est perdue, l'utilisateur devra s'authentifier de nouveau, donc tu es sûre de toujours avoir les infos dispo.

    Sinon je viens de voir cet article qui présente comment utiliser l'ASP.NET Membership Provider. Ca peut être plus simple
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 93
    Points
    93
    Par défaut
    Mais en utilisant les variables de sessions, les données peuvent être récupéré par quelqu'un qui arriverai à récupérer l'ID de session.

    Et même si je crypte les données, rien ne les empêches d'être décrypté par moi ou un utilisateur malveillant, non ?

    Je ne me souviens plus exactement des raisons pour lesquels je n'ai pas utilisés l'authentification membership mais j'avais déjà étudié cet éventualités.

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Nanais19 Voir le message
    Mais en utilisant les variables de sessions, les données peuvent être récupéré par quelqu'un qui arriverai à récupérer l'ID de session.
    Effectivement On peut aussi se faire applatir dans la rue par un buffle au galop échappé d'un cirque.

    Citation Envoyé par Nanais19 Voir le message
    Et même si je crypte les données, rien ne les empêches d'être décrypté par moi ou un utilisateur malveillant, non ?
    Par toi, oui c'est le but ! Par un utilisateur malveillant, oui c'est possible dans l'absolu... Toutefois si tu utilises un cryptage type AES 256 je doute qu'il arrive à décrypter quoi que ce soit

    Si tu ne veux pas que ça soit décryptable, tu peux utiliser les Hash (MD5/SHA), ou même mieux les Hashs "salés". Comme ça tu trimbales les hashs et il te suffit de comparer les Hashs des 2 côtés. Si ça match, c'est que c'est le bon utilisateur.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 93
    Points
    93
    Par défaut
    Très bien, merci beaucoup. Je pense que je vais procéder comme ça alors.

    Je stockerai le mot de passe dans une variable de session une fois celui ci crypté.

    Merci pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Service web dans un site asp.net
    Par MicaelFelix dans le forum Services Web
    Réponses: 1
    Dernier message: 13/07/2010, 16h10
  2. Consommer un web services PHP en ASP .Net
    Par The Goion dans le forum ASP.NET
    Réponses: 1
    Dernier message: 04/01/2010, 13h55
  3. je trouve asp.net web service mais pas asp.net web application
    Par question87 dans le forum Visual Studio
    Réponses: 1
    Dernier message: 22/04/2008, 21h26
  4. Réponses: 5
    Dernier message: 17/01/2008, 13h18
  5. Réponses: 2
    Dernier message: 26/09/2006, 08h56

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