Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 15 sur 15
  1. #1
    Membre du Club
    Inscrit en
    février 2012
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : février 2012
    Messages : 101
    Points : 49
    Points
    49

    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 :
    1
    2
    3
    4
     
        role_hierarchy:
            ROLE_MEMBER:  [ ROLE_USER, ROLE_MEMBER ]
            ROLE_ADMIN:   [  ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ]
    Code :
    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 du Club
    Inscrit en
    février 2012
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : février 2012
    Messages : 101
    Points : 49
    Points
    49

    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 chevronné
    Homme Profil pro Stéphan
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Nom : Homme Stéphan
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : août 2011
    Messages : 461
    Points : 641
    Points
    641

    Par défaut

    Désolé utilisation du tel sur le site et hop mauvaise appui

  4. #4
    Membre du Club
    Inscrit en
    février 2012
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : février 2012
    Messages : 101
    Points : 49
    Points
    49

    Par défaut

    ah ok, ca me rassure

  5. #5
    Membre chevronné
    Homme Profil pro Stéphan
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Nom : Homme Stéphan
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : août 2011
    Messages : 461
    Points : 641
    Points
    641

    Par défaut

    Donc on va, je pense, faire du message dans cette partie
    Code :
    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 confirmé
    Inscrit en
    novembre 2008
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : novembre 2008
    Messages : 253
    Points : 235
    Points
    235

    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 du Club
    Inscrit en
    février 2012
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : février 2012
    Messages : 101
    Points : 49
    Points
    49

    Par défaut

    Bonjour,

    voici le security.yml
    Code :
    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 du Club
    Inscrit en
    février 2012
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : février 2012
    Messages : 101
    Points : 49
    Points
    49

    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 chevronné
    Homme Profil pro Stéphan
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Nom : Homme Stéphan
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : août 2011
    Messages : 461
    Points : 641
    Points
    641

    Par défaut

    Bon on va commencer par un petit peu de ménage.

    Code :
    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 confirmé
    Inscrit en
    novembre 2008
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : novembre 2008
    Messages : 253
    Points : 235
    Points
    235

    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 chevronné
    Homme Profil pro Stéphan
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Nom : Homme Stéphan
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : août 2011
    Messages : 461
    Points : 641
    Points
    641

    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 confirmé
    Inscrit en
    novembre 2008
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : novembre 2008
    Messages : 253
    Points : 235
    Points
    235

    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 du Club
    Inscrit en
    février 2012
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : février 2012
    Messages : 101
    Points : 49
    Points
    49

    Par défaut

    Bonjour,

    Oui, in_memory me sert pour avoir des utilisateurs lambda.

    Avec cette configuration, cela semble fonctionner.

  14. #14
    Membre chevronné
    Homme Profil pro Stéphan
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Nom : Homme Stéphan
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : août 2011
    Messages : 461
    Points : 641
    Points
    641

    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 du Club
    Inscrit en
    février 2012
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : février 2012
    Messages : 101
    Points : 49
    Points
    49

    Par défaut

    Super ! Merci !

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •