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

Silverlight Discussion :

Silverlight 4 : Obtenir ou pouvoir comparer les mots de passe


Sujet :

Silverlight

  1. #1
    Nouveau membre du Club
    Profil pro
    Ingenieur étude et développement
    Inscrit en
    Décembre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur étude et développement

    Informations forums :
    Inscription : Décembre 2009
    Messages : 29
    Points : 33
    Points
    33
    Par défaut Silverlight 4 : Obtenir ou pouvoir comparer les mots de passe
    Bonjour,

    Je veux pouvoir utiliser la fonction ChangePassword()

    La fonction en elle même fonctionne très bien, mais j'aimerais pouvoir vérifier si le mot de passe actuel (pour le paramètre oldpassword) est correct.

    Hors je ne peux obtenir le password avec le Getpassword().

    A ce que j'ai lu il faut que j'ai enablePasswordRetrieval à true dans le web.config

    Hors je ne vois pas comment faire, sachant que j'utilise la BDD de base qui est fourni (ASPNET.MDF)

    En résumé :

    Il faut que j'arrive à vérifier si le mot de passe qu'à rentrer l'utilisateur est bien le bon.

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Pourquoi tu veux vérifier si le mot de passe est correct ? Si l'utilisateur c'est trompé, l'appel à la méthode ChangePassword échouera, tout simplement.

    Si vraiment tu veux avoir accès au mot de passe, il faut que tu le stocke en clair dnas la base (avec passwordFormat="Clear") et là, la méthode GetPassword fonctionnera.

  3. #3
    Nouveau membre du Club
    Profil pro
    Ingenieur étude et développement
    Inscrit en
    Décembre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur étude et développement

    Informations forums :
    Inscription : Décembre 2009
    Messages : 29
    Points : 33
    Points
    33
    Par défaut
    Pourquoi tu veux vérifier si le mot de passe est correct ?
    Enfin de pouvoir afficher un message d'erreur tout simplement ^^

    Enfin si je peux récupérer savoir si la méthode ChangePassword() à échoué, celàà me suffit

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Au pire, je t'ai expliqué comment faire pour avoir le mot de passe

  5. #5
    Nouveau membre du Club
    Profil pro
    Ingenieur étude et développement
    Inscrit en
    Décembre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur étude et développement

    Informations forums :
    Inscription : Décembre 2009
    Messages : 29
    Points : 33
    Points
    33
    Par défaut
    Mais un mot de passe en clair dans la BDD, mon tuteur de stage n'en voudra pas

    Mais il n'y aucun moyen de savoir si la méthode appelé à échoué ou réussi ? (si le changement du mot de passe a eu lieu ou non)

    j'ai trouvé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    [Update(UsingCustomMethod = true)]
            public void ChangePassword(MembershipServiceUser user, string oldPassword, string newPassword)
            {
                if (Membership.ValidateUser(user.UserName, oldPassword))
                {
                    user.ToMembershipUser().ChangePassword(oldPassword, newPassword);
                }
            }

    Le soucis c'est que je ne peux pas mettre que cela me renvoi un booleen (ce qui serait niquel), si quelqu'un voit la solution

  6. #6
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Le plus simple: tu met passwordFormat="Clear" pour accès au mot de passe et tu réimplémentes une fonction de cryptage/décryptage des mots de passe.

  7. #7
    Nouveau membre du Club
    Profil pro
    Ingenieur étude et développement
    Inscrit en
    Décembre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur étude et développement

    Informations forums :
    Inscription : Décembre 2009
    Messages : 29
    Points : 33
    Points
    33
    Par défaut
    ok, pour cela je dois tout réimplanter dans le web.config, c'est cela ?

    (j'utilise ce qui a été donné de base)

    VOici ce que j'ai mis dans le web.config (mais cela ne marche pas)

    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
       <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
        <providers>
          <clear />
          <add
            name="SqlProvider"
            type="System.Web.Security.SqlMembershipProvider"
            connectionStringName="Data Source=.\SQLEXPRESS;AttachDbFilename=C:\\Users\\vanwolleghem\\Documents\\Visual Studio 2010\\Projects\\SADIv2\\SADIv2.Web\\App_Data\\ASPNETDB.MDF;Integrated Security=True;User Instance=True"
            applicationName="MyApplication"
            enablePasswordRetrieval="true"
            enablePasswordReset="true"
            requiresQuestionAndAnswer="true"
            requiresUniqueEmail="true"
            passwordFormat="Clear" />
        </providers>
        </membership>

  8. #8
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Avec ce code, tous les mots de passe seront accessible en clair: à toi maintenant de les crypter/décrypter.

  9. #9
    Nouveau membre du Club
    Profil pro
    Ingenieur étude et développement
    Inscrit en
    Décembre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur étude et développement

    Informations forums :
    Inscription : Décembre 2009
    Messages : 29
    Points : 33
    Points
    33
    Par défaut
    Ui normalement cela devrait être bon mais il ne me trouve pas la BDD (mais bon vu que j'ai fait un copier/coller du connectionstring qu'on peut voir dans les propriétés, je ne comprend pas)

    Si tu as une idée du pourquoi

    Merci de prendre du temps avec moi

  10. #10
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Quel est le message d'erreur ?

  11. #11
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    il faut que tu le stocke en clair dnas la base (avec passwordFormat="Clear")
    Mais un mot de passe en clair dans la BDD, mon tuteur de stage n'en voudra pas
    Ton tuteur a bien raison

    tu réimplémentes une fonction de cryptage/décryptage des mots de passe
    Réinventer la roue pour le cryptage est rarement une bonne idée :
    - ça passera sûrement pas un audit de sécurité,
    - ça rajoute une problématique et c'est difficile à maintenir si les contraintes évoluent.

    De plus, une bonne pratique est plutôt de faire en sorte que personne ne puisse accéder au mot de passe, mais de pouvoir bien sûr toujours être capable de vérifier sa validité.

    La solution est donc d'utiliser un hash comme SHA.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  12. #12
    Nouveau membre du Club
    Profil pro
    Ingenieur étude et développement
    Inscrit en
    Décembre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur étude et développement

    Informations forums :
    Inscription : Décembre 2009
    Messages : 29
    Points : 33
    Points
    33
    Par défaut
    Voici le message d'erreur



    Sinon je pensais faire l'encrypted qui est possible de chiffrer et déchiffrer mais une chose à la fois comme on dit ^^

    Par contre j'avais aussi pour idée d'utiliser la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Membership.ValidateUser(username, password);
    qui renvoi un booleen, mais quand je la met dans mon service, je n'arrive pas à lui faire renvoyer un booleen (enfin il me dit build success, mais j'ai pas le droit de l'utiliser dans la partie cliente)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public Boolean ValidateUser(string username, string password)
    {
     return Membership.ValidateUser(username, password);
    }

  13. #13
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par seriousme Voir le message
    La solution est donc d'utiliser un hash comme SHA.
    C'est ce que je voulais dire par fonction de cryptage/décryptage: je me suis mal exprimé en effet

  14. #14
    Nouveau membre du Club
    Profil pro
    Ingenieur étude et développement
    Inscrit en
    Décembre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur étude et développement

    Informations forums :
    Inscription : Décembre 2009
    Messages : 29
    Points : 33
    Points
    33
    Par défaut
    Au final, j'ai fait au plus simple, j'ai mis une propriéte en plus afin de savoir si ça c'est bien passé ou pas. C'est pas bien... mais bon j'arrive pas mieux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [Update(UsingCustomMethod = true)]
            public void ChangePassword(MembershipServiceUser user, string oldPassword, string newPassword)
            {
                if (Membership.ValidateUser(user.UserName, oldPassword) == true)
                {
                    user.ToMembershipUser().ChangePassword(oldPassword, newPassword);
                    user.PasswordChanged = true;
                }
                else
                {
                    user.PasswordChanged = false;
                }
            }
    Edit : Changement de façon de procéder (plus propre)

    voir :

    ici

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

Discussions similaires

  1. [AC-2010] Comparer les mots de 2 chaines de caractères
    Par docjo dans le forum VBA Access
    Réponses: 2
    Dernier message: 04/05/2012, 19h15
  2. Commant obtenir les mots de passe des utilisateurs?
    Par aek_gh dans le forum Administration
    Réponses: 1
    Dernier message: 24/04/2012, 20h41
  3. JPasswordField, comparer les mots de passes.
    Par RetributionX dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 02/03/2012, 10h21
  4. cacher les mots de passes...
    Par youp_db dans le forum C
    Réponses: 7
    Dernier message: 21/10/2005, 00h06
  5. Le dossier qui stock les mots de passe
    Par cartonis dans le forum Sécurité
    Réponses: 21
    Dernier message: 17/08/2005, 12h49

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