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

Symfony PHP Discussion :

Symfony error badCredentials [4.x]


Sujet :

Symfony PHP

  1. #21
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 109
    Points : 44
    Points
    44
    Par défaut Continuité
    Bonjour et merci à vous pour vos réponses.
    Malheureusement je n'ai pas encore la solution du probleme et j'espére que les éléments que je vais vous fournir vous apporteront une meilleure piste que les miennes.
    En premier je vais répondre à armel. Par doute je viens de verifier où était placer mon LoginAuthenticator.php et il se trouve bien dans App\src\Security\.

    Ensuite je vais répondre a thomas. comme je suis un gros fainéant j'ai demandé a linux de rechercher LoginAuthenticator pour moi a la sortie de la commande que vous m'avez fournie (en fait j'ai juste ajouté un pipe avec un egrep) et voila la sorite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ./bin/console debug:autowiring --all | egrep "Login"
     App\Security\LoginAuthenticator
    Je retorune sur un des message d'armel, la partie securité et le formulaire (ainsi que d'autres parties de mon application) ont été généré avec la console de symfony qui est fort pratique a mon gout.

    Merci pour votre aide
    Je reste a disposition pour vous aider à m'aider

    Vincent

  2. #22
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 109
    Points : 44
    Points
    44
    Par défaut Une piste
    Bonjour,
    Je crois que nous tenons une piste comme le disait armel le message d'erreur indique le repertoire des controller mais, comme vous allez le voir sur la capture d'écran de mon projet, LoginAuthenticator.php n'est pas dans le repertoire des controller mais dans un repertoire specifique "Security".
    Nom : Capture d’écran de 2019-08-13 14-01-33.png
