Desglosando el componente de seguridad

1,707 views

Published on

Internals del componente de seguridad de Syfmony

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,707
On SlideShare
0
From Embeds
0
Number of Embeds
992
Actions
Shares
0
Downloads
38
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Desglosando el componente de seguridad

  1. 1. 20-22 junio 2013Madrid
  2. 2. Joan TeixidóDesarrollador backend en Onfan.com
  3. 3. gracias a mi familia...
  4. 4. gracias a...@kriswallsmith
  5. 5. ¿Por qué?
  6. 6. Objetivo• Entender el flujo del componente deseguridad• Conocer cuales son los protagonistas queintervienen en todo el proceso
  7. 7. autentificación<->autorización
  8. 8. kernel.request kernel.responsekernel.controller kernel.viewsecurity listenerHttpKernelkernel.exceptionsecurity listener
  9. 9. FirewallEs solo un listener queescucha al kernel.request
  10. 10. routerfirewalletc..kernel.request
  11. 11. listener Afirewalllistener Bener CAuthenticationProviderAuthenticationProvider ManagerUserProvider
  12. 12. Firewall & FirewallMap
  13. 13. Firewall
  14. 14. firewallkernel.requestlisteners
  15. 15. FirewallMap• Contiene mapa de requestMatcher,colección de listeners y una exceptionlistener• Devuelve la colección de listeners yexcepción en caso de coincidir la ruta
  16. 16. Firewall• Escucha al kernel.request• Mapea las rutas que requieren delcomponent de seguridad• Ejecuta una batería de listeners si coincidela ruta del request• Añade al dispatcher un exceptionListener
  17. 17. listener Afirewalllistener Bener CAuthenticationProviderAuthenticationProvider ManagerUserProviderRSecurity Context
  18. 18. Security ListenersListeners asociados al firewallMap.Implementan ListenerInterface.Contienen el método:function handle(GetResponseEvent $event) { }
  19. 19. Listeners
  20. 20. Security Listeners
  21. 21. ¿Qué tienen en común?¿Qué más pueden hacer?¿Cuándo se ejecutan?
  22. 22. Security Listeners• Context Listener -> se ocupa de la persistencia en sesión• UsernamePasswordFormAuthenticationListener -> logueauser• AnonymousAuthenticationListener -> crea token anonimo• AccesListener -> maneja el acceso (autorización)• BasicAuthenticationListener -> login por basic headers• SwitchUserListener• ChannelListener• LogoutListener• RememberMeListener
  23. 23. listenerfirewallauthenticatetokensecurity 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 tokentokensecurity context
  24. 24. listener Afirewalllistener BAuthenticationProviderManageristener C
  25. 25. Authentication Manager
  26. 26. listener Afirewalllistener Bener CAuthenticationProviderAuthenticationProvider Manager
  27. 27. User Authentication Provider
  28. 28. listener Afirewalllistener Bener CAuthenticationProviderAuthenticationProvider ManagerUserProvider
  29. 29. User Provider
  30. 30. Authentication Manager• LLama al authentication provider con el token sólo si eltoken sirve para ese provider• Maneja las excepcioneslistenermanagerUser 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
  31. 31. listener Afirewalllistener Bener CAuthenticationProviderAuthenticationProvider ManagerUserProvider
  32. 32. Autorización• Proceso por el que damos permiso a unusuario autenticado a acceder a undeterminado recurso
  33. 33. listener AfirewallAutorizaciónener CAccess Decision Manager VotersAccess MapAccess Listener
  34. 34. Access Listener
  35. 35. Access Map
  36. 36. Access Decision Manager
  37. 37. Voters
  38. 38. ¿Tipos de voters?AclVoterAuthenticatedVoterRoleVoter
  39. 39. listener AfirewallAutorizaciónener CAccess Decision Manager VotersAccess MapAccess Listener
  40. 40. nuevo en symfony 2.4
  41. 41. finhttps://joind.in/8836http://symfony.com/video/1/security-in-real-life/Englishhttp://www.slideshare.net/kriswallsmith/love-and-loss-a-symfony-security-play

×