desglosando el componente de seguridad
DESCRIPTION
Internals del componente de seguridad de SyfmonyTRANSCRIPT
20-22 junio 2013 Madrid
Joan TeixidóDesarrollador backend en Onfan.com
gracias a mi familia...
gracias a...
@kriswallsmith
¿Por qué?
Objetivo
• Entender el flujo del componente de seguridad
• Conocer cuales son los protagonistas que intervienen en todo el proceso
autentificación <->
autorización
kernel.request kernel.responsekernel.controller kernel.view
security listener
HttpKernel
kernel.exceptionsecurity listener
FirewallEs solo un listener que
escucha al kernel.request
routerfirewall
etc..
kernel.request
listener A
firewall
listener Blistener C
AuthenticationProvider
Authentication Provider Manager
User Provider
Firewall & FirewallMap
Firewall
firewall
kernel.request
listeners
FirewallMap
• Contiene mapa de requestMatcher, colección de listeners y una exception listener
• Devuelve la colección de listeners y excepción en caso de coincidir la ruta
Firewall
• Escucha al kernel.request
• Mapea las rutas que requieren del component de seguridad
• Ejecuta una batería de listeners si coincide la ruta del request
• Añade al dispatcher un exceptionListener
listener A
firewall
listener Blistener C
AuthenticationProvider
Authentication Provider Manager
User Provider
RSecurity Context
Security ListenersListeners asociados al firewallMap.
Implementan ListenerInterface.
Contienen el método:
function handle(GetResponseEvent $event) { }
Listeners
Security Listeners
¿Qué tienen en común?
¿Qué más pueden hacer?
¿Cuándo se ejecutan?
Security Listeners• Context Listener -> se ocupa de la persistencia en sesión
• UsernamePasswordFormAuthenticationListener -> loguea user
• AnonymousAuthenticationListener -> crea token anonimo
• AccesListener -> maneja el acceso (autorización)
• BasicAuthenticationListener -> login por basic headers
• SwitchUserListener
• ChannelListener
• LogoutListener
• RememberMeListener
listener
firewall
authenticate
token
security context
• Tienen estados: autenticado /no autenticado
• Guarda la información del usuario
• Guarda los roles de los usuarios
• Almacena el token
• Capacidad para autenticar
• Puede autorizar un token
token
security context
listener A
firewall
listener B
AuthenticationProviderManager
listener C
Authentication Manager
listener A
firewall
listener Blistener C
AuthenticationProvider
Authentication Provider Manager
User Authentication Provider
listener A
firewall
listener Blistener C
AuthenticationProvider
Authentication Provider Manager
User Provider
User Provider
Authentication Manager• LLama al authentication provider con el token sólo si el
token sirve para ese provider
• Maneja las excepciones
listener
manager
User Authentication Provider• LLama al user provider y obtiene el usuario.
• Valida el usuario (chequea password y otros controles)
• Marca el token como autenticado y lo devuelve
• Busca el usuario en el repositorio de usuarios (BD, file, service)
User Provider
listener A
firewall
listener Blistener C
AuthenticationProvider
Authentication Provider Manager
User Provider
Autorización
• Proceso por el que damos permiso a un usuario autenticado a acceder a un determinado recurso
listener Afirewall
Autorización
listener C
Access Decision Manager VotersAccess MapAccess Listener
Access Listener
Access Map
Access Decision Manager
Voters
¿Tipos de voters?
Acl Voter
Authenticated Voter
Role Voter
listener Afirewall
Autorización
listener C
Access Decision Manager VotersAccess MapAccess Listener
nuevo en symfony 2.4
finhttps://joind.in/8836
http://symfony.com/video/1/security-in-real-life/English
http://www.slideshare.net/kriswallsmith/love-and-loss-a-symfony-security-play