Seguridad

1. El fichero Ej1.java contiene un applet que grabar� un texto en un fichero de la m�quina local donde se ejecute. Se pide:

a) Compilar y ejecutar la clase Ej1 tanto como aplicaci�n y como applet. Para probar el applet se proporciona la p�gina de prueba Ej1.html. �Por qu� esta clase permite ser ejecutada de las dos formas?

b) Intentar grabar el texto en un fichero en la aplicaci�n y en el applet. �Qu� ocurre en cada caso? �Por qu�?

c) Instalar un gestor de seguridad al cargar la aplicaci�n en la l�nea de comandos. �Qu� ocurre en este caso?

d) Ahora a�adiremos el gestor de seguridad en el c�digo de la aplicaci�n (no en la l�nea de comandos). Ejecutar la aplicaci�n y comprobar que el comportamiento es el mismo que en el caso anterior. Pero, �qu� ocurre si ejecutamos el programa como applet? �Por qu�?

e) Si queremos permitir que el applet escriba en un fichero, �qu� tendremos que hacer? Otorgar los permisos necesarios y comprobar que puede escribir correctamente el fichero.

2. (CHAT) Vamos a convertir nuestra aplicaci�n cliente de chat en un applet. Se pide:

a) Cambiar la clase principal de la aplicaci�n del chat, haciendo que herede de JApplet en lugar de JFrame. Se puede a�adir un m�todo main como el del ejercicio anterior para permitir que la aplicaci�n se ejecute como aplicaci�n y como applet. Crear una p�gina HTML de prueba (AppletChat.html) similar a la del ejercicio anterior. Comprobar que se puede cargar correctamente de ambas formas.

b) Vamos a probar conectándonos a un servidor alojado en otra máquina. Para ello deberemos obtener la IP de la máquina de un compañero mediante el siguiente comando:

 ipconfig

Una vez tenemos la IP ejecutar el servidor de chat en su máquina, y cargar el cliente del chat en la nuestra conectándonos a la IP del otro equipo. Probar que cargándolo como aplicación funciona correctamente. Ahora probar a cargarlo como applet, �qu� ocurre? �Por qu�? �C�mo podr�amos solucionar el problema?

c) Imaginemos que vamos a poner el chat para que cualquiera pueda acceder a él en una web sin tener que otorgar ningún permiso. ¿Qué deberemos hacer para que esto sea posible? Debemos tener en cuenta que el usuario que se conecta a la web no sabrá cuál es la IP del servidor para conectarse a él. Además deberemos permitir que la IP del servidor pueda cambiar, o podamos llevarnos el chat a otro servidor web sin necesidad de cambiar el código fuente y recompilar. ¿Cómo haremos entonces para conocer la dirección a la que debe conectarse el applet cliente? (PISTA: Buscar entre los métodos de la clase Applet aquel que nos proporcione la información que buscamos)

Implementar la conexión al servidor utilizando este método. El applet deberá establecer la conexión con el servidor donde está alojado en el momento de su inicialización, sin tener el usuario que introducir a mano la IP y pulsar conectar (podemos eliminar este campo).

Ahora vamos a probar el chat tal como se vería desde la web. Para ello debemos instalar un servidor web, en este caso Tomcat:

Probar a conectarse varios usuarios a una misma web desde distintas máquinas y comprobar que el chat funciona correctamente.

3. (CHAT OPTATIVO) Vamos a a�adir un nuevo bot�n a la aplicaci�n de chat que nos permita guardar el buffer de texto en un fichero, de forma que podamos almacenar nuestras conversaciones.

a) A�adir el bot�n y la funci�n de guardar todo el texto del �rea de texto del chat en un fichero. Podemos abrir un cuadro de di�logo para que el usuario pueda elegir el fichero donde guardar la conversaci�n. Este cuadro de di�logo est� incluido entre las clases de Swing, buscar en la documentaci�n la forma de crearlo y utilizarlo.

b) Probar la funci�n de guardar el buffer ejecut�ndolo como aplicaci�n y comprobar que funciona correctamente. 

c) Ejecutarlo como applet, �qu� ocurre en este caso al intentar grabar un fichero? A�adir los permisos necesarios para que se pueda grabar cualquier fichero que quiera el usuario.