martes, 26 de mayo de 2015

Servicios Web

6.1. Conceptos generales

Un servicio web (en inglés, Web services) es una tecnología que utiliza un conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones. Distintas aplicaciones de software desarrolladas en lenguajes de programación diferentes, y ejecutadas sobre cualquier plataforma, pueden utilizar los servicios web para intercambiar datos en redes de computadoras como Internet. La interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la arquitectura y reglamentación de los servicios Web. Para mejorar la interoperabilidad entre distintas implementaciones de servicios Web se ha creado el organismo WS-I, encargado de desarrollar diversos perfiles para definir de manera más exhaustiva estos estándares. Es una máquina que atiende las peticiones de los clientes web y les envía los recursos solicitados.
Resultado de imagen para imagenes de web


Características de los servicios Web

Ciertamente, la comunicación programa-programa en un entorno distribuido no es una idea novedosa introducida con los servicios Web. Otras tecnologías más antiguas, como CORBA o DCOM, permiten implementar este tipo de soluciones de forma más o menos exitosa, aunque con ciertas limitaciones en unos casos y con excesiva complejidad en otros.

Sin embargo, los servicios Web poseen una serie de características que los hacen preferibles a estas otras tecnologías. Entre ellas cabe destacar:

* Utilización de estándares existentes. La base de la arquitectura de servicios Web la constituye el protocolo HTTP y el estándar XML. De hecho, la comunicación cliente-servicio Web se lleva a cabo mediante el intercambio de documentos XML entre ambos, utilizando HTTP como protocolo de comunicación. Ver figura.

* Independencia de la plataforma. La utilización de XML como formato de intercambio de información entre el cliente y el servicio Web permite que la comunicación entre ambos pueda realizarse independientemente de la tecnología o lenguaje con el que tanto uno como otro estén implementados, así como de la plataforma en la que se ejecuten.

* Nuevos estándares abiertos. HTTP y XML constituyen la base principal de los servicios Web. No obstante, se han desarrollado una serie de tecnologías que permiten estandarizar operaciones como la descripción o la publicación de un servicio Web. Estas tecnologías han sido ampliamente aceptadas por la gran mayoría de fabricantes software, que además las han incluido en sus plataformas y soluciones.

Estructura interna de un servicio Web.

La estructura y complejidad de un servicio Web depende de las funciones a realizar y del tipo de servicio que se trate. En cualquier caso se pueden distinguir dos componentes básicos:

* Componente software. Se trata de componentes de código reutilizable que implementan la funcionalidad del servicio, sus métodos pueden incluir acceso a diferentes fuentes de datos. La funcionalidad que proporcionan puede ser compartida por el resto de módulos que forman parte de la aplicación Web. Estos componentes pueden estar implementados con cualquier tecnología software; en el caso de .NET esta funcionalidad estaría implementada mediante clases independientes compiladas en un ensamblado dll, mientras que en el caso, por ejemplo, de J2EE, podrían estar implementados mediante uno o varios Enterprise JavaBeans.

* Servidor SOAP. Hace de interfaz entre el cliente y el componente que implementa el servicio. La comunicación entre el cliente y el servicio Web se realiza vía XML, utilizando un protocolo de codificación conocido como SOAP. Así que por un lado este módulo debe encargarse de decodificar las peticiones SOAP que llegan desde el cliente e invocar a los métodos del componente, mientras que por otro, debe codificar los resultados devueltos por el componente en mensajes SOAP y enviarlos al cliente. En .NET esta labor se llevaría a cabo mediante páginas aspx dentro de una aplicación ASP.NET, mientras que en J2EE podría implementarse a través de servlets y páginas JSP.

Como veremos, el entrono de desarrollo Visual Studio.NET proporciona un tipo de proyecto que posibilita la generación automática de estos componentes a partir de la definición de los métodos que el servicio Web debe exponer.

6.2 Estándares

