desglosando el componente de seguridad

Post on 23-Jun-2015

1.334 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Internals del componente de seguridad de Syfmony

TRANSCRIPT

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

top related