Le fichier de configuration security.yml
décrit les règles d'authentification et
d'autorisation pour une application symfony.
Lorsqu'une application est créée, symfony génère un fichier par défaut security.yml
dans le répertoire config/
de l'application qui décrit la sécurité pour
toute l'application (sous une clé par défaut) :
default: is_secure: false
Comme indiqué dans l'introduction, le fichier security.yml
bénéficie du
mécanisme de configuration en cascade
et peut inclure des constantes.
La configuration de l'application par défaut peut être substituée pour un module en
créant un fichier security.yml
dans le répertoire config/
du module. Les
clés principales sont les noms des actions sans le préfixe execute
(index
pour la
méthode executeIndex
par exemple).
Pour déterminer si une action est sécurisé ou non, symfony regarde pour l'information dans l'ordre suivant :
une configuration pour l'action spécifique dans le fichier de configuration du module, si elle existe;
une configuration pour l'ensemble du module dans le fichier de configuration du module si elle existe (sous la clé
all
);l'application de configuration par défaut (sous la clé
default
).
Les mêmes règles de priorité sont utilisées pour déterminer les credentials nécessaires pour accéder à une action.
note
Le fichier de configuration security.yml
est mis en cache dans un fichier PHP; le
processus est automatiquement géré par la classe
sfSecurityConfigHandler
.
Authentication
La configuration par défaut de security.yml
, installé par défaut pour chaque
application, autorise l'accès à n'importe qui :
default: is_secure: false
Par le paramètre is_secure
à true
dans le fichier security.yml
de
l'application, l'application entière demandera une authentification pour tous les utilisateurs.
note
Quand un utilisateur non-authentifié tente d'accéder à une action sécurisée, symfony
transmet la requête à l'action login
configurée dans settings.yml
.
Pour modifier les conditions d'authentification pour un module, créez un fichier security.yml
dans le répertoire config/
du module et définissez la clé all
:
all: is_secure: true
Pour modifier les conditions d'authentification pour une action individuelle d'un module, créez
un fichier security.yml
dans le répertoire config/
du module et définissez une
clé après le nom de l'action :
index: is_secure: false
tip
Il n'est pas possible de sécuriser l'action login. Il s'agit d'éviter une récursion infinie.
Authorization
Lorsqu'un utilisateur est authentifié, l'accès à certaines actions peuvent être encore plus limité en définissant les credentials. Quand les credentials sont définis, l'utilisateur doit disposer des credentials nécessaires pour accéder à l'action :
all: is_secure: true credentials: admin
Le système des credentials de symfony est simple et puissant. Un credential est une chaîne qui peut représenter tout ce dont vous avez besoin pour décrire le modèle de sécurité des applications (comme des groupes ou des autorisations).
Les clés credentials
supportent les opérations booléennes pour décrire les exigences
complexes des credentials en utilisant le tableau de notation.
Si un utilisateur doit disposer du credential A et du credential B, entourez les credentials avec des crochets :
index: credentials: [A, B]
Si un utilisateur doit disposer du credential A ou du credential B, entourez les credentials avec deux paires de crochets :
index: credentials: [[A, B]]
Vous pouvez également mélanger les crochets pour décrire tout type d'expression booléenne avec n'importe quel nombre de credential.
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.