Es-tu sûr que tes mots de passe sont stockés en base 64 ? Pour ma part, ayant dû migrer une application qui utilisait SHA1, les mots de passe n'étaient pas stockés en binaire, mais pas en base 64 non plus, donc j'ai encode_as_base64: false.
Edit
J'ai aussi une série d'instructions qui précisent que le système de hachage migre depuis une vieille version. Regarde cet autre sujet sur le même thème.
J'ai été confronté au même problème que Antoine 336 lors de la migration de sf5 à sf6. J'ai des users qui étaient codés avec sha256 du temps ou mon site j'était sous sf3. Jusqu'à sf5, je pouvais identifier les anciens tout en codant avec la dernière technique pour les nouveaux. Cela ne marchait plus avec sf6 pour les utilisateurs qui avaient un salt non null.
Je n'ai pas réussi à le résoudre
je mets malgré tout la copie de mon fichier security.yaml pour la partie concernée, fichier qui pour cette partie n'a pas bougé entre SF5 et SF6:
Il existe une autre solution que je n'ai pas trouvé comment mettre en oeuvre.
Cela consisterait à balayer l'entité user et à transformer le mot de passe hâché avec salt en un mot de passe haché sans salt.
Symfony fait automatiquement des opérations de ce type. Quand un ancien utilisateur (dont le mot de passe est codé en sha512 par exemple et sans salt pour sf6, avec salt aussi pour sf5) se connecte, alors automatiquement sont mot de passe est à l'avenir codé en bcrypt (et sans salt). Sans doute, symfony bénéficie de la connaissance du mot de passe non codé (que l'utilisateur envoie pour se connecter) pour faire cette opération.
Comme je ne conserve pas les mots de passe non codés, ma solution exigerait qu'on puisse faire l'opération en utilisant uniquement les mots de passe codés!
SI je me réfère au premier point de la documentation sur les custom password hashers, je me demande si les anciens mots de passe ne pourraient pas être gérés que par un de ces "hacheurs" personnalisés qui implémenterait LegacyPasswordHasherInterface.
Malheureusement, la documentation ne remonte pas plus loin que la version 5.3 de Symfony, du moins pas avec la même structure. Reste que LegacyPasswordHasherInterface demande l'implémentation d'une méthode qui prend le sel en paramètre supplémentaire, reste à savoir s'il faut un outil d'authentification spécifique pour gérer cela "manuellement" ou si Symfony s'en sort du fait de l'interface.
Site les mathématiques amusantes pour vous détendre
Site les mathématiques amusantes pour vous détendre