- Ymox,
Bonjour !
J’ai une application Symfony qui utilise le provider in_memory pour sécuriser certaines parties — j’ai trois roles. Histoire de sécuriser un peu le truc, j’ai fait en sorte que les mots de passe soient dans le fichier .env
, et la partie de configuration est faite dans parameters.yaml
, dont j’importe la clé comme ci-dessous.
security:
providers:
in_memory:
memory:
users: "%application_users%"
config/packages/security.yaml
parameters:
application_users:
user1:
password: '%env(USER1_PASSWORD)%'
roles: ROLE_1
user2:
password: '%env(USER2_PASSWORD)%'
roles: ROLE_2
user3:
password: '%env(USER3_PASSWORD)%'
roles: ROLE_3
config/parameters.yaml
Seulement, seul l’utilisateur 3 permet de s’authentifier sur l’application, les autres ne semblent pas être trouvés.
Dans un premier temps, j’ai évidemment pensé au fait que les mots de passe que j’avais mis pour les autres utilisateurs n’étaient pas corrects.
Puis j’ai pensé à l’ordre de définition.
Et enfin je me suis demandé si cette manière de faire posait problème, étant donné que j’importe un tableau.
Mais malgré le re-chiffrement des mots de passe (directement depuis le serveur utilisé, des fois que), des changements d’ordre dans la définition des utilisateurs et une tentative en ayant mis tout directement dans le fichier, il n’y a toujours que le même utilisateur qui permette de se connecter. Les rôles sont corrects, l’utilisation des guillemets simples ou doubles pour les chaînes en YAML ne devrait pas poser de problème (sans quoi aucun utilisateur ne fonctionnerait à la base).
La dernière tentative qui me vienne à l’esprit maintenant serait d’utiliser des mots de passe en clair, je verrai la chose plus tard.
Est-ce que quelqu’un a déjà rencontré ce genre de souci et aurait circonvenu la chose ?
Merci
P.S. : l’application a migré de Symfony 3.4 à 5.0 et le souci avec.
Edit
Bon, une fois de plus, je ne saurai pas le fin mot de l’histoire. Je re-génère un aggrégat pour un des utilisateurs avec lequel je n’arrivais pas à avoir accès, et là ça passe… Je me souviens avoir copié le mot de passe depuis le script de chiffrement dans le formulaire.