Seguridad

PAUT-0041 (Pauta)

Madeja recomienda el uso del componente de seguridad utiliza la librería Spring Security . Spring Security System es un framework ligado al proyecto Spring, si bien se puede utilizar de manera independiente, que permite separar el código de la lógica de negocio del código que gestiona la seguridad.

La aplicación de políticas de seguridad en una aplicación de una cierta envergadura es un aspecto crítico y si no se adopta desde una perspectiva correcta puede llegar a ser una carga que afectará y lastrará el desarrollo del sistema.

Spring Security presenta las siguientes características:

  • Es un proyecto estable y seguro con varios años de desarrollo.
  • Single Sign On:Proporciona un sistema de autenticación a través del cual los usuarios pueden autenticarse y acceder a múltiples aplicaciones a través de un único punto de entrada.
  • Integración completa en Spring. Utiliza los mecanismos de configuración de Spring
  • Seguridad a nivel de instancia de objetos del dominio: En muchas aplicaciones es deseable definir listas de control de acceso (Access Control Lists o ACLs) para instancias de objetos del dominio individuales. Proporciona un completo paquete ACL con características que incluyen máscaras de bits, herencia de permisos, un repositorio utilizando JDBC, caché y un diseño pluggable utilizando interfaces.
  • Configuración no intrusiva:La totalidad del sistema de seguridad puede funcionar en una aplicación web utilizando los filtros que proporciona. No hay necesidad de hacer cambios especiales o añadir librarías al contenedor de Servlets o EJB.
  • Integración opcional con los contenedores: Las características de autenticación y autorización que proporcionan los contenedores Servlet o EJB pueden ser usadas utilizando los adaptadores que se incluyen. Actualmente existe soporte para los principales contenedores: Catalina (Tomcat), Jetty, JBoss y Resin
  • Mantiene los objetos libres de código de seguridad:Muchas aplicaciones necesitan proteger datos a nivel de objeto basándose en cualquier combinación de parámetros (usuario, hora del día, autoridad del usuario, método que es llamado, parámetros del método invocado,...). Acegi da esta flexibilidad sin necesidad de añadir código a los objetos de negocio.
  • Protección de peticiones HTTP. Además de proteger los objetos, el proyecto también permite proteger las peticiones HTTP. Ya no es necesario depender de restricciones de seguridad definidas en el fichero web.xml. Lo mejor de todo es que las peticiones HTTP pueden ser protegidas por una serie de expresiones regulares o expresiones de paths como las utilizadas por Ant, así como autenticación, autorización y gestores de reemplazo de credenciales para la ejecución como otro usuario, todo ello totalmente pluggable.
  • Librería de etiquetas. Proporciona una librería de etiquetas que puede ser utilizada en JSPs para garantizar que contenido protegido como enlaces y mensajes son únicamente mostrados a usuarios que poseen los permisos adecuados.
  • Configuración mediante el contexto de aplicación de Spring o basada en atributos. Permite seleccionar el método utilizado para la configuración de seguridad del entorno, tanto a través del contexto de aplicación de Spring o utilizando atributos en el código fuente utilizando Jakarta Commons Attributes.
  • Distintos métodos de almacenamiento de la información de autenticación: Acegi incluye la posibilidad de obtener los usuarios y permisos utilizando ficheros XML, fuentes de datos JDBC o implementando un interfaz DAO para obtener la información de cualquier otro lugar.
  • Soporte para eventos: Utilizando los servicios para eventos que ofrece Spring, se pueden configurar receptores propios para eventos como login, contraseña incorrecta y cuenta deshabilitada. Esto permite la implementación de sistemas de auditoria y bloqueo de cuentas, totalmente desacoplados del código de Acegi Security.
Madeja recomienda el uso de la librería Bouncy Castle para procesos de cifrado criptográfico.

La librería Bouncy Castle ofrece las siguientes características:

  • Un API de criptografía en Java
  • Un proveedor de JCE y JCA. También nos proporciona una implementación de JCE 1.2.1.
  • Una librería que permite escribir y leer objetos ASN.1 codificados.
  • Generadores de versiones 1 y 3 para certificados X.509, versión 2 de CRLs, y archivos PKCS12.
  • Generadores de la versión 2 para los certificados X.509.
  • Generadores / Procesadores para S/MIME y CMS (PKCS7/RFC 3852).
  • Generadores / Procesadores para OCSP (RFC 2560).
  • Generadores / Procesadores para TSP (RFC 3161).
  • Generadores / Procesadores para OpenPGP (RFC 2440).

Contenidos relacionados

Recursos
Área: Desarrollo » Aplicaciones Java » Librerías y Utilidades para Aplicaciones Java
Código Título Tipo Carácter
RECU-0236 Spring Security Ficha Técnica Recomendado
RECU-0235 Bouncy Castle Ficha Técnica Recomendado