2004/12/22

El sentimiento

Hoy, me da verguenza ser Colombiano, y según creo, me han faltado algunos otros dias.

2004/12/18

Estrenando nueva galeria de fotos

Este breve mensaje para manifestar mi satisfacción por la nueva migración de todas mis galerias de fotos a un formato de visualización mucho mas bonito, agradable al usuario y administrable.

2004/12/06

JAAS

Despues de una ardua lectura sobre como estandarizar la autenticación y la autorización en aplicaciones Java, se llega a las siguientes alternativas:
  1. Estandar declarativa: Es decir, manejada por el contenedor por medio de los descriptores y JAAS. Esta tiene el problema de que la configuración de los usuarios y los roles es Application Server Specific (en JBoss 3.2 por ejemplo hay que heredar de una clase abstracta de LoginModule, que maneja unos metodos no estandar de LoginModule). Adicionalmente los ACLs al ser especificados mediante expresiones regulares reducidas sobre las URLs, toca cambiar el esquema de URL que se este manejando. En la actual aplicacion que construyo, involucra cambiar la jerarquia de los Actions de Struts que son los encargados de hacer la validación de autenticación y autorización, para delegarle esta tarea al contenedor. Esta hace uso de un action especial, que se encarga de atender el container por si solo y que adicionalmente hará caso omiso de los filtros definidos para las de mas URLs.
  2. Estadard programatica: Es decir, manejada en el aplicativo mismo, de forma programatica utilizando JAAS (un filtro es una buena opción, pero si todo se deja programatico, el cambio es bastante complejo).
  3. No estandar declarativa: Esto es, no utilizar JAAS, y tener descriptores (posiblmente en XML) para las ACLs.
  4. No estandar programatica: Esto es, no utilizar JAAS y no tener descriptores, sino realizarlo todo mediante codigo.
Proximamente revisare mas en detalle la arquitectura de seguridad de XPlanner para poder tomar una mejor decisión en este tema. Por lo que pude ver en una breve mirada, es que usan un filtro que utiliza JAAS y que es el encargado de hacer los chequeos de seguridad sin depender de la definición del application server, ni los limitados constraints del web.xml y ejb-jar.xml y sin embargo manteniendo versatilidad en el tema de permisos al permitir los cambios de forma declarativa. Sin embargo a primera vista, hay un cambio radical en una concepción inicial que tenia sobre el tema de Container Managed Persistence: Las opciones del aplicativo siempre se mostrarán y estaran disponibles para hacerles peticiones; cuando la petición ocurra son validadas las credenciales del usuario para denegar o rechazar la solicitud.

2004/12/05

Asegurando las JSPX en Struts

Aunque aparentemente podria ser traumatico, resulto ser un cambio de 5 minutos el poner todas las JSPX (View) bajo el directorio WEB-INF. Simplemente fueron necesarios unos pocos cambios en las rutas de las vistas en el archivo struts.xml y con esto se elimina el problema de visualización por defecto de carpetas que viene habilitado en JBoss y se obliga al uso del patron MVC. Aparentemente, se pensaria que los estilos e imagenes tambien deben ser movidos a la carpeta WEB-INF y por ende la creación de un controller para ellos, pero simplemente se dejan en su ubicación anterior y todo sigue perfecto. Algunos comentarios en JavaWorld indican posibles problemas en algunos Application Servers, y sugiere la utilización de un security constraint en el web.xml para todas las URL *.jspx. Al final esto podria utilizarse como un mecanismo de refuerzo de la seguridad, pero no soluciona el problema de visualización por defecto de carpetas sin index.html.

2004/12/04

Parametros finales en Java

Apesar de que no ofrece ninguna garantia sobre el cambio o no de un objeto en si mismo, los parametros finales dan la tranquilidad de que no se utilizará un parametro como una variable local y que la referencia inicial al objeto no será cambiada. Este cambio sobre toda la aplicación que actualmente construyo, no tomo mas de 20 minutos y da la tranquilidad de que futuras adiciones sobre los metodos, tienen una cosa menos para romper las pruebas de regresión.

2004/12/03

InputValidationFilter

Despues de solucionar el problema del encoding en UTF8 de todos los parametros enviados por Firefox en las peticiones POST, funciono a la perfección el InputValidationFilter anti Cross Site Scripting y anti SQL Injection. Lo pongo a la disposición del que lo necesite aqui