Me gustaría poder identificar a los clientes que ejecutan mi servlet sin necesidad de que tengan que poner nombre de usuario y contraseña. Es posible saber desde que host, ¿dirección IP o dirección MAC se conectan y de esta forma identificarlos?
Cuando el servidor invoca a tu servlet mediante el método doGet o doPost este le pasa como parámetro un objeto de tipo HttpRequest. Para conseguir la ip simplemente debes invocar al método getRemoteAddres de este objeto, tal y como puedes ver en el siguiente código: String sRemoteIP = request.getRemoteAddr();
El único método que uso es el service. ¿Así está mal hecho o también desde el método service puedo invocar a ese método? Muchas gracias por la rapidez
Hay alguna instrucción parecida para obtener la dirección MAC, porque si el usuario se conecta con una IP fija me valdría con la Ip, pero si no tendría que encontrar algo que fuera fijo, como la MAC. Gracias
Si miras en el interfaz de la clase servlet podrás ver que el método service tiene la siguiente declaración: service(HttpServletRequest, HttpServletResponse) Por tanto, si puedes acceder al método que te he comentado. Sobre la instrucción mac tienes que tener en cuenta que esta esta asociada la tarjeta de red. Normalmente cuando un usuario se conecta con ip dinámica a internet suele ser a través de modem, por lo que lógicamente no tenemos dirección mac, a no ser que el usuario tenga un tarjeta de red en el equipo. Otro problema que tienes es que mucho usuarios se conectan a internet mediante un proxy, por lo que desde el punto de vista de un servidor web todos tienen la misma ip. Desconozco si hay alguna función en java que te permita acceder al mac, pero lo normal es que no la haya, debes de tener en cuenta que java en independiente de la plataforma, y no te permitirá acceder al hardware para obtener esta dirección. El problema de la identificación tiene fácil solución, sin complicarte con el tema de direcciones ip. ¿Has pensado en utilizar una cookie? La cookie es una cadena de texto que se almacena en el ordenador cliente. La cookie es personal del usuario, cada usuario que tenga una cuenta en la maquina tendrá sus propias cookies. La primera vez que un usuario entra le pides la password y creas una cookie que lo identifique. No te preocupes por que la información quede guardada en un fichero, el navegador las encripta, aunque lo mejor es que almacenes en la cookie un valor que identifique al usuario, nada de passwords que puedan comprometer la seguridad. La segunda vez que el usuario intenta acceder al sistema tu servlet intenta de leer la cookie y si esta existe, coge de ella el identificador del usuario y le permite la entrada directa al correo. Este método lo utilizan muchos portales de internet para mostar al usuario portales personalizados. Ademas puedes configurar el tiempo de vida de la cookie, es decir, puedes controlar que si un usuario lleva un demasiado tiempo sin entrar en el sistema, cuando este vuelva a intentarlo se le pida la password de nuevo. Desde mi punto de vista esta es la mejor solución.