desglosando el componente de seguridad

45
20-22 junio 2013 Madrid

Upload: joan-teixido

Post on 23-Jun-2015

1.334 views

Category:

Documents


0 download

DESCRIPTION

Internals del componente de seguridad de Syfmony

TRANSCRIPT

Page 1: Desglosando el componente de seguridad

20-22 junio 2013 Madrid

Page 2: Desglosando el componente de seguridad
Page 3: Desglosando el componente de seguridad

Joan TeixidóDesarrollador backend en Onfan.com

Page 4: Desglosando el componente de seguridad
Page 5: Desglosando el componente de seguridad

gracias a mi familia...

Page 6: Desglosando el componente de seguridad
Page 7: Desglosando el componente de seguridad

gracias a...

@kriswallsmith

Page 8: Desglosando el componente de seguridad

¿Por qué?

Page 9: Desglosando el componente de seguridad

Objetivo

• Entender el flujo del componente de seguridad

• Conocer cuales son los protagonistas que intervienen en todo el proceso

Page 10: Desglosando el componente de seguridad
Page 11: Desglosando el componente de seguridad

autentificación <->

autorización

Page 12: Desglosando el componente de seguridad

kernel.request kernel.responsekernel.controller kernel.view

security listener

HttpKernel

kernel.exceptionsecurity listener

Page 13: Desglosando el componente de seguridad

FirewallEs solo un listener que

escucha al kernel.request

Page 14: Desglosando el componente de seguridad

routerfirewall

etc..

kernel.request

Page 15: Desglosando el componente de seguridad

listener A

firewall

listener Blistener C

AuthenticationProvider

Authentication Provider Manager

User Provider

Page 16: Desglosando el componente de seguridad

Firewall & FirewallMap

Page 17: Desglosando el componente de seguridad

Firewall

Page 18: Desglosando el componente de seguridad

firewall

kernel.request

listeners

Page 19: Desglosando el componente de seguridad

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

Page 20: Desglosando el componente de seguridad

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

Page 21: Desglosando el componente de seguridad

listener A

firewall

listener Blistener C

AuthenticationProvider

Authentication Provider Manager

User Provider

RSecurity Context

Page 22: Desglosando el componente de seguridad

Security ListenersListeners asociados al firewallMap.

Implementan ListenerInterface.

Contienen el método:

function handle(GetResponseEvent $event) { }

Page 23: Desglosando el componente de seguridad

Listeners

Page 24: Desglosando el componente de seguridad

Security Listeners

Page 25: Desglosando el componente de seguridad

¿Qué tienen en común?

¿Qué más pueden hacer?

¿Cuándo se ejecutan?

Page 26: Desglosando el componente de seguridad

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

Page 27: Desglosando el componente de seguridad

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

Page 28: Desglosando el componente de seguridad

listener A

firewall

listener B

AuthenticationProviderManager

listener C

Page 29: Desglosando el componente de seguridad

Authentication Manager

Page 30: Desglosando el componente de seguridad

listener A

firewall

listener Blistener C

AuthenticationProvider

Authentication Provider Manager

Page 31: Desglosando el componente de seguridad

User Authentication Provider

Page 32: Desglosando el componente de seguridad

listener A

firewall

listener Blistener C

AuthenticationProvider

Authentication Provider Manager

User Provider

Page 33: Desglosando el componente de seguridad

User Provider

Page 34: Desglosando el componente de seguridad

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

Page 35: Desglosando el componente de seguridad

listener A

firewall

listener Blistener C

AuthenticationProvider

Authentication Provider Manager

User Provider

Page 36: Desglosando el componente de seguridad

Autorización

• Proceso por el que damos permiso a un usuario autenticado a acceder a un determinado recurso

Page 37: Desglosando el componente de seguridad

listener Afirewall

Autorización

listener C

Access Decision Manager VotersAccess MapAccess Listener

Page 38: Desglosando el componente de seguridad

Access Listener

Page 39: Desglosando el componente de seguridad

Access Map

Page 40: Desglosando el componente de seguridad

Access Decision Manager

Page 41: Desglosando el componente de seguridad

Voters

Page 42: Desglosando el componente de seguridad

¿Tipos de voters?

Acl Voter

Authenticated Voter

Role Voter

Page 43: Desglosando el componente de seguridad

listener Afirewall

Autorización

listener C

Access Decision Manager VotersAccess MapAccess Listener

Page 44: Desglosando el componente de seguridad

nuevo en symfony 2.4