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 :

firewalls zones membre et admin [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 116
    Points : 85
    Points
    85
    Par défaut firewalls zones membre et admin
    Bonjour,

    J'ai besoin de conseils pour la configuration du/des firewalls. Je voudrais mettre en place un firewall pour la zone admin genre mondomaine.com/admin, jusque là, tout va bien.

    Là où ça se gâte, c'est pour la zone membremondomaine.com/membre. Je ne vois pas trop comment configurer fosuserbundle pour gerer ces deux zones.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        role_hierarchy:
            ROLE_MEMBER:  [ ROLE_USER, ROLE_MEMBER ]
            ROLE_ADMIN:   [  ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    firewalls:
            main:
                pattern: ^/
                form_login:
                    provider: chain_provider
                    csrf_provider: form.csrf_provider
                logout:       true
                anonymous:    true
    Je voudrait qu'il y ai des urls du genre:
    mondomaine.com/admin/login redirigée vers mondomaine.com/admin/

    et mondomaine.com/member/login ou mondomaine.com/login redirigée vers mondomaine.com/

    Merci pour votre aide

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 116
    Points : 85
    Points
    85
    Par défaut
    J'aimerais comprendre pourquoi une personne à jugé que cette discussion est "médiocre", un commentaire constructif aurait été le bienvenue.

  3. #3
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Désolé utilisation du tel sur le site et hop mauvaise appui

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 116
    Points : 85
    Points
    85
    Par défaut
    ah ok, ca me rassure

  5. #5
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Donc on va, je pense, faire du message dans cette partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    role_hierarchy:
            ROLE_MEMBER: [ ROLE_USER]
            ROLE_ADMIN:   [ ROLE_MEMBER , ROLE_ALLOWED_TO_SWITCH ]
    La raison est simple : dans ROLE_MEMBER tu dis quand tu as ROLE_MEMBER, tu a le ROLE_MEMBER et le ROLE_USER. Pareil pour admin.

    Pourquoi deux login avec deux redirections ?

    Je pense qu'il faut deux firewalls.

    Peux tu mettre tout le security.yml

  6. #6
    Membre éclairé

    Inscrit en
    Novembre 2008
    Messages
    417
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 417
    Points : 826
    Points
    826
    Par défaut
    Salut,
    Je ne comprends pas trop l'objectif poursuivi. Comment savoir a priori que l'utilisateur doit être envoyé vers une page de login ou une autre ?

    Autant que j'ai compris le fonctionnement de la sécurité dans SF, un firewall définit d'abord et avant tout une méthode d'authentification. On y précise la zone protégée mais si la méthode d'authentification est la même pour les MEMBER et les ADMIN, on n'a besoin que d'un seul firewall.
    La mise en place des profils nécessaires pour accéder à des sous-zones est plutôt du ressort du paragraphe "access_control" que ce celui des firewall.

    Tel que je vois le truc, j'imagine un utilisateur qui tente d'accéder à une URL quelconque. Si cette URL est protégée par le firewall, il est dirigé vers une page de login.
    En fonction de ce qui est définit, il se voit attribuer un ou plusieurs rôles qui lui donnent accès ou non à l'URL désirée. Cet accès étant autorisé par le paramétrage de "access_control"

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 116
    Points : 85
    Points
    85
    Par défaut
    Bonjour,

    voici le 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    jms_security_extra:
        secure_all_services: false
        expressions: true
     
    security:
        encoders:
            Symfony\Component\Security\Core\User\User: plaintext
            FOS\UserBundle\Model\UserInterface: sha512
     
        role_hierarchy:
            ROLE_MEMBER:   ROLE_MEMBER 
            ROLE_ADMIN:   [  ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ]
     
        providers:
            chain_provider:
                chain:
                    providers: [in_memory, fos_userbundle]
            fos_userbundle:
                id: fos_user.user_provider.username_email
            in_memory:
                memory:
                    users:
                        admin: { password: admin, roles: [ 'ROLE_ADMIN' ] }
                        member: { password: member, roles: [ 'ROLE_MEMBER' ] }
     
        firewalls:
            main:
                pattern: ^/
                form_login:
                    provider: chain_provider
                    csrf_provider: form.csrf_provider
    #                default_target_path: /admin/
                logout:       true
                anonymous:    true
            dev:
                pattern:  ^/(_(profiler|wdt)|css|images|js)/
                security: false
     
    #        login:
    #            pattern:  ^/demo/secured/login$
    #            security: false
    #
    #        secured_area:
    #            pattern:    ^/demo/secured/
    #            form_login:
    #                check_path: /demo/secured/login_check
    #                login_path: /demo/secured/login
    #            logout:
    #                path:   /demo/secured/logout
    #                target: /demo/
    #            #anonymous: ~
    #            #http_basic:
    #            #    realm: "Secured Demo Area"
     
        access_control:
            #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
            #
            # You must uncomment the two following rules to restrict access to paths
            # starting with the /_internal prefix to only localhost
            #- { path: ^/_internal/secure, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 }
            #- { path: ^/_internal/secure, roles: ROLE_NO_ACCESS }
            - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
            - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
            - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
            - { path: ^/admin, role: ROLE_ADMIN }
            - { path: ^/member, role: ROLE_MEMBER }
            - { path: ^/, role: IS_AUTHENTICATED_ANONYMOUSLY }
    Merci.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 116
    Points : 85
    Points
    85
    Par défaut
    C'est que si je vais sur mondomaine.com/login
    en me connectant avec un utilisateur membre, je suis redirigé vers mondomaine.com
    en me connectant avec un utilisateur admin, je suis redirigé vers mondomaine.com/admin/

    pour ce qui est des "best practice", c'est correct de fonctionner ainsi(avec le meme formulaire de login pour les membres et admin) ?

  9. #9
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Bon on va commencer par un petit peu de ménage.

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    jms_security_extra:
        secure_all_services: false
        expressions: true
     
    security:
        encoders:
            Symfony\Component\Security\Core\User\User: plaintext
            FOS\UserBundle\Model\UserInterface: sha512
     
        role_hierarchy:
            ROLE_MEMBER:   ROLE_USER
            ROLE_ADMIN:   [  ROLE_MEMBER, ROLE_ALLOWED_TO_SWITCH ]
     
        providers:
            chain_provider:
                chain:
                    providers: [in_memory, fos_userbundle]
            fos_userbundle:
                id: fos_user.user_provider.username_email
            in_memory:
                memory:
                    users:
                        admin: { password: admin, roles: [ 'ROLE_ADMIN' ] }
                        member: { password: member, roles: [ 'ROLE_MEMBER' ] }
     
        firewalls:
            main:
                pattern: ^/
                form_login:
                    provider: chain_provider
                    csrf_provider: form.csrf_provider
    #                default_target_path: /admin/
                logout:       true
                anonymous:    true
            dev:
                pattern:  ^/(_(profiler|wdt)|css|images|js)/
                security: false
    
        access_control:
            - { path: ^/, role: IS_AUTHENTICATED_ANONYMOUSLY }
            - { path: ^/admin, role: ROLE_ADMIN }
            - { path: ^/member, role: ROLE_MEMBER }
    Déjà on y verra plus clair, et sur le fond rien ne t'empêche d’authentifier sur le form login, les admin et les member étant que chacun à sa zone.

  10. #10
    Membre éclairé

    Inscrit en
    Novembre 2008
    Messages
    417
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 417
    Points : 826
    Points
    826
    Par défaut
    Pour ce qui est des best practice... Je ne sais pas ce qui est préconisé. Je suis comme toi avec mes avirons pour essayer de maîtriser la sécurité personnalisée de symfony qui, si elle est souple et puissante, n'est pas simple.

    Par contre, je ne vois pas pourquoi les membres et les admins n'auraient pas le même écran de login dans la mesure où tu ne peux pas déterminer à l'avance si un utilisateur qui arrive sur le site sera reconnu comme admin ou comme membre. C'est seulement une fois authentifié par la méthode choisie que tu vas choisir de le rediriger vers une url ou une autre.
    Parce que si un utilisateur non identifié arrive sur ton site, comment choisir sur quel écran de login l'envoyer ?

    2ème remarque : tes utilisateurs admin et member ne sont pas gérés par FOS (provider in_memory) ? Y a-t-il une raison particulière pour cela ?

  11. #11
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Je pense que d'avoir laissé in_memory dans le chain provider permet d'avoir accès à deux utilisateurs lambda.

    Après reste la possibilité de deux firewalls un pour les admins et un pour les utilisateurs et donc deux liens login.

  12. #12
    Membre éclairé

    Inscrit en
    Novembre 2008
    Messages
    417
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 417
    Points : 826
    Points
    826
    Par défaut
    Citation Envoyé par stephan.78 Voir le message
    Je pense que d'avoir laissé in_memory dans le chain provider permet d'avoir accès à deux utilisateurs lambda.
    Admettons... On peut imaginer que dans certaines situations, cela soit nécessaire.
    Après reste la possibilité de deux firewalls un pour les admins et un pour les utilisateurs et donc deux liens login.
    Là, je vois moins bien. Comment choisir celui vers lequel on veut envoyer l'utilisateur ?
    Pour moi, deux firewall, ça peut servir si on a deux applis dans la même arborescence avec des systèmes d'authentification différents. En dehors de ça, j'ai du mal à imaginer des cas d'utilisation concrets pour lesquels cette configuration est nécessaire.

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 116
    Points : 85
    Points
    85
    Par défaut
    Bonjour,

    Oui, in_memory me sert pour avoir des utilisateurs lambda.

    Avec cette configuration, cela semble fonctionner.

  14. #14
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Pour ceux que ça intéresse, je suis tombé la dessus

    http://benjamin.leveque.me/symfony2-...-son-role.html

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 116
    Points : 85
    Points
    85
    Par défaut
    Super ! Merci !

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

Discussions similaires

  1. [Sécurité] Sécuriser zone membre
    Par Pepito2030 dans le forum Langage
    Réponses: 1
    Dernier message: 15/12/2006, 16h51
  2. [Forum] Intégrer sa zone membre dans un forum
    Par Bobtop dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 14/06/2006, 14h11
  3. Problème de configuration du firewall Zone Alarm
    Par kikou81 dans le forum Sécurité
    Réponses: 2
    Dernier message: 10/05/2006, 16h50
  4. [MySQL] Envoi identifiant d'une zone membre par mail
    Par vinche999 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 26/01/2006, 23h12
  5. [FLASH MX] Zone membre en xml
    Par ykodesign dans le forum Flash
    Réponses: 2
    Dernier message: 22/08/2005, 09h11

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