Spring Security es un marco Java / Java EE que proporciona autenticación , autorización y otras características de seguridad para aplicaciones empresariales. El proyecto se inició a finales de 2003 como 'Acegi Security' (pronunciado Ah-see-gee / ɑː s iː dʒ iː / , cuyas letras son los caracteres primero, tercero, quinto, séptimo y noveno del alfabeto inglés, con el fin de prevenir conflictos de nombre [2] ) por Ben Alex, que fue lanzado públicamente bajo la Licencia Apache en marzo de 2004. Posteriormente, Acegi se incorporó a Springcartera como Spring Security, un subproyecto oficial de Spring. El primer lanzamiento público con el nuevo nombre fue Spring Security 2.0.0 en abril de 2008, con soporte comercial y capacitación disponible en SpringSource .
Desarrollador (es) | 4 |
---|---|
Lanzamiento estable | 5.2.1 / 4 de noviembre de 2019 [1] |
Escrito en | Java |
Sistema operativo | Multiplataforma |
Tipo | seguridad del marco de aplicación web |
Licencia | Licencia Apache 2.0 |
Sitio web | proyectos |
Flujo de autenticación
El diagrama 1 muestra el flujo básico de una solicitud de autenticación utilizando el sistema Spring Security. Muestra los diferentes filtros y cómo interactúan desde la solicitud inicial del navegador, hasta una autenticación exitosa o un error HTTP 403.
El navegador envía " credenciales de autenticación " | |
" Mecanismo de autenticación " recopila los detalles | |
Una " petición de autenticación " objeto se construyó | |
Solicitud de autenticación enviada a un AuthenticationManager | |
AuthenticationManager (este es responsable de pasar las solicitudes a través de una cadena de AuthenticationProviders ') | |
El " proveedor de autenticación " le pedirá a UserDetailsService que proporcione un objeto UserDetails | |
El objeto UserDetails resultante (que también contiene los GrantedAuthority [] s ) se utilizará para construir el objeto Authentication completamente poblado . | |
Si el " mecanismo de autenticación " recibe el objeto de autenticación completamente poblado , considerará que la solicitud es válida, colocará la autenticación en SecurityContextHolder ; y hacer que se vuelva a intentar la solicitud original. Si, por otro lado, AuthenticationProvider rechazó la solicitud, el mecanismo de autenticación le pedirá al agente de usuario que vuelva a intentarlo. | |
AbstractSecurityInterceptor autoriza la solicitud regenerada y lanza excepciones de Java. (Pide una decisión a AccessDecisionManager ). | |
ExceptionTranslationFilter traduce las excepciones lanzadas por AbstractSecurityInterceptor en códigos de error relacionados con HTTP | |
Código de error 403: si el principal ha sido autenticado y, por lo tanto, simplemente carece de acceso suficiente, inicie un AuthenticationEntryPoint , si el principal no ha sido autenticado, que es un mecanismo de autenticación. |
Funciones de autenticación clave
- LDAP (utilizando estrategias de comparación de contraseñas y basadas en enlaces) para centralizar la información de autenticación.
- Capacidades de inicio de sesión único mediante el popular Servicio de autenticación central .
- Módulo de inicio de sesión del Servicio de autenticación y autorización de Java (JAAS), un método de autenticación basado en estándares que se utiliza en Java. Tenga en cuenta que esta función es solo una delegación a un módulo de inicio de sesión de JAAS.
- Autenticación de acceso básico como se define a través de RFC 1945.
- Autenticación de acceso implícita según se define a través de RFC 2617 y RFC 2069.
- Presentación del certificado de cliente X.509 sobre el estándar Secure Sockets Layer .
- CA, Inc SiteMinder para autenticación (un popular producto de administración de acceso comercial).
- Soporte similar a Su (Unix) para cambiar la identidad principal a través de una conexión HTTP o HTTPS .
- Ejecutar como reemplazo, que permite que una operación asuma una identidad de seguridad diferente.
- Autenticación anónima, lo que significa que incluso a los principales no autenticados se les asigna una identidad de seguridad.
- Soporte de adaptador de contenedor (dominio personalizado) para Apache Tomcat , Resin , JBoss y Jetty (servidor web) .
- Windows NTLM para permitir la integración del navegador (experimental).
- Autenticación de formulario web , similar a la especificación del contenedor de servlets .
- Soporte "Recuérdame" a través de cookies HTTP .
- Soporte de sesión concurrente, que limita el número de inicios de sesión simultáneos permitidos por un principal.
- Soporte completo para personalización y conexión de implementaciones de autenticación personalizadas.
Funciones de autorización clave
- Autorización de invocación del método AspectJ .
- Autorización HTTP de URL de solicitud web mediante una selección de rutas de Apache Ant o expresiones regulares .
Funciones de seguridad basadas en instancias
- Se utiliza para especificar listas de control de acceso aplicables a objetos de dominio .
- Spring Security ofrece un repositorio para almacenar, recuperar y modificar ACL en una base de datos .
- Se proporcionan funciones de autorización para hacer cumplir las políticas antes y después de las invocaciones de métodos.
Otras características
- Localización de software para que los mensajes de la interfaz de usuario puedan estar en cualquier idioma.
- Seguridad del canal, para cambiar automáticamente entre HTTP y HTTPS al cumplir reglas particulares.
- Almacenamiento en caché en todas las áreas del marco que tocan la base de datos.
- Publicación de mensajes para facilitar la programación impulsada por eventos .
- Soporte para realizar pruebas de integración a través de JUnit .
- Spring Security tiene pruebas de aislamiento completas de JUnit .
- Varias aplicaciones de muestra, JavaDocs detallados y una guía de referencia.
- Independencia del marco web.
Lanzamientos
- 2.0.0 (abril de 2008)
- 3.0.0 (diciembre de 2009)
- 3.1.0 (7 de diciembre de 2011)
- 3.1.2 (10 de agosto de 2012)
- 3.2.0 (16 de diciembre de 2013)
- 4.0.0 (26 de marzo de 2015)
- 4.1.3 (24 de agosto de 2016)
- 4.2.0 (10 de noviembre de 2016)
- 3.2.10, 4.1.4, 4.2.1 (22 de diciembre de 2016)
- 4.2.2 (2 de marzo de 2017)
- 4.2.3 (8 de junio de 2017)
- 5.0.0 (28 de noviembre de 2017)
- 5.0.8, 4.2.8 (11 de septiembre de 2018) [3]
- 5.1.0 GA (27 de septiembre de 2018) [4]
- 5.1.1, 5.0.9, 4.2.9 (16 de octubre de 2018) [5]
- 5.1.2, 5.0.10, 4.2.10 (29 de noviembre de 2018) [6]
- 5.1.3, 5.0.11, 4.2.11 (11 de enero de 2019) [7]
- 5.1.4 (14 de febrero de 2019) [8]
- 5.1.5, 5.0.12, 4.2.12 (3 de abril de 2019) [9]
Referencias
- ^ "Spring Security 5.2.1 y 5.1.7 liberados" . spring.io . Consultado el 4 de diciembre de 2019 .
- ^ "¿Por qué el nombre Acegi?" . spring.io .
- ^ "Spring Security 5.0.8 y 4.2.8 lanzados" . spring.io . Consultado el 9 de junio de 2019 .
- ^ "Spring Security 5.1 pasa a GA" . spring.io . Consultado el 9 de junio de 2019 .
- ^ "Spring Security 5.1.1, 5.0.9 y 4.2.9 lanzados" . spring.io . Consultado el 9 de junio de 2019 .
- ^ "Spring Security 5.1.2, 5.0.10, 4.2.10 liberado" . spring.io . Consultado el 9 de junio de 2019 .
- ^ "Spring Security 5.1.3, 5.0.11, 4.2.11 lanzado" . spring.io . Consultado el 9 de junio de 2019 .
- ^ "Spring Security 5.1.4 lanzado" . spring.io . Consultado el 9 de junio de 2019 .
- ^ "Spring Security 5.1.5, 5.0.12, 4.2.12 lanzado" . spring.io . Consultado el 9 de junio de 2019 .
enlaces externos
- Página web oficial