Uno de los atributos clave de estándares de Internet es que se centran en protocolos y no en implementaciones. Internet se compone de tecnologías heterogéneas que operan conjuntamente de modo satisfactorio mediante protocolos compartidos. Esto impide que los proveedores individuales impongan un estándar en Internet. El desarrollo del software de código fuente abierto desempeña un rol fundamental para proteger la interoperatividad de implementaciones de estándares del proveedor.

XML-RPC Protocolo simple basado en xml para el intercambio de información entre sistemas Los Requests son codificados en xml y enviados vía HTTP POST. Las respuesta son embebidas en el cuerpo de la respuesta HTTP. Es independiente de la plataforma SOAP Protocolo de comunicación basado en xml para intercambio de mensajes entre sistemas. Especifica un formato para el intercambio de mensajes es independiente del lenguaje y de la plataforma. Es extensible, es desarrollado por la W3C WSDL Es un formato estándar basado en xml para describir servicios web y mostrar como acceder a ellos. UDDI Es un lenguaje estándar basado en xml para describir, publicar y encontrar servicio web. Es independiente de plataforma y puede comunicarse mediante SOAP, CORBA y JAVA Rmi.

Un proveedor de servicios aloja un servicio Web y lo hace accesible con protocolos como SOAP/HTTP o SOAP/JMS. El servicio Web se describe mediante un documento WSDL que se almacena en el servidor del proveedor o en un depósito especial. UDDI Business Registry y sus documentos WSDL pueden hacer referencia al documento WSDL. Estos contienen punteros a los archivos WSDL del servicio Web.

Los perfiles WS-I Simple SOAP Binding Profile y WS-I Attachments Profile son esquemas de requisitos que el tráfico de WSDL y de protocolo de servicio Web (SOAP/HTTP) deben cumplir para afirmar la conformidad WS-I. Las herramientas de validación WS-I de servicios Web admiten actualmente WS-I Simple SOAP Binding Profile 1.0 y Attachment Profile 1.0. Para consultar las especificaciones, consulte el sitio Web de WS-I y bajo Resources (Recursos) seleccione Documentation (Documentación): http://www.ws-i.org

Aunque esta definición es un poco compleja por la cantidad de elementos involucrados, es importante resaltar que XML permite representar documentos («documento» se refiere no sólo a textos, sino también gráficos, correos electrónicos, transacciones de comercio electrónico, etc.) y que todo documento XML posee una estructura lógica y una física. Físicamente, el documento está compuesto de unidades llamadas entidades. Una entidad, en términos más simples, puede verse como un «trozo de documento», es decir, puede ser un simple carácter o todo el capítulo de un libro. Todo documento tiene una entidad raíz.


Según el consorcio W3C (World Wide Web Consortium), encargado de la definición del estándar, WSDL es «un formato XML para la descripción de servicios de red, como un conjunto de puntos finales operando sobre mensajes que contienen información orientada a documentos u orientada a procesos». Las operaciones y mensajes se describen en forma abstracta y luego se asocian a un protocolo de red o a un formato de mensaje específico, para definir un punto final. WSDL se extiende para permitir la descripción de los puntos finales y sus mensajes, sin importar qué formatos de mensaje o protocolos de red se estén utilizando para la comunicación.

6.3 Seguridad e Interoperabilidad


La característica principal de un Servicio Web es que le permite cierto grado de flexibilidad,accesibilidad yinteroperabilidad. Esto permite que los desarrolladores abstraigan la lógica de negocio y se centren en el desarrollo del servicio sin preocuparse de los criterios anteriormente citados.


El Instituto de Ingenieros Eléctricos y Electrónicos (IEEE) define interoperabilidad como la habilidad de dos o más sistemas o componentes para intercambiar información y utilizar la información intercambiada.

La característica principal de un Servicio Web es que le permite cierto grado de flexibilidad, accesibilidad y interoperabilidad. Esto permite que los desarrolladores abstraigan la lógica de negocio y se centren en el desarrollo del servicio sin preocuparse de los criterios anteriormente citados.

