Si me engañas una vez, tuya es la culpa. Si me engañas dos, la culpa es mía
ANAXÁGORAS de CLAZOMENE

Archivos en el mes de February del 2007

Libertad de opinión

No pensaba utilizar este blog para dar mis opiniones de nada, más allá de opinar que mi gata es la más preciosa del mundo.

Pero los recientes artículos que he leído (La SGAE contra todos (otra vez), Cárcel contra un blog egipcio, o el lío de la entrevista a JM García) te hacen valorar el hecho de que PUEDAS opinar, y del daño que hace la gente que abusa de este derecho (como la gente que hoy TE AFIRMA que esto es negro y mañana blanco).

Por eso os animo a usar y no abusar de esta libertad, y a fomentar su uso y recriminar su abuso.

PD, soy consciente que esta sección sólo puede llevarte a pensar mal de mí, y por tanto de mis opiniones, pero a quien no le guste que no lea :)

Implementación con Struts : Control de acceso a una aplicación web

  • Requisitos

Necesitamos implantar un control de acceso de usuarios lo más genérico y simple posible a una aplicación web desplegada sobre Tomcat. Para ello tendremos una lista de usuarios admitidos a la aplicación web con sus respectivas contraseñas.

  • Análisis

En la mayoría de aplicaciones web se necesita un control de acceso muy personalizado, para presentar la información personal de la persona que navega, las herramientas a las que tiene acceso y sus datos de trabajo personales, como su agenda. En general los mecanismos de identificación, cambio de contraseña y datos, mensajes personalizados, pantallas y enlaces particulares… Y por tanto exige un desarrollo personalizado y costoso.
Para desarrollar un mecanismo de control de acceso genérico de usuarios basado en Struts no necesitamos tanto (acceso.war, que no puedo subir).

Pero si es algo incluso más sencillo y no queremos código, Tomcat nos permite implementar esta funcionalidad de una forma rápida y sencilla.

  • Diseño

Necesitaremos la lista de usuarios y sus respectivas contraseñas, e identificar las zonas de la aplicación web de acceso restringido. Típicamente se restringe toda la aplicación, ya que si queremos algo más personal se desarrolla a medida.

  • Implementación

En el web.xml de la aplicación, declaramos los siguientes parámetros siguiendo las especificaciones de la DTD para mantener el orden:

  • Definimos la zona a la que aplicaremos el control de acceso (en este ejemplo, toda la aplicación web)
  • Asignamos un rol que permite el acceso a esta zona (en este ejemplo, intranet)
  • Definimos el tipo de control que implementaremos (BASIC en este ejemplo, debido a que no requiere desarrollo; FORM)
  • Declaramos los roles que se van a utilizar en la aplicación (en este caso, únicamente intranet).

<?xml version=”1.0″ encoding=”ISO-8859-1″?>

<!DOCTYPE web-app
PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN”
“http://java.sun.com/j2ee/dtds/web-app_2_2.dtd”>

<web-app>

<display-name>Aplicación Web</display-name>
<description>Descripción de la aplicación Web</description>

<!– Standard Action Servlet Configuration (with debugging) –>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>

<!– Standard Action Servlet Mapping –>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

<session-config>
<session-timeout>30</session-timeout>
</session-config>

<!– The Usual Welcome File List –>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<!– Struts Tag Library Descriptors –>
<taglib>
<taglib-uri>/tags/struts-layout</taglib-uri>
<taglib-location>/WEB-INF/struts-layout.tld</taglib-location>
</taglib>

<!– Seguridad –>

<security-constraint>
<web-resource-collection>
<web-resource-name>Área protegida</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>intranet</role-name>
</auth-constraint>
</security-constraint>

<!– Default login configuration uses form-based authentication –>

<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Autentificación por formulario</realm-name>
</login-config>

<!– Security roles referenced by this web application –>

<security-role>
<role-name>intranet</role-name>
</security-role>

</web-app>

Necesitamos crear los roles y los usuarios en el tomcat-users.xml:

<?xml version=’1.0′ encoding=’utf-8′?>
<tomcat-users>
<role rolename=”tomcat”/>
<role rolename=”role1″/>
<role rolename=”manager”/>
<role rolename=”admin”/>
<role rolename=”intranet”/>
<user username=”tomcat” password=”tomcat” roles=”tomcat”/>
<user username=”role1″ password=”tomcat” roles=”role1″/>
<user username=”both” password=”tomcat” roles=”tomcat,role1″/>
<user username=”desarrollo” password=”avanti” roles=”intranet”/>
<user username=”admin” password=”admin” roles=”admin,manager”/>
</tomcat-users>

  • Resultado

Control de Acceso a Aplicación Web

PFC

Bueno, por fin he terminado el Proyecto Fin de Carrera, Desarrollo de un Módulo genérico para la aplicación de Bandelets al tratamiento de imágenes, y por fin lo he defendido (16/02/2007). Aunque me gustaría mejorarlo todavía más y sobre todo escribir un artículo o un libro propiamente dicho, voy a colgar las versiones definitivas que se utilizaron en la defensa:

  • Anteproyecto, que se presentó hace tanto tiempo, que no tiene que ver mucho con la realidad final del proyecto.
  • Memoria, que contiene el PFC en sí. Trata la codificación, Teoría de "Wavelets", Teoría de "Bandelets", implementación práctica del algoritmo, comparación de resultados entre ambas teorías.
  • Presentación, guión para la presentación de la memoria del PFC.

pfc02.JPGpfc01.JPG

Fecha Actual Java

Buenas,

el problema es simple, necesitamos representar la fecha actual en Java, por ejemplo para imprimirla en la traza para determinar el tiempo que dura un proceso.

La solución es tan simple también. La clase java.util.Date maneja fechas, y su constructor nos devuelve un objeto con la fecha actual. Para el ejemplo de las trazas, el mejor método que podemos utilizar para imprimir la fecha es .getTime(), ya que nos devuelve los milisegundos que han pasado desde el 1 de Enero de 1970, y por tanto, nos permite medir el tiempo entre trazas en milisegundos.

qué es un blog ???

Llevo mucho tiempo queriendo organizar y publicar toda la información personal que tengo para el trabajo, y bueno, también compartir la belleza de mi gata con el mundo. Pero en el trabajo nunca hay tiempo, y después del trabajo sólo quiero tocar el ordenador para jugar al Enemy Territory… Siempre lo había dejado un poco de lado, pero la ex-página web de mi hermano, la de un amigo, y mi generosidad por compartir la belleza de mi gata con el mundo, me han animado a hacer algo FINALMENTE. ¿ Pero qué hacer ? ¿ Por qué un blog ? Necesito tiempo para adecentar un sitio personal en condiciones. Mientras tanto necesitaba algo para ir tirando, y me decidí por un blog. Para mí, no deja de ser un cajón de sastre donde puedo publicar cualquier cosa, y ya lo iré organizando en mi sitio después. Y como tal lo utilizaré. Pero para quien no sepa que es un blog o quiera saber más, consulte la wikipedia en español. Finalmente, en este blog espero publicar los pasos para realizar un sitio web, las cosas de trabajo que me puedan servir en el futuro, y algunas otras cosas de ocio para reutilizarlo luego en mi sitio, al que espero invitarles muy pronto Ciao

Comenta