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 :

Compréhension du système d'authentification [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 284
    Par défaut Compréhension du système d'authentification
    Bonsoir,

    J'ouvre ce topic car je me pose pas mal de questions théoriques quant au processus de traitement des formulaires de login.

    J'ai crée 2 entités, User et Role, héritant de leurs interfaces respective.

    L'étape suivante et de toucher aux fichier security.yml, et là, j'avoue que je m'en sert un peu sans vraiment comprendre le fonctionnement.

    Prenons l'exemple d'une identification basée sur table (User et Role):

    routing.yml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    login:
        pattern:  /login
        defaults: { _controller: ProjExempleBundle:Security:login }
     
    check:
        pattern:  /login_check
    security.yml
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    security:
        encoders:
            Symfony\Component\Security\Core\User\User:
            algorithm: sha512
            encode-as-base64: true
            iterations: 10
     
          providers:
          main:
            entity: { class:ProjExempleBundle:User, property: login }
     
        firewalls:
          main:
            pattern: /.*
            form_login:
                check_path: /login_check
                login_path: /login
            logout: true
            security: true
            anonymous: true
     
        access_control:
            - { path: /admin.*, role: ROLE_ADMIN }
            - { path: /.*, role: IS_AUTHENTICATED_ANONYMOUSLY }
    Je ne vais pas vous afficher le formulaire de login ce ne serait pas très intéressant, mais il faut savoir qu'il pointe vers la route "check".

    Une fois que le firewall a récupérer le formulaire, pour traiter le résultat, va t-il utiliser le "encoders" ? Si oui
    1] Comment sait-il qu'il soit l'appliquer seulement sur le password (comment identifie t-il se champ du formulaire ? Et de l'entité, grâce à l'interface je suppose ?)

    2] Si on a applique un 'salt' au pass avant de l'entrer en base, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $user->setSalt(md5(time()));
    Comment Symfony2 va pouvoir matcher avec le pass entré en base, ce dernier étant base sur un cryptage en rapport à un instant t ??

    Merci à la personne qui saura m'apporter ces précieuses explications !

  2. #2
    Membre éclairé
    Profil pro
    IED Web
    Inscrit en
    Octobre 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : IED Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 60
    Par défaut
    L'encoder choisi est en fonction de ton provider, donc il te faut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    security:
        encoders:
            class:ProjExempleBundle:User:
                 algorithm: sha512
                 encode-as-base64: true
                 iterations: 10
    La selection du mot de passe se passe par l'implementation de l'interface oui.
    Pour le salt, il faut un salt fixe ou faiblement relatif, par exemple en fonction d'un autre champs tel la date de naissance qui est peu appellée à être modifiée..

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 284
    Par défaut
    Ok merci pour ces explications, mais il reste un gros point d'ombre pour moi:
    Comment le firewall va savoir quel champ de mon formulaire de connexion traité pour checker le mot de pass ? Y a t-il un champ "name" ou un "id" à placer dans l'input du champ "password" pour que le firewall sache quelle donnée encoder ?

    Une autre question qui montre que je n'ai pas bien saisi le mécanisme, ok l'encoder est choisit en fonction du provider, mais comment se fait-il que le provider de mon formulaire de connexion soit de mon entité "User" alors qu'il n'est pour le moment qu'un utilisateur anonyme remplissant un formulaire ?

    Merci !

  4. #4
    Membre éclairé
    Profil pro
    IED Web
    Inscrit en
    Octobre 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : IED Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 60
    Par défaut
    Extrait de http://symfony.com/doc/current/cookb...orm_login.html, les champs name attendus pour le login sont :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    # field names for the username and password fields
                    username_parameter:             _username
                    password_parameter:             _password
    Pour ta deuxieme question, sans specification du provider dans ton firewall (cf exemple dans http://symfony.com/doc/current/refer.../security.html), et parce que tu n'en a qu'un, il se base surement sur le seul provider que tu lui met à disposition, ton entité User.

  5. #5
    Membre très actif Avatar de hazamor
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2008
    Messages : 179
    Par défaut
    Citation Envoyé par student_php Voir le message
    Ok merci pour ces explications, mais il reste un gros point d'ombre pour moi:
    Comment le firewall va savoir quel champ de mon formulaire de connexion traité pour checker le mot de pass ? Y a t-il un champ "name" ou un "id" à placer dans l'input du champ "password" pour que le firewall sache quelle donnée encoder ?
    Par default le nom de l'input de mot de passe est '_password', et celui de login est '_username', vous pouvez le modifier au niveau de security.yml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    form_login:
                   ....
                    username_parameter: _username
                    password_parameter: _password
    Vous pouvez voir ce lien:

    http://symfony.com/doc/current/refer.../security.html

    Citation Envoyé par student_php Voir le message
    Une autre question qui montre que je n'ai pas bien saisi le mécanisme, ok l'encoder est choisit en fonction du provider, mais comment se fait-il que le provider de mon formulaire de connexion soit de mon entité "User" alors qu'il n'est pour le moment qu'un utilisateur anonyme remplissant un formulaire ?
    On indique que la source des utilisateurs est un tel entité, pour que le système de symfony l'utilise après de l'envoi de paramètre par l'utilisateur (l'internaute)

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 284
    Par défaut
    Génial je n'avais pas vu ce cookbook bendede, tout est maintenant bien plus clair à mes yeux !

    Merci également à toi hazamor et bonne fin de journée !

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

Discussions similaires

  1. système d'authentification au réseau interne
    Par tiloup367 dans le forum Développement
    Réponses: 3
    Dernier message: 27/09/2010, 23h05
  2. WCF et utilisation de 2 systèmes d'authentification différents
    Par micky3248 dans le forum Services Web
    Réponses: 2
    Dernier message: 30/06/2009, 08h18
  3. [Joomla!] Système d'authentification avec le navigateur
    Par moutey dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 27/04/2009, 17h34
  4. Cookie et système d'authentification
    Par Monkey_D.Luffy dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 23/06/2008, 11h24
  5. [Système] Problème authentification site
    Par bilowlex dans le forum Langage
    Réponses: 3
    Dernier message: 17/02/2007, 08h52

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