Affichages : 294
Taille : 247,0 Ko
    Je précise que le répertoire et le fichier LoginAuthenticator ont été générés avec la console de symfony.
    J'espére que cela pourra plus vous eclairer que moi étant un simple débutant avec peut être de trop grandes ambitions en informatique.

    Sinon, cela peut être rien avoir mais, comme je l'avais signalé dans un autre message précedement dans la discussion, quand je fais un update du mot de passe de l'utilisateur via mon interface Web après je peux me connecter avec ce compte. Alors que quand je crée le compte (toujours via l'interface Web) je ne peux pas me connecter et l'erreur badcredentials est levée. Je le répéte mais pour gérer les entités en base de données via l'application j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php bin/console make:crud User
    Donc tout a été automatiquement généré par la console de symfony et c'est bien pour cela que je suis un peu perdu ...

    Merci de votre aide à vous 3

    Vincent

  3. #23
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Points : 582
    Points
    582
    Par défaut
    Est-ce que tu as essayé ce que conseillait armel18 dans ce message pour vérifier si le hash du mot de passe saisi et le même que celui persisté ?

    S'ils sont identiques, reprends le processus d'authentification étape par étape : dans chaque fonction du LoginAuthenticator, dd() les paramètres reçus pour vérifier à partir de quel moment ils ne sont plus corrects. Tu peux aussi le faire pour déterminer exactement jusqu'où s'exécute le code avant de lever une exception.

  4. #24
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 109
    Points : 44
    Points
    44
    Par défaut Hash du mot de passe vide ?
    Bonjour,
    Non, je n'ai pas essayé pour 2 raisons (mais c'est peut être un tors):
    * tout le systeme de login/logout a été généré par symfony. Je n'ai donc rien touché de sensible.
    * j'ai déjà pensé à l'eventualité d'un hash vide mais un hash est bien présent en base de données après la création de l'utilisateur

    Donc la deux seuleshypothèsesque je peux formuler est:
    * que le hash est mauvais (différent que celui du mot de passe d'origine) .

    Oui, si je reprends le probléme avec mes maigres compétences c'est la seule explication car :
    Je peux me connecter avec un compte fixtures
    Je peux me connecter après un update du mot de passe
    Je ne peux pas me connecter après la création du compte
    Le hash en BDD n'est pas vide et est encodé

    -> donc la connexion/deconnxion fonctionne correctement (je pense)
    -> les utilisateurs sont bien créés en BDD
    -> après un update du mot de passe cela fonctionne

    ==> Donc le hash en BDD est faut à la création

    piste ? -> le salt est-il oui ou non pris en compte ?

    Mon raisonnnement vous parrait-il correct ?

    En tous cas merci de votre aide

    Vincent

  5. #25
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Points : 582
    Points
    582
    Par défaut
    Dans new() tu encodes le password en lisant récupérant sa valeur dans la requête :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $passwordEncoded = $encoder->encodePassword($user, $request->request->get('password'));

    Dans edit() tu encodes le password en récupérant sa valeur dans l'objet formulaire :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $passwordEncoded = $encoder->encodePassword($user, $form->get('password')->getData());

    Si l'authentification ne fonctionne pas sur des utilisateurs créés avec new() mais fonctionne s'ils sont modifiés avec edit(), alors il y a de bonnes chances que la différence vienne de là non ?
    C'est ce que disait armel18 dans son message : est-ce que tu es certain que dans new(), $request->request->get('password') récupère bien le mot de passe saisi dans le formulaire ?

  6. #26
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 109
    Points : 44
    Points
    44
    Par défaut être sur
    Bonjour,
    Sûr qu'il récupere le mot de passe : presque car c'est la console de symfony qui l'a généré
    Sûr qu'il récupére quelque chose : oui car les hash en base de données est present.

    Après est ce le bon hash ? .... je vais essayé de vérifier


    Merci

    Vincent

  7. #27
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 109
    Points : 44
    Points
    44
    Par défaut C'est le mauvais hash
    Bonjour,
    C'est long mais on se rapproche de la solution.
    je sais pourquoi je ne peux pas me connecter directement avec un compte utilisateur. le hash n'est pas le bon.
    J'ai créé un compte utilisateur avec mon interface Web et commemot de passe azerty (hyper securisé )
    Puis je l'ai comparé ici https://argon2-generator.com/
    avant le update le mot de passe n'est pas le bon. Et après si.
    Donc j'ai bien ma petit idée. Je vérifie et vous tiens au courant.

    Merci a vous

    Vincent

  8. #28
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 109
    Points : 44
    Points
    44
    Par défaut ce n'est pas le salt !
    Bonjour,
    Je me suis dis que le probleme venait entre la soumission du formulaire et l'enregistrement en base de données. Mon idée comme quoi le salt nétait pas pris en compte n'est surement pas bonne. Car en enlevant le return de la fonction getSalt() j'ai toujours la même erreur avec la même procedure.....
    Je vous avoue que je suis déçu et a court d'idée .....

    je vais essayer la proposition d'armel et si cela marche je bois une bière à votre santé à tous les 2
    Je vous tiens au courant.

    Merci beaucoup

    Vincent

  9. #29
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 109
    Points : 44
    Points
    44
    Par défaut La solution d'armel ne fonctionne pas
    Bonjour,
    On avance peut être encore un peu.
    Bien que la solution d'armel ne fonctionne pas encore les le hash en base de données et celui dans l'interface Web a la création correspondent. d'après le site : https://argon2-generator.com/

    Le souci vient peut être du décodage du mot de passe ?

    Merci

    Vincent

  10. #30
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Points : 582
    Points
    582
    Par défaut
    Je me répète et répète ce qu'armel18 avait déjà proposé, qu'est-ce que te retournes le code suivant dans new() juste avant d'encoder le password ?
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    dd($request->request->get('password'));

  11. #31
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    En général on vérifie toujours les données envoyées depuis un formulaire question d'être sûr que les données envoyées sont celles attendues. Or tu effectues une vérification à posteriori en allant regarder le hash dans la BD. Le fait que ta BD enregistre le hash du mdp n'est pas une garantie qu'il s'agit du bon hash c'est en amont qu'il faut vérifier avec dump( $form->getData() ) .


    $request->request->get('password') te renvoie null car le mdp est envoyé depuis un formulaire du coup l'encoder de SF encode un mdp de valeur null. Au final ton mdp brut vaut null. Comme mentionné précédemment pour récupérer le password du form SF c'est $form->get('password')->getData().


    au passage pour générer un mdp encodé à l'aide de la commande SF:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    php bin/console security:encode-password mot-de-passe-en-claire

  12. #32
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 109
    Points : 44
    Points
    44
    Par défaut mot de passe vide
    Bonjour à vous tous,
    d'après la commande cité e par armel et thomas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dd($request->request->get('password'));
    la variable qui contient le mot de passe de l'utilisateur est vide "Null".

    Et en remplacant cette requete par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $form->get('password')->getData
    Mes connexion fonctionnent correctement.
    Je vous remercie grandement tout les car grace a vous, en plus d'avoir résolu mon probleme, j'ai beaucoup appris sur symfony et son deboggage

    Merci a vous 2

    Vincent

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/10/2016, 08h53
  2. Symfony erreur 500 Internal Server Error - FileLoaderLoadException
    Par Francisco22 dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 11/08/2013, 22h09
  3. [2.x] Symfony 2 / Custom error 503 impossible ?
    Par vgross dans le forum Symfony
    Réponses: 1
    Dernier message: 14/03/2012, 15h01
  4. Réponses: 1
    Dernier message: 23/12/2010, 15h41
  5. [1.x] problème installation symfony ERROR: commit failed
    Par john anderta dans le forum Symfony
    Réponses: 1
    Dernier message: 12/06/2009, 11h05

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