29avr. 2008

La sécurité au niveau des actions

Ce qu'il faut savoir concernant la sécurisation des actions dans Symfony. La connaissance du mécanisme des sessions dans Symfony est un pré requis pour cet article.

la sécurété est constitué de deux étapes : déclaré les niveaux de sécurité et authtentifier les utilisateurs pour qu'ils puissent accèder aux actions sécurisées.

Restreindre l'accès

Avant d'eêtre exécuté les actions sont passé par un filtre. Ce filtre est défini dans apps/myapp/modules/mymodule/config/security.yml.

Exemple de fichier security.yml :

read:
is_secure:   off       # All users can request the read action
update:
is_secure:   on        # The update action is only for authenticated users
delete:
is_secure:   on        # Only for authenticated users
credentials: admin     # With the admin credential
all:
is_secure:  off        # off is the default value anyway

Symfony se comporte de la manière suivante :

  • Si l'utilisateur à les droits requis et qu'il est idientifié, l'action sera exécuté.

  • Si l'utilisateur est authentifié, mais n'a pas les droits requis il sera redirigé vers l'action sécurisé par défaut.

  • Sinon il sera redirigé l'action de login par défaut.

Les actions par défaut évoquées ci-dessus sont définies dans le fichier apps/myapp/config/settings.yml :

all:
.actions:
login_module:           default
login_action:           login
secure_module:          default
secure_action:          secure

Il existe un plugin appelé sfGuardPlugin qui étends la session et facilite l'implémentation des fonctions de login/logout.

Profil d'utilisateur complexe

Il est possible d'utiliser des combinaisons AND et OR