Como objetivos básicos a cubrir por la seguridad de un servicio WEB
Es necesario asegurar que existe una autenticación mutua entre el cliente que accede a los servicios web y el proveedor de dichos servicios.
Se debe mantener una política de autorización del acceso a recursos y, más importante, a operaciones y procesos en un entorno en el que debe administrarse y controlarse el acceso de clientes, proveedores, vendedores, competidores y los posibles ataques que reciban de personal externo.
Mantener al cliente identificado, de manera que se identifique una sola vez y pueda acceder a servicios en diversos sistemas, sin que resulte necesario identificarse nuevamente en cada uno de ellos.
Controlar y asegurar la confidencialidad de los datos intercambiados, ya que SOAP no es capaz de cifrar la información, la cual viaja en claro a través de la red.Es necesario asegurar la comunicación con algún estándar que permita crear un canal seguro de comunicación. El estándar ya firmemente establecido de creación de canales seguros SSL y el cifrado de partes específicas de documentos mediante el cifrado XML son las direcciones que se están siguiendo en este terreno.
Se debe asegurar la integridad de los datos, de manera que estén protegidos a los posibles ataques o a manipulaciones fortuitas. En este campo se está utilizando el estándar de firmas XMLDSIG, que permiten la firma de partes específicas del documento XML.
Comprobar que no se repudian las operaciones, para lo cual es necesario mantener firmas en XML.


Los protocolos de seguridad para servicios web comienzan por la especificación WS-Security que define una arquitectura basada en señales para comunicaciones seguras. Existen seis principales especificaciones de componentes construidas sobre esa base:

WS-Policy y sus especificaciones relacionadas, que definen las reglas de políticas sobre la interacción de servicios.

WS-Trust, que define el modelo confiable para el intercambio seguro.

WS-Privacy, que define cómo se mantiene la privacidad de las informaciones.

WS-Secure Conversation, que define cómo establecer una sesión protegida entre servicios para intercambiar datos usando las reglas definidas en WS-Policy, WS-Trust, y WS-Privacy.

WS-Federation, que define las reglas de identidad distribuida y de la gestión de esa identidad.

WS-Authorization, que maneja el procesamiento de autorización para acceder a los datos e intercambiarlos.



Además del modelo de seguridad, existen las especificaciones específicas de las aplicaciones, incluyendo el lenguaje de ejecución de procesos empresariales para servicios web (BPEL4WS), que define las operaciones de flujos de trabajo, y WS-Transaction y WS-Coordination, que funcionan en conjunto para manejar el procesamiento distribuido de transacciones.

Actualmente está en desarrollo una especificación para la gestión distribuida de servicios web que trata de la gestión administrativa de software de todos los servicios y de la arquitectura orientada a servicios. Por fin, existen especificaciones para interfaces de usuario (WS-InteractiveApplications) y acceso remoto a servicios web (WS-RemotePortals).

Las especificaciones y protocolos para servicios web aún están siendo definidas y sólo están comenzando a explicar cómo los servicios deben interactuar. Sin embargo, no pueden abarcar todas las situaciones y combinaciones posibles. Así, el Web Services Interoperability Group (WS-I), constituido por prácticamente todos los grandes y pequeños proveedores involucrados en el desarrollo de los servicios web, se encargó de la tarea de desarrollar estudios de caso, ejemplos de aplicaciones, casos de ejemplo de implementación y herramientas de prueba para asegurar que esos estándares y especificaciones realmente funcionarán los unos con los otros, independientemente de las implementaciones de productos de los proveedores.

WS-I ha definido su primer Basic Profile 1.0 para servicios web y también ha lanzado sus casos de ejemplo, ejemplos de aplicaciones y herramientas de prueba para evaluar y comparar resultados de varias implementaciones de acuerdo con los casos de ejemplo.

Además de WS-I, una buena parte del trabajo de los estándares está siendo realizado por la Organización para el Avance de Estándares de Informaciones Estructuradas (OASIS), el World Wide Web Consortium (W3C) y el Grupo de Trabajo de Ingeniería de Internet (IETF).

Videos

No hay comentarios:

Publicar un comentario