CLIENTE/SERVIDOR EN INTERNET Programación Web: Introducción Dr. Víctor Jesús Sosa Sosa [email protected] CONTENIDO APLICACIONES WEB • Definiciones Básicas • URL • HTTP • HTML • Formularios HTML • Manejo de sesiones • Generación dinámica de HTML CGI Módulos compilados Scripts del lado del servidor Sistemas de publicación XML CONTENIDO APLICACIONES WEB • Clientes Dinámicos DOM Scripts (JavaScript) Applets ActiveX • Patrones de Arquitectura de Aplicaciones Web Cliente Web Delgado Web Grueso Web Object Cliente • Seguridad DEFINICIONES BÁSICAS El Web es hiperdocumentos. un sistema distribuido de Para observar un documento en la Web debe utilizarse una aplicación llamada visualizador y se debe indicar el nombre del documento y el nombre de la computadora donde éste puede ser encontrado. Las solicitudes de documentos son manipuladas por una aplicación denominada servidor Web. Cuando un visualizador solicita un documento, el servidor Web busca el documento en su sistema de archivos y lo envía al visualizador. DEFINICIONES BÁSICAS El término Web (telaraña) surge al observar el sistema como un conjunto de nodos con enlaces de interconexión. Un sitio Web estático es aquel donde todos los documentos están almacenados de manera definitiva en el sistema de archivos. Una aplicación Web es un sitio Web que permite la ejecución de lógica de trabajo por medio de un visualizador Web. Evolución de las Tecnologías del Web - Visualizadores Web gráficos e hipervínculos 1994 Web De Objetos Web Interactivo Web De Hipertexto Formatos -Tablas -CGIs 1995 Transacciones Protegidas - SSL - S-HTTP - Muros de Protección - E-cash Web de Java: - Applets - Componentes móviles 1996 Objetos Distribuidos - Orblets - Documentos Compuestos - ActiveX - CORBA - Cyberdog 1997 Evolución de las Tecnologías del Web Fundamentos del Web (Protocolos y Tecnologías) Internet, como red principal global. Protocolos de aplicaciones sobre TCP/IP (SMTP,Telnet, FTP, NNTP,Gopher) Internet, como red principal privada. Detrás de Firewalls. URLs, como forma de nombramiento y acceso global a todos los recursos del Web Esquema de protocolo http Dirección del Servidor ://www.direccion.com Número de puerto :8080 Recurso destino :/ruta/subdir/archivo.ext HTTP, para acceder a recursos nombrados con URLs. HTML, para incrustar hipervínculos y describir la estructura lógica de documentos. Visualizadores Web, como clientes universales. HTTP Hypertext Transfer Protocol (1.0 definido en RFC 1945 y 1.1 en RFC 2068). Define el formato y la manera en que deben ser transmitidos los mensajes y las acciones que los visualizadores y servidores Web deben realizar en respuesta a estos mensajes. Protocolo sin estado, no orientado a sesión, ya que cada comando requiere que se establezca una nueva conexión. Interacción Cliente/Servidor en el Web Visualizador Web 1 4 HTML 2 HTTP PC Visualizador Web TCP/IP Internet HTML HTTP 3 Documentos HTML HTTP MAC Servidor Web Cliente Middleware Servidor Formato de Solicitud de HTTP Visualizador Web HTML y formas HTTP Web Documentos HTML Solicitud Servidor HTTP Cliente Sintaxis de solicitud de HTTP Línea de Solicitud <method><resource identifier><HTTP version><crlf> [<Header> : <value>]<crlf> --[<Header> : <value>]<crlf> blank line <crlf> [Entity body] Campos de Encabezado de solicitud Cuerpo de entidad Ejemplo Línea de Solicitud GET /path/file.html HTTP/1.0 Accept: text/html Accept: audio/x User-agent: MacWeb Campos de Encabezado de solicitud Formato de Respuesta de HTTP Visualizador Web HTML y formas HTTP Web Documentos HTML Respuesta Servidor HTTP Cliente Sintaxis de respuesta de HTTP <HTTP version><result code>[<explanation>]<crlf> [<Header> : <value>]<crlf> --[<Header> : <value>]<crlf> blank line <crlf> [Entity body] Ejemplo HTTP/1.0 200 OK Server: CCSA/1.3 Mime_version: 1.0 Content_type: text/html Content_length: 2000 <HTML> --</HTML> Encabezado (estatus) de Respuesta Campos de Encabezado Cuerpo de entidad Encabezado re repuesta Campos de Encabezado Cuerpo de Entidad (es decir, Documento HTML) Métodos de HTTP Método HTTP/1.0 HTTP/1.1 GET S S Recuperar el URL especificado. Descripción del Método HEAD S S Idéntico a GET, salvo que el servidor no envía eldocumento en respuesta; solo envía los encabezados. Los clientes lo usan para obtener metadatos de recursos o para probar validez de vínculos de hipertexto. POST S S Enviar estos datos al URL especificado. PUT N S Almacenar estos datos en el URL especificado, remplazando lo anterior. PATCH N S Similar a PUT, salvo que contiene una lista de diferencias entre la versión original del URL y el contenido deseado tras la aplicación del método. COPY N S Copiar el recurso identificado por el URL en la(s) ubicación(es) especificada (s). MOVE N S Trasladar el recurso indicado por el URL a la(s) ubicación(es) especificada(s). Equivalete a usar COPY/DELETE DELETE N S Borra el recurso identificado por el URL. LICK N S Establecer una o más relaciones de vinculación entre el recurso identificado por el URL y otros recursos UCLICK N S Eliminar una o más relaciones de vinculación en el URL especificado. TRACE N S Notificar todo lo que se reciba del cliente en el cuerpo de entidad de la respuesta. OPTIOCS N S Solicita información de opciones disponibles. WRAPPED N S Permite que solicitudes se envuelvan en conjunto y quizá también se codifiquen para reforzar la seguridad y/o privacidad de la solicitud. El servidor destino debe desenvolver el mensaje y cederlo al manipulador apropiado Encabezados Generales de HTTP Encabezado HTTP/1.0 HTTP/1.1 Descripción del Método Cache-Control N S Instrucciones de Solicitud/Respuesta de memoria caché. Connection N S Infomación que no puede transmitirse a gateways. Date S S Fecha y hora de origen del mensaje. Forwarded N S Información usada por gateways para rastrear pasos intermedios y evitar lazos de solicitudes. Keep-Alive N S Información de diagnostico. MIME-Version S S Versión de MIME empleada para codificar el mensaje. Pragma S S Contiene instrucciones de implementación (por ejemplo, sin memoria caché) Upgrade N S Lista protocolos de comunicación adicionales que soporta un cliente y que querría usar previo acuerdo del servidor Encabezados de Solicitudes de HTTP Encabezado HTTP/1.0 HTTP/1.1 Accept N S Lista contenido aceptable de tipo/subtipo MIME. Descripción del Método Accept-Chars N S Lista conjunto de caracteres aceptables Accept-Encoding N S Lista codificaciones aceptables, como compresión y compresión con zip. Accept-Language N S Lista de lenguajes naturales aceptables. Authorization S S Transmite esquema de autenticación y codificación del usuario. From S S Contiene dirección de correo electrónico en Internet del usuario. Host N S Contiene nombre de anfitrión destino. If-Modified-Since S S Contiene una fecha/hora usada por GET para la descarga condicional de documentos. Proxy-Authorization N S Permite a clientes prestar su identidad a un representante. Refer S S URL del documento de origen de esta solicitud. Unless N S Lista condiciones de encabezado que deben cumplirse para que un método sea aplicado a un recurso. User-Agent S S Describe al visualizador. Encabezados de Respuesta de HTTP Encabezado HTTP/1.0 HTTP/1.1 Location S S Envía la ubicación exacta del recurso Descripción del Método Proxy-Authenticate N S Envía el esquema de codificación/autorización usado en esta sesión. Public N S Lista todos los métodos no estándar soportados por un servidor. Retry-After N S Indica (en segundos) cuando volver a intentar un servicio. Server S S Envía información sobre el software usado en el servidor. WWW-Authenticate S S Envía el esquema de codificación/autorización que desea usar el servidor en todas sus interacciones en el Web. Encabezados de Entidad de HTTP Encabezado HTTP/1.0 HTTP/1.1 Allow S S Lista los métodos soportados por el recurso de URL. Descripción del Método Content-Encoding S S Especifíca codificación de respuesta, como compresión y compresión con zip. Content-Language N S Especifica lenguaje natural de respuesta (por ejemplo, español) Content-Length S S Extensión en bytes del cuerpo de entidad. Content-Type S S Tipo de contenido MIME de respuesta. Content-Version N S Contiene un número de versión del recurso. Derived-From N S Identifica la versión anterior. Expires S S Contiene fecha/hora después de la cual el documento caduca. Last-Modified S S Contien fecha/hora de la modificación más recientedel recurso. Link N S Contiene información de vinculación del documento. Title N S Contiene el título del documento. Transfer-Encoding N S Identifica una transformación aplicada al documento (o cuerpo del mensaje) URL-Header N S Contiene la parte del nombre del recurso del URL. Códigos de Estado Códigos de Estado = “200” ; OK | “201”; Creado | “202”; Aceptado | “204”; Sin Contenido | “301”; Movido Permanentemente | “302”; Movido Temporalmente | “304”; No Modificado | “400”; Mala Solicitud | “401”; No autorizado | “403”; Prohibido | “404”; No encontrado | “500”; Error Interno en el Servidor | “501”; No implementado | “502”; Gateway equivocado | “503”; Servicio No Disponible | extensiones de códigos Transport Control Protocol: HTTP0.9 Host A TCP Host B SYN 1 RTT SYN 1 RTT ACK DATA DATA DATA FIN ACK Conexión cerrada por A DATA FIN Conexión cerrada por B ACK Transport Control Protocol: HTTP1.0 Host A Host B Host A DATA ACK Host B DATA G 1 RTT + 2G DATA 3 RTT + 2G ACK ACK DATA ACK Tamaño de Ventana 1 X1 = 1/RTT Tamaño de Ventana 3 X3 = 3/RTT HTTP 1.1 HTTP 1.1 arregla muchos de los problemas que tiene HTTP 1.0, pero es más complejo. Características principales: • Identifica Nombre de Host (permite host virtuales) • Negocia Contenidos (múltiples lenguajes) • Conecciones Persistentes (reduce sobrecarga en conexiones TCP) • Transferencias en Bloques • Rangos de Bytes (solicita partes de un documento) • Soporte de Proxy SISTEMAS DE PUBLICACIÓN XML Utilizan XML (Extensible Markup Language) y XSL (Extensible Styelsheet Language) para la separación del contenido y la presentación. Utilizan tecnologías existentes (e.g. Servlets) para el procesamiento de solicitudes HTTP. Ejemplos: Relevant. Cocoon, Bladerunner, SISTEMAS DE PUBLICACIÓN XML Ventajas: Mayor facilidad para la administración, especialmente de aplicaciones grandes. Separación completa de lógica, contenido y presentación. Desventajas: Mayor dificultad para crear la aplicación, ya que es más complicado utilizar XML/XSL que HTML directamente. Las herramientas no han alcanzado el nivel de madurez de otras opciones para la generación dinámica de código debido a que la tecnología de XML está constantemente evolucionando con mucha rapidez. PATRONES DE ARQUITECTURA PARA APLICACIONES WEB Cliente Web Delgado Cliente Web Grueso Web Object CLIENTE WEB DELGADO Es el más utilizado en aplicaciones para la Internet Se utiliza cuando los clientes tienen poco poder de computación o no se tiene control sobre su configuración Toda la lógica de trabajo se ejecuta en el servidor El visualizador es simplemente un instrumento de interfaz de usuario ELEMENTOS DEL PATRÓN CLIENTE WEB DELGADO Visualizador • Cualquier visualizador capaz formularios y aceptar galletas de mostrar Servidor Web • Los visualizadores interactúan con el sistema sólo por medio del servidor Web. • Procesan todas las solicitudes y pasan el control a otros servidores cuando las solicitudes son de módulos compilados o páginas con scripts de servidor. ELEMENTOS DEL PATRÓN CLIENTE WEB DELGADO Conexión HTTP • Toda la comunicación entre el cliente y el servidor se realiza con HTTP • Cada vez que el cliente y el servidor intercambian información, se produce una nueva conexión HTTP • En ocasiones se utiliza una variante llamada HTTPS o HTTP con SSL (Secure Sockets Layer), la cual permite cifrar la información transmitida utilizando algoritmos asimétricos (clave pública/clave privada) ELEMENTOS DEL PATRÓN CLIENTE WEB DELGADO Páginas HTML estáticas • Páginas con interfaz de usuario e información que no es producto de un procesamiento por parte del servidor • Típicamente contienen información explicativa o formularios • Cuando el servidor Web recibe una solicitud por una de estas páginas, simplemente envía el contenido archivo al cliente ELEMENTOS DEL PATRÓN CLIENTE WEB DELGADO Páginas de Servidor • Páginas producto de un procesamiento por parte del servidor • Típicamente implementadas mediante páginas con scripts del lado del servidor o mediante módulos compilados • Potencialmente tienen acceso a todos los recursos del servidor, tales como bases de datos, otros sistemas existentes, etc. ELEMENTOS DEL PATRÓN CLIENTE WEB DELGADO Servidor de Aplicaciones • Es la maquinaria que permite la ejecución de lógica del lado del servidor • Se acopla con el servidor Web • Puede, de hecho, ser una extensión del servidor Web, pero en algunos casos puede ser ejecutado en otra computadora. Sistemas existentes •Componentes a los cuales se tiene acceso mediante interfaces de programación o servidores de aplicación correspondientes •Ejemplos: Bases de datos, sistemas mercantiles, sistemas SCADA, etc. ELEMENTOS DEL PATRÓN CLIENTE WEB DELGADO Visualizador HTTP Servidor Web Servidor de Aplicaciones Páginas HTML Páginas de Servidor Objetos de Negocio/ Sistemas Existentes CLIENTE WEB GRUESO • Extiende el patrón Cliente Web Delgado mediante el uso de scripts (JavaScript) u objetos (Applets/ActiveX) del lado del cliente • El cliente ejecuta lógica de trabajo • Es apropiado para ser usado en ambientes donde hay control sobre la configuración del visualizador (e.g. Intranets) • Permite establecer interfaces de usuario sofisticadas ELEMENTOS DEL PATRÓN CLIENTE WEB GRUESO Scripts del lado del cliente • Código JavaScript, VBScript en las páginas HTML • El visualizador interpreta el script, el cual tiene acceso al DOM Controles ActiveX • Objetos COM que pueden ser referenciados por el cliente • Tienen acceso a todos los recursos del cliente • Pueden ser usados para incorporar lógica de trabajo y/o implementar interfaces de usuario sofisticadas • Seguridad mediante firma digital, la cual permite establecer la identidad del autor del componente ELEMENTOS DEL PATRÓN CLIENTE WEB GRUESO Java Applet • Componente compilado y autocontenido que se ejecuta en el visualizador • Tienen acceso limitado a los recursos del cliente • Pueden ser usados para incorporar lógica de trabajo y/o implementar interfaces de usuario sofisticadas • Seguridad mediante firma digital, la cual permite aumentar el acceso a los recursos del cliente ELEMENTOS DEL PATRÓN CLIENTE WEB GRUESO Visualizador Applets/ ActiveX HTTP Servidor Web Servidor de Aplicaciones Páginas HTML Páginas de Servidor Objetos de Negocio/ Sistemas Existentes WEB OBJECT Se basa en la utilización de la tecnología Web como parte de un sistema cliente/servidor de objetos distribuidos Es apropiado para ser usado en ambientes donde hay control sobre la configuración del visualizador y la conexión de red (e.g. Intranets) Se utilizan protocolos de objetos distribuidos para la comunicación entre clientes y servidores ELEMENTOS DEL PATRON WEB Object IIOP (Internet InterORB Protocol) •Protocolo de comunicación entre objetos CORBA (Common Object Request Broker Architecture) en redes IP DCOM (Distributed COM) •Protocolo para objetos COM (ActiveX) distribuidos RMI (Remote Method Invocation) •Interfaz de programación Java para objetos distribuidos. JRMP (Java Remote Method Protocol) es el protocolo más utilizado, pero también puede utilizarse IIOP. ELEMENTOS DEL PATRON WEB DELIVERY Visualizador HTTP ActiveX Cliente Applets Servidor Web Servidor de Aplicaciones Páginas HTML Páginas de Servidor RMI DCOM ActiveX Servidor Objetos de Negocio Enterprise JavaBeans IIOP SEGURIDAD Aseguramiento físico de las computadoras que contienen los servicios de la aplicación y de los equipos de red asociados. Aseguramiento lógico consta de los siguientes aspectos: • Autenticación • Confidencialidad • Integridad • No repudiación CONCEPTOS FUNDAMENTALES CERTIFICADO DIGITAL Documento firmado digitalmente por una entidad (Autoridad de Certificados) que afirma que la clave pública de otra entidad tiene un determinado valor. CLAVE PÚBLICA Número asociado a una entidad que debe ser conocido por cualquiera que desee interactuar de manera segura con dicha entidad. Se utiliza para verificar firmas digitales. CONCEPTOS FUNDAMENTALES FIRMA DIGITAL Secuencia corta de datos que se calcula aplicando un algoritmo sobre otra secuencia de datos (mensaje) que se desea firmar utilizando la clave privada de la entidad firmante. Permite determinar si la secuencia de datos ha sido modificada durante la transmisión. CLAVE PRIVADA Número asociado a una entidad que sólo debe ser conocido por dicha entidad. Se utiliza para calcular firmas digitales. FIRMA DIGITAL MENSAJE AL DESTINATARIO MENSAJE FUNCIÓN HASH RESULTADO HASH FUNCIÓN FIRMA FIRMA DIGITAL CLAVE PRIVADA CLAVE PÚBLICA MENSAJE DEL FIRMANTE FIRMA DIGITAL FUNCIÓN HASH RESULTADO HASH FUNCIÓN VERIFICA CIÓN VALIDEZ AUTENTICACION Identificación del cliente con el servidor Puede ser implementada por el servidor Web o por la aplicación misma Puede manejarse con contraseñas o con certificados digitales CONFIDENCIALIDAD Cifrado de la información transmitida La tecnología de cifrado más utilizada es SSL SSL es una capa que permite cifrar la información entre el protocolo de la capa de aplicación y la capa de transporte INTEGRIDAD Consiste en garantizar que la información transmitida no sea modificada en el camino Este aspecto es cubierto por SSL Cada mensaje cifrado por SSL tiene adicionalmente códigos de autenticación de mensaje (MAC), los cuales están basados en firmas digitales. NO REPUDIACION Consiste en asegurar que ambas partes en una transacción estén de acuerdo en que ésta se ha llevado a cabo Es implementada mediante certificados y firmas digitales, que permiten demostrar que el dueño del certificado estuvo involucrado en la transacción