Autentificación básica j2ee

0

Por admin | Para la categoría de java j2ee | noticia del 27-05-2010

En este primer post sobre roles y autenficación en j2ee veremos algunos de los mecanismos utilizados por la tecnología java enterprice para solventar estas cuestiones

Introducción teórica

La tecnología de servlets tiene diversos métodos para implementar los procedimientos de autentificación

- básico http, Compendio http, basado en formularios, cliente https

En este ejemplo se muesta la forma básica http, mediante el objeto httpServletRequest, que devuelve la identificación del usuario remoto y por medio del objeto getAutType se devuelve el mecanismo de autenticación

Hay que añadir el usuario nuevo al archivo tomcat-users.xml que se encuentra en el directorio de apache tomcat\conf y allí editar el archivo. Una vez hecho eso se reincia tomcat para cargar los datos.

Código del servlet ZonaPrivada encargado de recuperar datos de la petición

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package conexion;
 
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
import java.io.*;
 
/**
 * Servlet implementation class for Servlet: ZonaPrivada
 *
 */
 public class ZonaPrivada extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
   static final long serialVersionUID = 1L;
 
    /* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#HttpServlet()
	 */
	public ZonaPrivada() {
		super();
	}   	
 
	/* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
 
		 response.setContentType("text/plain");
 
		 PrintWriter salida = response.getWriter();
 
 
		 String tipo = request.getAuthType();
 
 
		 salida.println("El tipo de autenticacion es: "+tipo);
 
		 salida.println("El usuario es "+request.getUserPrincipal().getName());
 
 
 
 
 
	}  	
 
 
}

Dentro del archivo web,xml se asigna la ruta /zonaprivada como ruta protegida, el nombre del rol como (usuariovalido) y un nombre de usuario (usuario) y una contraseña (válido).

configuración del servlet ZonaPrivada en el fichero web.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<servlet>
		<description>
		</description>
		<display-name>
		ZonaPrivada</display-name>
		<servlet-name>ZonaPrivada</servlet-name>
		<servlet-class>
		conexion.ZonaPrivada</servlet-class>
	</servlet>
 
      <servlet-mapping>
		<servlet-name>ZonaPrivada</servlet-name>
		<url-pattern>/zonaprivada</url-pattern>
	</servlet-mapping>

Configuración de las restricciones

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<security-constraint>
 
	<web-resource-collection>
	 <web-resource-name>Zona privada</web-resource-name>
	 <url-pattern>/zonaprivada</url-pattern>
	</web-resource-collection>	
	<auth-constraint>	
	 <role-name>usuariovalido</role-name>
	</auth-constraint>
 
	</security-constraint>
 
	<login-config>
	 <auth-method>BASIC</auth-method>
	 <realm-name>zona restringida</realm-name>
	</login-config>	
 
 
	<security-role>
	 <description>Usario Valido</description>
	 <role-name>usuariovalido</role-name>
	</security-role>

archivo tomcat-users.xml añadimos para el nuevo rol

1
2
3
4
5
6
7
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
 
  <role rolename="usuariovalido"/> 
  <user username="usuario" password="valido" roles="usuariovalido"/>
 
</tomcat-users>

formulario de identificación gestionado por tomcat

imagen resultado

enlace para colocar adecuadamente las restricciones en el fichero web.xml

enlace

Comentarios cerrados automáticamente al pasar más de un año