Documente Academic
Documente Profesional
Documente Cultură
TRABAJO DE
SISTEMAS OPERATIVOS
TEMA:
WEB SERVICE
AUTORES:
PEDRO RAMIREZ
MARTHA QUIJIJE
MC. HAMER
JOSE MORAN
JUSTIN DELGADO
CURSO:
S7-1
PROFESOR:
ING. JOSE PONCE GUERRERO
GRUPO 6
GUAYAQUIL – ECUADOR
INTRODUCCION
2. MARCO TEORICO
¿Qué es un web service?
Un web service es una
aplicación que puede ser
descripta, publicada, localizada
e invocada a través de una red,
generalmente Internet.
Combinan los mejores aspectos
del desarrollo basado en
componentes y la Web.
Al igual que los componentes,
los web services son
funcionalidades que se
encuentran dentro de una caja
negra, que pueden ser reutilizados sin preocuparse de cómo fueron implementados. A
diferencia de la actual tecnología de componentes, no son accedidos por medio de
protocolos específicos del modelo de objetos como ser RMI, DCOM o IIOP; sino que
son accedidos utilizando protocolos web como ser HTTP y XML.
La interface de los web services esta definida en términos de los mensajes que el mismo
acepta y retorna, por lo cual los consumidores de los web services pueden ser
implementados en cualquier plataforma y en cualquier lenguaje de programación, solo
tiene que poder crear y consumir los mensajes definidos por la interface de los web
services.
En pocas palabras Un servicio Web (Web service) es una colección de protocolos y
estándares que sirven para intercambiar datos entre aplicaciones. La interoperabilidad se
consigue mediante la adopción de estándares abiertos.
Estos servicios proporcionan mecanismos de comunicación estándares entre diferentes
aplicaciones, que interactúan entre sí para presentar información dinámica al usuario.
Para proporcionar interoperabilidad y extensibilidad entre estas aplicaciones, y que al
mismo tiempo sea posible su combinación para realizar operaciones complejas, es
necesaria una arquitectura de referencia estándar.
Web Service. Es el software o componente que realiza las operaciones. Si está escrito
en Java, estas operaciones se realizarán en lenguaje Java. Los clientes invocarán estas
operaciones enviando mensajes SOAP.
SOAP Engine. El Web Service no sabe interpretar SOAP requests y crear SOAP
responses. Para hacer esto hace falta un SOAP engine, un software que se encarga del
manejo de estos mensajes. Apache Axis es un ejemplo.
Application Server. Para funcionar como un servidor que puede recibir requests desde
diferentes clientes, el SOAP engine normalmente funciona dentro de un application
server. Este es otro software que proporciona un espacio libre para aplicaciones que han
de ser accedidas por múltiples clientes. El SOAP engine funciona como una aplicación
dentro del application server. Ejemplos son Apache Tomcat server, Java Servlet y JSP
container.
HTTP Server. Algunos application servers incluyen funcionalidades HTTP, por lo que
se pueden tener Web Services funcionando instalando simplemente un SOAP engine y
un application server. Sin embargo, cuando un application server carece de
funcionalidad HTTP es necesario también un HTTP server, más comúnmente llamado
Web Server. Es un software que sabe cómo manejar mensajes HTTP. Los dos más
populares en la actualidad son Apache HTTP Server y Nginx.
Web Services Protocolos
Un servicio Web o WebService es un servicio ofrecido por una aplicación que expone su
lógica a clientes de cualquier plataforma mediante una interfaz accesible a través de la
red utilizando tecnologías (protocolos) estándar de Internet.
Por ejemplo, una aplicación como Access está formada por un conjunto de componentes
que ofrecen una serie de servicios, como el acceso a datos, la impresión de informes, el
diseño de tablas...
La idea de los servicios es la misma, aunque éstos no tienen por qué estar en el mismo
ordenador que el cliente y además son accedidos a través de un servidor Web y de un
modo independiente de la plataforma, utilizando protocolos estándar (HTTP, SOAP,
WSDL, UDDI).
Ofrece un directorio de servicios en UDDI
internet Encontrar
Ofrece un modo de definir los servicios WSDL
Describir
Permite invocar métodos de los servicios SOAP
Invocar
Permite a los consumidores de servicios
XML y XML Schema
enviar y recibir mensajes a y de los
Datos
servicios.
Son protocolos abiertos de internet, dan HTTP, SMTP, TCP
soporte a las capas superiores Transporte
Tabla 1. Pila de protocolos de los WebServices
UDDI
Abreviación de Universal Description, Discovery and Integration. Es un directorio
distribuido que opera en la Web que permite a las empresas publicar sus Web Services,
para que otras empresas conozcan y utilicen los Web Services que publican, opera de
manera análoga a las páginas amarillas.
WSDL
Abreviación de Web Services Description Language, es un lenguaje especificado en
XML que se ocupa para definir los Web Service como colecciones de punto de
comunicación capaces de intercambiar mensajes. El WSDL es parte integral de UDDI y
parte del registro global de XML, en otras palabras, es un estándar de uso público (no se
requiere pagar licencias ni royalties para usarlo).
SOAP
Abreviación de Simple Object Access Protocol, es un protocolo de mensajería
construido en XML que se usa para codificar información de los requerimientos de los
Web Services y para responder los mensajes “antes” de enviarlos por la red. Los
mensajes SOAP son independientes de los sistemas operativos y pueden ser
transportados por los protocolos que funcionan en la Internet, como ser: SMTP, MIME
y HTTP.
XML
Abreviación de Extensible Markup Language. El XML es una especificación
desarrollada por W3C. Permite a los desarrolladores crear sus propios tags, que les
permiten habilitar definiciones, transmisiones, validaciones, e interpretación de los
datos entre aplicaciones y entre organizaciones.
Servicio de Transporte
Responsable del transporte de mensajes entre las Aplicaciones de red y los protocolos
en los cuales se incluyen protocolos tales como HTTP, SMTP, FTP, así como también el
más reciente Blocks Extensible Exchange Protocol (BEEP).
Para crear un servicio puede utilizarse cualquiera de los lenguajes disponibles en la
plataforma .NET.
Una vez creado el servicio, para conseguir que sea accesible por los consumidores, es
necesario describirlo utilizando un lenguaje estándar llamado WSDL (Web Service
Description Language).
Los clientes del servicio podrán estar creados en cualquier lenguaje y ejecutarse sobre
cualquier sistema operativo y hardware, lo único necesario es que sean capaces de
obtener y entender la descripción WSDL de un servicio.
Un archivo WSDL es, en realidad, un archivo XML en el que se identifica el servicio y
se indica el esquema para poder utilizarlo, así como el protocolo o protocolos que es
posible utilizar.
Una vez dispone de esta información, el cliente puede comunicarse con el servicio
utilizando protocolos como HTTP o SOAP (SOAP añade invocación de métodos a
HTTP, aunque es posible hacerlo con peticiones HTTP-GET y/o HTTP-POST en lugar
de SOAP).
Además de describir un servicio para que pueda ser utilizado por los clientes es
importante publicar el servicio de modo que pueda ser encontrado por clientes que no
conozcan necesariamente el componente que ofrece el servicio, pero que busquen un
servicio de sus características. Esto se logra mediante el estándar UDDI (Universal
Description, Discovery and Integration Registry). Realmente se trata de un servicio
mundial en el que los proveedores de servicios pueden registrarlos de modo gratuito.
Fig 1. Creación, registro, búsqueda y utilización de una WebService.
¿Por qué tantos protocolos?
Actualmente, al publicar un documento en un servidor web apenas es necesario tener en
cuenta las características del cliente (S.O., hardware, aplicaciones...). Esto es posible
gracias a que HTML y HTTP son un estándar mundial de diseño, solicitud y transmisión
de documentos. De este modo, el servicio web (www) es universal, es decir, accesible
desde cualquier cliente.
Para conseguir algo similar con los WebServices, Microsoft, IBM y otras empresas han
estado y están definiendo los protocolos comentados, los cuales permitirán describir un
servicio, publicarlo de modo que los clientes puedan localizarlo y utilizarlo...
A continuación, se comentan brevemente algunas alternativas a los protocolos
comentados:
En el caso de HTTP y SOAP otras opciones (en este caso sustitutivas y/o
complementarias) son:
o Jabber, es un protocolo asíncrono de transporte (más ligero que HTTP).
o EbXML, está pensado para integración de servicios en soluciones B2B
(Business to Business).
o XML-RPC, está basado en HTTP-POST.
En el caso de WSDL otras opciones son:
o RDF (Resource Description Framework), definido por el W3C. Es más
potente pero también más complejo que WSDL.
o DAML (DARPA Agent Markup Language), definido por la agencia de
defensa estadounidense (DARPA). Es también más potente pero más
complejo que WSDL.
En el caso de UDDI existe una propuesta alternativa realizada por Microsoft e
IBM, llamada WS-Inspection Language.
WS-Coordination
Bajo este dar se describe un entorno que ofrecen unos protocolos para el control de las
aplicaciones. Estos protocolos pueden coordinar de forma segura las transacciones entre
distintas aplicaciones distribuidas.
Esta especificación se ha de tomar como un bloque de construcción que ofrece ciertos
servicios, pero normalmente no es por si sola capaz de satisfacer las necesidades de los
clientes, es por lo que se suele utilizar en conjunción con otras especificaciones (otros
bloquees) como WS-Secrit o WS-transaction para conseguir un entorno que se ajuste a
las necesidades.
El entorno creado por esta especificación permite la creación por parte del servicio de
un contexto sobre el cual propagar sus procesos hacia otros servicios y registrar los
protocolos de coordinación. El entorno permite a los flujos de trabajo y a otros tipos de
sistemas para coordinar integrar mediante la ocultación de sus protocolos no estándares
de coord8inacion (protocolos propios) y trabajar con los estándares para interoperar en
un entorno heterogéneo.
Los mensajes que trabajan en este tipo de entornos mantienen la información sobre el en
la cabecera mediante un elemento llamado <CoordinationContext>
WS-transaction
Esta especificación define los tipos de coordinación que son utilizados en el entorno
concretado en el punto anterior.
En la especificación se definen dos tipos de transacciones:
Transacciones atómicas (denominadas AT. Atomic Transaction)
Actividades empresariales (denominadas BA. Business Activity)
Como programador se tiene la opción de elegir cualquiera de ellas (o las dos) a la hora
de diseñar las aplicaciones y al igual que WS-Coordination WS- Transaction sirve como
bloque de construcción de aplicaciones que se pueden combinar con otros por ejemplo
con el propio WS-Coordination.
Transacciones atomicas
Una transacción atómica es usada para coordinar actividades de corta duración y que se
ejecutan en dominios de confianza. En su especificación se definen mecanismos para
crear enlaces entre sistemas transaccionales existentes y estos nuevos mecanismos,
permitiendo así su interoperabilidad.
Se las denomina atómicas, porque los procesos que se dan en ellas se deben cumplir sin
problema. Si en alguno de ellos surgiera algún problema de cualquier tipo, se procedería
a deshacer los procesos que estando dentro de esta transacción, se hubieran ejecutado
correctamente. Al terminar los procesos el coordinador pregunta por el resultado de
cada uno de ellos. Si alguno de los procesos indicadores le responde que no ha tenido un
final satisfactorio, o bien no le responde, el coordinador da la orden de deshacer todas
las acciones que se habían realizado durante las transacciones atómica. Si todos los
procesos responden que sus acciones han finalizado correctamente procede a la
aceptación de la transacción y a la aplicación de las acciones realizadas.
Las transacciones atómicas bloquean recursos tanto a nivel de datos (registros de bases
de datos ficheros) como físico (memoria) para realizar sus procesos. Así los procesos se
aseguran poder deshacer la acción en caso de recibir esta orden por parte del
coordinador.
Todas estas acciones se deben realizar de manera transparente al resto de aplicaciones o
de servicios que usen los sistemas que estén involucrados en la transacción.
Actividades empresariales
Las actividades empresariales se emplean para coordinar procesos de larga duración y
en las que se desea aplicar una lógica de negocio a los fallos es decir mecanismos para
tratarlos. A diferencia de las transacciones atómicas las actividades empresariales no
bloquean datos mientras realizan sus procesos (pueden ser largos), y además sus
consecuencias son irremediables una vez realizado el proceso, no hay manera de
deshacerlo (no hay forma de deshacerlo de modo automático, está claro que en
ocasiones es posible realizar la operación inversa).
Las actividades empresariales comparten los recursos permitiendo el acceso a estos por
cualquier otra aplicación en cualquier momento no como en las transacciones atómicas.
Al igual que se vio en el punto anterior la especificación de las actividades
empresariales define protocoles para facilitar la integración con los procesos de negocio
y flujos de trabajo ya existentes y poder interoperar.
Orquestación
Los servicios Web "exponen" las operaciones de ciertas aplicaciones o sistemas de
información. Consecuentemente, la combinación (composición) de varios servicios Web
realmente implica la integración de las aplicaciones subyacentes y sus funcionalidades
Cuando se hace uso de orquestación, un proceso central (que puede ser otro servicio
Web) lleva el control de los servicios Web implicados en la realización de una tarea y
coordina la ejecución de las diferentes operaciones sobre dichos servicios Web. Los
servicios Web orquestados no "conocen" (y no necesitan conocer) que están implicados
en un proceso de composición y que forman parte de un proceso de negocio de nivel
más alto. Solamente el coordinador central de la orquestación es "consciente" de la meta
a conseguir, por lo que la orquestación se centraliza mediante definiciones explícitas de
las operaciones y del orden en el que se deben invocar los servicios Web, tal y como se
muestra en la siguiente figura. La orquestación se utiliza normalmente en procesos de
negocio privados.
¿Por qué orquestar Servicios Web?
Los servicios Web se utilizan actualmente tanto dentro como fuera de los límites de una
organización. Los servicios Web se están convirtiendo en la tecnología común para
proporcionar puntos de integración entre las aplicaciones (tanto por vendedores de
grandes aplicaciones de empresa, como por negocios tradicionales de internet, como la
tienda electrónica Amazon.com o la máquina de búsqueda Google, que exponen
interfaces en forma de servicios Web para que dichas aplicaciones sean también
"integrables").
El siguiente paso lógico en el salto a un modelo centrado en servicios (Web) es la
orquestación de dichos servicios en nuevos procesos de negocio y servicios de más alto
nivel. Los servicios Web proporcionan una tecnología de interfaces común que unifica
el modelo de integración para todos los servicios independientemente de su origen. Los
beneficios de los servicios Web, tales como su descubrimiento en tiempo de ejecución y
su bajo acoplamiento, contribuyen a la orquestación de servicios Web proporcionando
un acercamiento al modelado y ejecución de procesos de negocio en tiempo real. La
idea es construir orquestaciones sin utilizar herramientas de programación tradicionales,
tales como C# o Java, con el objetivo de reducir el esfuerzo total de producir nuevos
servicios y aplicaciones basadas en servicios.
La orquestación de servicios Web pretende proporcionar una aproximación abierta,
basada en estándares, para conectar servicios Web de forma conjunta con el objetivo de
crear procesos de negocio de más alto nivel.
Definición de WS-Addressing
Web services addressing proporciona mecanismos neutrales, independientes de
la capa de transporte, para direccionar mensajes y servicios web.
Define elementos de XML para referenciar servicios y facilitar el
direccionamiento punto a punto de los endpoints en los mensajes.
Permite al sistema de mensajes dar soporte a la transmisión de mensajes a través
de redes que incluyen nodos con procesamiento, tales como gestores de
endpoints, cortafuegos y pasarelas de modo independiente a la capa de
transporte.
Necesidad de WS-Addressing
SOAP es muy genérico: no hay información de direccionamiento en las
capacidades del núcleo.
Interacción típica: petición – respuesta de HTTP
Puede haber otros escenarios:
o Protocolos sin capacidades de direccionamiento
o Protocolo no proporciona facilidades de secuenciación
Los sistemas que implementan WS-RM retransmiten mensajes que no se han entregado
ni se ha acusado recibido de ellos satisfactoriamente e impide que se entreguen
mensajes duplicados al destino de la aplicación. WS-RM es un protocolo de servicios
web y puede utilizarse con WS-Security y WS-Addressing.
La mensajería segura tiene lugar entre dos puntos finales conocidos como el origen de
mensajería segura y el destino de mensajería segura. Antes de que se envíen los
mensajes, el origen seguro y el destino seguro realizan un intercambio de mensajes para
establecer una Secuencia. Una Secuencia se identifica mediante un identificador
exclusivo y comprende una secuencia de mensajes que se numeran a partir de uno. Si se
envía un grupo de mensajes en una secuencia se garantiza la fiabilidad de todos los
mensajes en dicha secuencia.
El origen de mensajería segura envía cada mensaje una o varias veces al destino de
mensajería segura. El destino vuelve a enviar el acuse de recibo para cada mensaje que
recibe para mostrar que el mensaje se ha recibido satisfactoriamente. Si el origen de la
mensajería segura no recibe un acuse de recibo conforme el destino ha recibido el
mensaje, envía de nuevo el mensaje hasta que se reciba un acuse de recibo.
Si el cliente está esperando mensajes que no se han entregado, éste puede iniciar una
solicitud WS-MakeConnectiont. WS-MakeConnection es una especificación que
describe cómo se pueden intercambiar los mensajes entre un servidor y un cliente
utilizando un canal de fondo específico del transporte. La solicitud MakeConnection del
cliente permite al servidor responder con los mensajes que están en la cola que el cliente
no ha recibido.
Conceptos de mensajerías, políticas y seguridad en los servicios WEB
Se define Servicio Web como una interfaz modulable que permite que se invoque, se
publique y se localice dentro de la red, Para ello emplea el intercambio de mensajes
de XML estandarizados.
Los Servicios Web se basan en estándares y protocolos abiertos. A continuación, se
describen los estándares de forma breve:
EXtensible Markup Language (XML): Basado en marcas y etiquetas, es muy
frecuente el uso de este metalenguaje para crear otros lenguajes con entidad
propia.
Simple Object Access Protocol (SOAP): Este protocolo permite realizar
intercambios de información entre diversas aplicaciones situadas en entornos
que están descentralizados y se encuentran distribuidas.
Universal Description Discovery and Integration (UDDI): Se encarga de la
publicación, localización y enlazado de los Servicios Web. El principal objetivo
que tiene UDDI es permitir, mediante el uso de unos criterios de selección para
la búsqueda, el localizarse a las diferentes entidades de negocio
Web Service Description Language (WSDL): Es el estándar que se utiliza
para describir un Servicio Web. Está basado en XML y permite especificar
cómo deben representarse los parámetros, tanto de entrada como de salida, en
una invocación de tipo externo al servicio.
Características
Se ofrece un repaso de las principales iniciativas, en forma de consorcios u
organizaciones, que están implicadas en los servicios Web en general y en el aspecto de
su seguridad en particular
Consorcio World Wide Web (W3C)
La W3C nace con un objetivo claro, ser un foro de discusión abierto y fomentar la
interoperabilidad en la evolución técnica que se produce en el mundo Web. En un
periodo de tiempo menor a diez años, se han generado más de cincuenta
especificaciones técnicas que están orientadas a la estandarización de la infraestructura
Web.
Se definen como objetivos a largo plazo en W3C:
Acceso Universal. Permitir que el acceso a la web sea para todos. Realizando un
esfuerzo por las tecnologías que consideran las diferentes lenguas, culturas,
capacidades, educación, recursos disponibles o las disminuciones físicas o
psíquicas de cada uno.
Web Semántica. Ofrecer y desarrollar avances en el mundo WEB que permitan a
los usuarios disfrutar del mejor uso posible de los recursos disponibles en la
web, adaptándolo a las necesidades de cada usuario.
Web de Confianza. Crear un desarrollo web, que permita realizar desarrollo
manteniendo unos criterios comerciales y sociales adecuados.
OASIS (Organization for the Advancement of Structured Information Standards)
OASIS, es un organismo global muy centrado en temas de comercio electrónico. Es un
organismo sin ánimo de lucro. Oasis trata de establecer estándares de forma abierta y
mediante procesos ligeros aplicados por sus miembros, tratando temas referentes a la
seguridad, servicios Web, edición digital, tratamiento de XML, etc.
IBM/Microsoft/Verisign/RSA Security
Mediante un proceso de colaboración entre las principales compañías dentro del ámbito
IT, siendo encabezadas por Microsoft e IBM, se han propuesto una serie de
especificaciones acerca de como afrontar la seguridad en los servicios Web. Dentro de
este conjunto de especificaciones se encuentra la especificación WS-Security
estandarizada por OASIS.
WS-Security
La especificación WS-Security, describe la forma de asegurar los servicios Web en el
nivel de los mensajes, en lugar de en el nivel del protocolo de transferencia o en el de la
conexión. Para ello, tiene como objetivo principal describir la forma de firmar y de
encriptar mensajes de tipo SOAP. Las soluciones en el nivel de transporte actuales,
como SSL/TLS, proporcionan un sólido cifrado y autenticación de datos punto a punto,
aunque presentan limitaciones cuando un servicio intermedio debe procesar o examinar
un mensaje. Por ejemplo, un gran número de organizaciones implementan un corta
fuegos (firewall) que realiza un filtrado en el nivel de la aplicación para examinar el
tráfico antes de pasarlo a una red interna.
Como funciona WS-Security
WS-Security define la forma de conseguir integridad, confidencialidad y autenticación
en los mensajes SOAP. Se realiza de la siguiente manera:
La autenticación se ocupa de identificar al llamador.
WS-Security utiliza tokens de seguridad para mantener esta información
mediante un encabezado de seguridad del mensaje SOAP.
La integridad del mensaje se consigue mediante firmas digitales XML, que
permiten garantizar que no se han alterado partes del mensaje desde que lo firmó
el originador.
La confidencialidad del mensaje se basa en la especificación XML Encryption y
garantiza que sólo el destinatario o los destinatarios a quien va destinado el
mensaje podrán comprender las partes correspondientes.
Se apoya en WS-Adressing para asegurar el no repudio.
WS-Policy
Es la especificación encargada de delimitar las diferentes políticas aplicables a los
servicios Web. Es de vital importancia a la hora de integrar los servicios Web, ya que si
presentan cierta complejidad, es muy necesario conocer los detalles del XML que lo
define, además de otros requisitos o capacidades adicionales.
Si se produce un intento de integrar un servicio sin conocer los detalles de su
implementación probablemente se esté evocando al fracaso. Por lo tanto, es muy
necesario realizar un estándar que defina las diferentes políticas a acordar. Sin él, los
desarrolladores quedarían expuestos a realizar desarrollos sin integración y difícilmente
escalables
Un marco de trabajo de políticas permitiría a los desarrolladores expresar las políticas
de los servicios de una forma procesable por las computadoras. La infraestructura de los
servicios Web puede verse ser mejorada para entender ciertas políticas y forzar su uso
en tiempo de ejecución.
WS-Trust
La especificación WS-Trust permite definir extensiones al estándar WS-Security con el
objetivo claro de dotar a este de nuevos mecanismos de seguridad. En esta
especificación se incluye el proceso de solicitud, emisión y control sobre tokens de
seguridad y se permite la gestión de las relaciones de confianza entre los servicios
WS-Security, realiza una definición amplia de los mecanismos básicos para
proporcionar un entorno de trabajo seguro en el intercambio de mensajes. Esta
especificación, partiendo de los mecanismos básicos, va añadiendo primitivas
adicionales junto con extensiones para estandarizar el intercambio de tokens de
seguridad. Con ello se busca optimizar la emisión y propagación de las credenciales de
los servicios dentro de diferentes dominios de confianza.
Como funciona WS-Trust
Esta especificación da soporte a un modelo de confianza destinado a los servicios Web,
se le denomina Web Services Trust Model. Para ello, define un proceso a través del
cual, un servicio, puede solicitar que cualquier petición que le llegue cumpla con una
serie de reclamaciones. En la situación, que un solicitante no disponga de todos los
requerimientos necesarios, los solicita al Servicio de tokens de seguridad (STS). Existe
una relación de confianza entre el STS y el servicio
La especificación define varios mecanismos para verificar relaciones de confianza entre
dos partes. Sin embargo, no se restringe solo a ellos, pudiendo un servicio verificar la
relación de confianza con la otra parte como considere necesario. Los métodos que
definen son los siguientes:
Fixed Trust Roots: El más simple. El servicio mantiene un conjunto fijo de
relaciones de confianza
Trust hierarchies: El servicio confiara en los tokens siempre que vengan de una
jerarquía de confianza que lleve a un trust root.
Authentication Service: Es un servicio con el cual el servicio mantiene una
relación de confianza. Cuando llega un security token, el servicio lo envía al
Authentication Service el cuál enviará probablemente otro token que aprobará o
no la autenticación
WS-Federation
Con frecuencia se produce la situación de que participantes en el consumo y la
prestación de un servicio pueden utilizar diferentes tecnologías de seguridad, por
ejemplo, una de las partes podrá utilizar Kerberos y otro Certificados X.509, podría
necesitarse una traducción de los datos que afectan a la seguridad entre las partes
afectadas.
Una federación es una colección dominios de seguridad que han establecido relaciones
en virtud del cual un proveedor de uno de los dominios puede proporcionar acceso
autorizado a los recursos que gestiona sobre la base de la información de los
participantes (como puede ser su identidad) la cual debe ser afirmada por un proveedor
de identidad (Security Token Service).
WS-Federation es la especificación que describe la forma de llevar a cabo la
intermediación entre los participantes. Esta especificación tiene como objetivo principal
ayudar a la definición de los mecanismos de federación de dominios de seguridad, ya
sean distintos o similares. Para ello, define , categoriza y intermedia con los niveles de
confianza de las identidades, atributos, y autenticación de los servicios Web de todos los
colaboradores.
En la especificación WS-Federation se definen perfiles asociados a las entidades que
servirán para clasificar los solicitantes que pueden adaptarse al modelo. Es por tanto un
objetivo prioritario de esta especificación habilitar la federación de la información de las
identidades, atributos, autenticación y autorización.
WS-Addressing
WS-Addressing ofrece seguridad de extremo a extremo a la mensajería SOAP .
Independientemente de los tipos de intermediarios como puertos, workstations,
cortafuegos, etc. que sean atravesados por un bloque en el camino al receptor, todo
aquel que se encuentre por el camino sabrá:
De dónde viene
(Dirección postal) La dirección a donde se supone que va
(Att) La persona o servicio específico en esa dirección que se supone va a
recibirlo
Dónde debería ir si no puede ser remitido como estaba previsto
Todo esto lo incluye en la cabecera del mensaje SOAP ()
WS-Addressing convierte a los mensaje en unidades autónomas de
comunicación. La especificación WS-Addressing define dos tipos de elementos
que se incorporan en el mensajes SOAP:
Endpoint References (EPR), referencias de invocación, que identifican al punto
donde deben ser dirigidas las peticiones.
Message Information Headers, son cabeceras específicas que contienen
información relacionada con la identificación que caracteriza al mensaje.
La Seguridad en la Arquitectura de Referencia de los Servicios Web
Siguiendo el modelo W3C, vamos a realizar un pequeño estudio sobre los requisitos de
seguridad que se encuentran enumerados dentro de la arquitectura de referencia de los
servicios web y señalando las diferentes tentativas de ataque que también aparecen
dentro de la especificación. Se ofrecerán soluciones para las mismas.
Servicios de seguridad básicos
La seguridad es un concepto considerado clave dentro de los que comprenden el
aseguramiento de calidad dentro del servicio Web. Si se realiza una catalogación básica
de los servicios de seguridad son la confidencialidad, integridad, autenticidad de origen,
no repudio y control de acceso. A continuación, se explica brevemente cada uno de
ellos:
Autenticación de los participantes. Los servicios Web por definición tienen mucha
heterogeneidad, lo que provoca que los sistemas de autenticación tengan que ser
flexibles. Si imaginamos un servicio Web que necesita comunicarse con otro servicio,
este podría solicitar al demandante credenciales junto a una demostración de que es el
propietario de las mismas.
Autorización. Con frecuencia, es necesario aplicar unos criterios que permitan
controlar el acceso a los diferentes recursos. Es necesario definir los usuarios que
pueden realizar diversas acciones sobre los diferentes recursos. En combinación con la
autenticación, permite a las identidades conocidas realizar las acciones para las que
tienen permisos.
Confidencialidad. Es necesario asegurar que el contenido incluido en los mensajes que
se intercambian se mantiene como información confidencial. Es muy habitual emplear
técnicas de cifrado, ya muy extendidas. Obviamente, la confidencialidad del mensaje va
más allá que el canal por el que es transmitido.
Integridad. Esta propiedad garantiza que la información que se ha recibido es
exactamente la misma que se envió desde el cliente.
No repudio. En una comunicación que se realizan transacciones, es necesario registrar
que las mismas se han producido y registrar el autor que lo ejecutó. En el caso de los
servicios Web, trasladamos esta política el uso del servicio. Se comprueba que cierto
cliente hizo uso de un servicio a pesar de que éste lo niegue (no repudio del solicitante)
así como probar la ejecución se llevó a cabo (no repudio del receptor).
Disponibilidad. Uno de los ataques más frecuentes a las aplicaciones se basa en la
denegación de servicios. Se lanzan múltiples solicitudes falsas para inundar el servicio y
provocar su caída. Es necesario contemplar la disponibilidad, como punto muy
importante en el diseño de servicio web, ya que permiten cierta redundancia de los
sistemas.
Auditabilidad. El registro de las acciones en los servicios Web permite mantener una
traza de las mismas de manera que se puedan realizar análisis posteriores de los datos.
Seguridad extremo-a-extremo. Cuando se ejecuta un servicio es necesario garantizar
la seguridad durante todo el recorrido que efectúan los mensajes. Dado que
normalmente existen routers como intermediarios de la comunicación, esto provoca un
aumento de la política de seguridad que garantice que se realiza el transporte de forma
segura y confirme la seguridad de los intermediarios. Es importante disponer de un
contexto de seguridad único y que incluya el canal de comunicación.
Requisitos de Seguridad
Si realizamos una abstracción sobre la problemática, el objetivo principal es conseguir
un entorno para las transacciones y los procesos que sea seguro para todo el canal de
comunicación. Obviamente, es necesario garantizar la seguridad durante el tránsito de la
comunicación, ya sea con intermediarios o sin ellos durante la misma. Pro otra parte, se
necesita asegurar la seguridad de la información en los procesos de almacenamiento: A
continuación se ofrece una revisión breve de los principales requisitos para asegurar la
seguridad en la comunicación.
Mecanismos de autenticación
La autenticación es obligatoria para mantener control y verificar la identidad de
solicitantes y proveedores. En algunas ocasiones, resultará necesario realizar una
autenticación tanto del solicitante como del proveedor, ya que puede producirse que los
participantes no estén en conexión directa. Pueden existir intermediarios que
retransmitan la comunicación
En función de la política de seguridad que se adopte, será necesario autenticar tanto al
proveedor como al solicitante o simplemente a alguno de ellos. Se pueden emplear
métodos basados en contraseñas, certificados , etc.. para formalizar la autenticación. Si
se basan en contraseñas, es necesario aplicar una política que aporte robustez a las
mismas.
Se pueden emplear mecanismos basados en protocolos de transporte como
el Http Autentication y SSL/TLS X509 Certificate. Estos mecanismos sólo son
válidos cuando existe una conexión directa entre el consumidor y el proveedor
de servicio, ya que si un mensaje SOAP viaja entre varios endpoints antes de
llegar a su destino, las credenciales del consumidor original se pierden en el
primer endpoint.
También se pueden emplear mecanismos basados en tokens que se incluye
dentro del mensaje. El estándar WS-Security incorpora un gran número de
tokens que pueden ser empleados en este caso; Username Token, X509
Certificate, SAML assertions, etc. Este mecanismo de autenticación no tiene los
problemas de los mecanismos basados en el transporte, ya que las credenciales
pueden viajar entre los distintos endpoints hasta llegar a su destino. Si usamos
este mecanismo, es necesario que estos sean transmitidos de forma segura para
evitar ataques de replay. Esto puede se consigue mediante la firma del
tokendentro del mensaje SOAP, junto a un TimeStamp o IDMessage, por lo que
se recomienda incluir en la firma la cabecera de WS-Addressing. En entornos
cerrados también se puede emplear SSL para transmitir los mensajes con Tokens
de forma segura, aunque esta aproximación es menos segura que la anterior.
Autorización
La autorización resulta necesaria para efectuar un control sobre el acceso a los recursos.
Una vez se ha realizado la autenticación sobre el participante y se conoce su identidad,
se utilizarán los mecanismos de autorización para realizar las comprobaciones
pertinentes y asegurar el acceso adecuado al recurso por parte del participante.
Integridad y confidencialidad de los datos
El proceso que mantiene la integridad de los datos, garantiza que la información que se
ha enviada no ha sufrido ninguna transformación sin que se haya detectado. La
confidencialidad, asegura los principios de intimidad de la información. Es decir solo se
permite el acceso a la información a aquellos participantes con permisos para hacerlo.
Con frecuencia, se usan técnicas de cifrado para conceptos de confidencialidad y la
firma digital para temas de integridad.
No repudio
El objeto de las técnicas de no repudio ya se han comentado anteriormente, es registrar
la participación y el grado de la misma de los diferentes interlocutores en una
transacción para protegerlo de una posible denegación, posiblemente por parte de algún
interlocutor de la misma, negando de que la transacción ocurrió o de su participación en
la misma.
Las técnicas de no repudio permiten proporcionar evidencias sobre lo sucedido en la
transacción, de manera que una tercera parte resuelve el desacuerdo producido.
Rastreabilidad
Es necesario ajustar trazas que aseguren poder conocer información del acceso una vez
se haya producido este, y comprobar el comportamiento que ha tenido el usuario que ha
realizado el acceso. Son de especial importancia para verificar la integridad del sistema.
Normalmente las trazas las generen los determinados "agentes de auditoria" que pueden
realizar monitoreo, observar recursos y el comportamiento de otros agentes, y validar el
cumplimiento de las políticas establecidas. Con frecuencia , no es posible prevenir la
violación de las diferentes obligaciones pero si un agente de auditoria detecta una
brecha podría activar un plan de repulsa o determinar otro tipo de actividades.
Aplicación distribuida de las políticas de seguridad
Si se han definido arquitecturas que están basadas en Servicios Web, están deben
permitir la definición de políticas de seguridad y comprobar su cumplimiento en las
diversas plataformas y con las diversas variaciones de acceso al servicio.
Uso de políticas
Los mensajes que se envían en la comunicación de los servicios Web atraviesan los
cortafuegos y pueden ser modificados a través de los diferentes puertos y protocolos
existentes. Es necesario, para asegurar la calidad de seguridad en los servicios Web,
crear políticas corporativas para integrarse con las diversas políticas de los proveedores
y con la gestión de la confianza planificada.
Políticas distribuidas
Con frecuencia, se asocian las políticas de seguridad a los proveedores o a los clientes o
a un mecanismo de descubrimiento. Se utilizan para controlar y definir la metodología
de acceso de las peticiones y las respuestas a las mismas, dadas por los involucrados en
la comunicación. Estas políticas son validadas en ejecución dentro del contexto de la
comunicación. Cada parte involucrada debe realizar la validación de sus políticas.
Políticas de confianza
Defiendo de manera simple una política de confianza como una política distribuida que
asegura a dos entidades que afrontan una interacción sin conocerse previamente.
Mediante el uso de credenciales, asumen el nivel de seguridad que pueden soportar. En
ocasiones, la definición de estas políticas implica a terceras entidades de forma
recursiva, que influyen en la decisión. Un ejemplo, "yo confió en esta entidad, si mis
dos compañeros confían en ti y tu confías en mis dos compañeros"
Mecanismo de Descubrimiento Seguro
El mecanismo de descubrimiento seguro controla las publicaciones y apariciones de un
servicio. Cuando aparece un servicio, es necesario realizar una evaluación de las
políticas de publicación del servicio, exceptuando las situaciones que supongan un
servicio de descubrimiento entre nodos. Si el descubrimiento lo realiza un cliente, puede
dotar de identidad o no dársela al servicio. En esta segunda situación hablamos de un
descubrimiento anónimo.
Confianza y Descubrimiento
Si imaginamos una situación donde un cliente descubre que existe un servicio Web muy
necesario para él, y el proveedor del mismo, es una entidad desconocida hay que
preguntarse que nivel de confianza puede otorgar el solicitante a ese servicio. Esta
situación es especialmente importante en el caso que se este manejando información
muy sensible, ya que se esta corrigiendo un riesgo grave.
Privacidad
La privacidad se expresa mediante las diferentes políticas definidas por los diferentes
propietarios de los datos. Con frecuencia, los propietarios son los usuarios de los
servicios Web. Es necesario asegurar que los privilegios y derechos de los usuarios son
respetados
Fiabilidad de los servicios Web
La aparición de errores es inevitable, especialmente si consideramos que el contexto
engloba a multitud de servicios interconectados por una red global que pertenecen a
todo tipo de personas y entidades. La eliminación de errores no puede ser completa, así
que el objetivo principal es reducir la tasa de errores que aparecen al nivel máximo
posible.
Si hablamos de fiabilidad dentro de los servicios Web, podemos realizar una
clasificación en función de la predecibilidad y la fiabilidad de:
Los servicios de la infraestructura, como un mecanismo de transporte de los
mensajes o un servicio de descubrimiento.
Las interacciones entre los servicios.
El comportamiento individual del solicitante y del proveedor.
Amenazas de seguridad
Si analizamos el concepto de amenaza de seguridad, tendemos a asumir que existirá un
intento de acceso y mal uso de los servicios. Por lo tanto hay que realizar un esfuerzo
para controlar los accesos no permitidos. Si realizamos una clasificación de las
principales amenazas, tenemos lo siguiente:
Acceso no permitido llevado a cabo por entidades sin identificar. Es necesario
poder identificar de forma confiable la identidad de proveedores, servicios, etc...
Alteración de la información en el canal de comunicación. Es necesario
garantizar la integridad de la información que se envía.
Debe asegurarse el acceso a la información. Solo pueden acceder las partes
deseadas. Debe de mantenerse una certeza del contenido y de que la
comunicación tuvo lugar.
El acceso inapropiado a los recursos. Debería ser posible garantizar que los
recursos y las acciones no son accesibles por aquellas partes que no están
autorizadas. De nuevo, este hecho se podría extender al mero conocimiento de
que cierto recurso existe, es decir, de alguna forma se debería poder impedir que
personas no autorizadas no puedan conocer la existencia de ciertos recursos o
ciertos servicios.
Denegación de servicio. No debería ser posible que los clientes de los servicios
no puedan acceder a él.
Tipos de ataques
Los tipos de ataques que se listan a continuación están extraídos de la especificación
W3C.
Alteración de los mensajes
Es un tipo de ataque centrado sobre la integridad de los mensajes. Se busca modificar el
contenido del mensaje (ya sea parcialmente o totalmente). En el caso que el atacante
tuviera controlado un canal de comunicaciones entre servicios podría modificar los
mismos, eliminarlos, capturarlos y reenviarlos.
Ataques a la confidencialidad
Centrados en la captación de la información contenida dentro de los mensajes. En
ocasiones puede existir información muy sensible (datos médicos, datos económicos,
etc...)
Hombre en el medio o ‘man- in-the-middle.
Es la infiltración por parte de un atacante entre los participantes de una comunicación.
Normalmente, intercepta la comunicación y suplanta a los participantes de manera que
estos creen que se comunican entre si cuando lo hacen con el atacante.
La posibilidad de un ataque de intermediario sigue siendo un problema potencial de
seguridad serio, incluso para muchos sistemas criptográficos basados en clave pública.
Existen varios tipos de defensa contra estos ataques que emplean técnicas de
autenticación basadas en:
Claves públicas
Autenticación mutua fuerte
Claves secretas (secretos con alta entropía)
Passwords (secretos con baja entropía)
Otros criterios, como el reconocimiento de voz u otras características
biométricas
La integridad de las claves públicas debe asegurarse de alguna manera, pero
éstas no exigen ser secretas, mientras que los passwords y las claves de secreto
compartido tienen el requerimiento adicional de la confidencialidad. Las claves
públicas pueden ser verificadas por una autoridad de certificación (CA), cuya
clave pública sea distribuida a través de un canal seguro (por ejemplo, integrada
en el navegador web o en la instalación del sistema operativo).
Suplantación de identidad (Spoofing)
Es un ataque orientado a los niveles de confianza que se establecen en la comunicación.
El atacante suplanta la identidad de uno de los participantes en una relación de
confianza, usualmente trata de comprometer al destinatario de la comunicación. Es muy
útil utilizar una robusta autenticación para fortalecer el servicio ante estos ataques.
Denegación de servicio
El objetivo es mantener un servicio activo para que los usuarios legítimos puedan
acceder a él. Los ataques se centran en destruir la disponibilidad de un servicio. Su
objetivo es interrumpir las operaciones de un servicio dejándolo desconectado.
Es necesario adaptar la configuración del servidor a las necesidades de autenticación,
seguir recomendaciones con respecto al tamaño de mensajes aceptadas, controlar la
distribución de mensajes para minimizar este tipo de ataques.
Ataque de repetición
En este caso un atacante es capaz de interceptar un mensaje válido pudiendo reenviarlo
más tarde todas las veces que quiera al servicio para el que era destinatario. Para poder
solventar este problema se deben utilizar técnicas de autenticación apropiadas
conjuntamente con técnicas de sellado de tiempos y números de secuencia.
Estándares y frameworks actuales que abordan la seguridad en servicios web
El esquema del que parte la estructura de los servicios Web, tiene unas características
propias de acceso a la información, sobre el intercambio de la misma, sobre la
autonomía de la información que difieren de lo establecido en los modelos de seguridad
tradicionales. De hecho, esto provoca la necesidad y el desafío de modificar
mecanismos que afectan a la integridad y confidencialidad de la información que es
enviada por el canal del servicio Web. Si analizamos la estructura de los sistemas de
seguridad perimetrales (cortafuegos , sistemas anti-intrusos) no están preparados para
asegurar arquitecturas SOA. Estas arquitecturas son eminentemente dinámicas y son
transmitidas a través de protocolos no asegurados como HTTP. Si aplicamos criterios
que controlan la comunicación punto a punto (TLS,SSL), no son validos para porque no
aseguran la aplicación completa.
ANEXOS
Fotos
Pedro Ramírez
Martha Quijije
MC. Hamer
José Morán
Justin Delgado
https://drive.google.com/file/d/1oZjNX9inBo8STzeE1xV1jucKGke7LQNS/view
Dispositivas
BIBLIOGRAFIA
¿Qué son los servicios web? (2018). Obtenido de
https://msaffirio.wordpress.com/2006/02/05/%C2%BFque-son-los-web-services/
Besteiro, M., y Rodríguez, M. (2018). Obtenido de
http://www.ehu.eus/mrodriguez/archivos/csharppdf/ServiciosWeb/WebServices.pdf
Vargas-Solar, Genoveva, de Castro, Valeria, Souza Neto, Plácido Antonio de,
Espinosa-Oviedo, Javier A., Marcos, Esperanza, Musicante, Martin A., Zechinelli-
Martini, José-Luis, & Collet, Christine. (2014). Reliable Web Services Composition:
An MDD Approach. Polibits, (49), Obtenido de
http://www.scielo.org.mx/scielo.php?script=sci_arttext&pid=S1870-
90442014000100003&lng=es&tlng=en.
Ribas Lequerica, J. (2003). Web Services (Edicion Especial). ANAYA
MULTIMEDIA.
Universidad d' Alacant. (26 de junio de 2014). Dept. Ciencia de la Computación e
IA. Obtenido de http://www.jtech.ua.es/j2ee/publico/servc-web-2012-
13/sesion03-apuntes.html