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.
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.
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.
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>
