Professional Documents
Culture Documents
1 Conceptos generales
Un servicio web (en ingls, Web services) es una tecnologa que utiliza un
conjunto de protocolos y estndares que sirven para intercambiar datos entre
aplicaciones. Distintas aplicaciones de software desarrolladas en lenguajes de
programacin 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 adopcin de estndares abiertos. Las
organizaciones OASIS y W3C son los comits responsables de la arquitectura y
reglamentacin 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 ms exhaustiva
estos estndares. Es una mquina que atiende las peticiones de los clientes web y
les enva los recursos solicitados.
Ventajas de los servicios web
Aportan interoperabilidad entre aplicaciones de software independientemente de
sus propiedades o de las plataformas sobre las que se instalen.
Los servicios Web fomentan los estndares y protocolos basados en texto, que
hacen ms fcil acceder a su contenido y entender su funcionamiento.
Permiten que servicios y software de diferentes compaas ubicadas en diferentes
lugares geogrficos puedan ser combinados fcilmente para proveer servicios
integrados.
Inconvenientes de los servicios Web
Para realizar transacciones no pueden compararse en su grado de desarrollo con
los estndares abiertos de computacin distribuida como CORBA (Common
Object Request Broker Architecture). Su rendimiento es bajo si se compara con
otros modelos de computacin distribuida, tales como RMI (Remote Method
Invocation), CORBA o DCOM (Distributed Component Object Model). Es uno de
los inconvenientes derivados de adoptar un formato basado en texto. Y es que
entre los objetivos de XML no se encuentra la concisin ni la eficacia de
procesamiento. Al apoyarse en HTTP, pueden esquivar medidas de seguridad
basadas en firewall cuyas reglas tratan de bloquear o auditar la comunicacin
entre programas a ambos lados de la barrera.
Razones para crear servicios Web
La principal razn para usar servicios Web es que se pueden utilizar con HTTP
sobre TCP (Transmission Control Protocol) en el puerto 80. Dado que las
organizaciones protegen sus redes mediante firewalls -que filtran y bloquean gran
parte del trfico de Internet-, cierran casi todos los puertos TCP salvo el 80, que
es, precisamente, el que usan los navegadores. Los servicios Web utilizan este
puerto, por la simple razn de que no resultan bloqueados. Es importante sealar
que los servicios web se pueden utilizar sobre cualquier protocolo, sin embargo,
TCP es el ms comn.
Otra razn es que, antes de que existiera SOAP, no haba buenas interfaces para
acceder a las funcionalidades de otros ordenadores en red. Las que haba eran ad
hoc y poco conocidas, tales como EDI (Electronic Data Interchange), RPC
(Remote Procedure Call), u otras APIs.
Una tercera razn por la que los servicios Web son muy prcticos es que pueden
aportar gran independencia entre la aplicacin que usa el servicio Web y el propio
servicio. De esta forma, los cambios a lo largo del tiempo en uno no deben afectar
al otro. Esta flexibilidad ser cada vez ms importante, dado que la tendencia a
construir grandes aplicaciones a partir de componentes distribuidos ms pequeos
es cada da ms utilizada.
Se espera que para los prximos aos mejoren la calidad y cantidad de servicios
ofrecidos basados en los nuevos estndares.
Plataformas
Servidores de aplicaciones para servicios Web:
Oracle Fusion Middleware
Axis y el servidor Jakarta Tomcat (de Apache)
ColdFusion MX de [[Macromedia]httpd ]
Java Web Services Development Pack (JWSDP) de Sun Microsystems (basado
en Jakarta Tomcat)
JOnAS (parte de ObjectWeb una iniciativa de cdigo abierto)
Microsoft .NET
Novell exteNd (basado en la plataforma J2EE)
WebLogic
WebSphere
JAX-WS con GlassFish
Zope es un servidor de aplicaciones Web orientado a objetos desarrollado en el
lenguaje de programacin Python
VERASTREAM de AttachmateWRQ para modernizar o integrar aplicaciones host
IBM y VT
PHP
6.2 Estndares
Estndares de servicio Web
Uno de los atributos clave de estndares de Internet es que se centran en
protocolos y no en implementaciones. Internet se compone de tecnologas
heterogneas que operan conjuntamente de modo satisfactorio mediante
protocolos compartidos. Esto impide que los proveedores individuales impongan
un estndar en Internet. El desarrollo del software de cdigo fuente abierto
desempea un rol fundamental para proteger la interoperatividad de
implementaciones
de
estndares
del
proveedor.
Los estndares siguientes desempean roles clave en servicios Web: UDDI
(Universal Description, Discovery and Integration), WSDL (Web Services
Description Language), WSIL (Web Services Inspection Language), SOAP y WS-I
(Web Services Interoperability). La relacin entre estos estndares se describe en
la Figura 2. La especificacin UDDI define estndares abiertos independientes de
la plataforma que permiten a las empresas compartir informacin en un registro de
empresa global, encontrar servicios en el registro y definir cmo actan
conjuntamente en Internet.
WSIL es una especificacin abierta basada en XML que define un mtodo de
descubrimiento de servicios distribuidos que suministra referencias a
descripciones de servicio en el punto de ofertas del proveedor de servicios,
especificando cmo comprobar si hay servicios Web disponibles en un sitio Web.
Un documento WSIL define las ubicaciones en un sitio Web donde se pueden
Seguridad
servicio que necesita comunicarse con otros servicios Web,no tenga la necesidad
de estar continuamente autenticndose y logre completar el proceso de negocio
en un tiempo de respuesta aceptable.
Confianza y Descubrimiento
Si imaginamos una situacin 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 situacin es especialmente importante en el caso
que se este manejando informacin muy sensible, ya que se esta corrigiendo un
riesgo grave.
Privacidad
La privacidad se expresa mediante las diferentes polticas 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 aparicin 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 eliminacin de errores no
puede ser completa, as que el objetivo principal es reducir la tasa de errores que
aparecen al nivel mximo posible.
Si hablamos de fiabilidad dentro de los servicios Web, podemos realizar una
clasificacin en funcin 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
clasificacin 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...
Denegacin de servicio. No debera ser posible que los clientes de los servicios no
puedan acceder a l.
Tipos de ataques
Los tipos de ataques que se listan a continuacin estn extrados de la
especificacin W3C.
Alteracin 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
podra modificar los mismos, eliminarlos, capturarlos y reenviarlos.
La integridad de los mensajes se proporciona mediante la firma digital del fichero
XML junto con tokens de seguridad para asegurar que el mensaje es transmitido
sin modificaciones. El mecanismo de integridad est diseado para soportar
mltiples firmas por diferentes actores y se puede extender para soportar nuevos
Interoperabilidad
La interoperabilidad entre los servicio web de ASP.NET y los servicio web de
Windows Communication Foundation (WCF) se puede lograr asegurando que los
servicios implementados usen ambas tecnologas de acuerdo con la
especificacin WS-I Basic Profile 1.1. Los servicio web de ASP.NET que cumplen
con WS-I Basic Profile 1.1 son interoperables con clientes de WCF mediante el
uso de enlace proporcionado por el sistema de WCF, BasicHttpBinding.
Utilice la opcin de ASP.NET 2.0 de agregar los atributos WebService y
WebMethodAttribute a una interfaz en lugar de a una clase y escribir una clase
para implementar la interfaz, como se muestra en el siguiente cdigo de ejemplo.
[WebService]
public interface IEcho
{
[WebMethod]
string Echo(string input);
}
public class Service : IEcho
{
public string Echo(string input)
{
return input;
}
}
El uso de esta opcin es preferible, porque la interfaz con el atributo WebService
constituye un contrato para las operaciones realizadas por el servicio, que puede
reutilizarse con diferentes clases que podran implementar ese mismo contrato de
distintas maneras.
Evite usar el atributo SoapDocumentServiceAttribute para que los mensajes se
enruten a mtodos en funcin del nombre completo del elemento de cuerpo del
mensaje SOAP en lugar del encabezado HTTP SOAPAction.WCF usa el
encabezado HTTP SOAPAction para enrutar mensajes.
El XML en el que XmlSerializer serializa de forma predeterminada un tipo es
semnticamente idntico al XML en el que DataContractSerializer serializa un tipo,
dando por hecho que el espacio de nombres para el XML se define
explcitamente.Cuando defina un tipo de datos para su uso con los servicios web
de ASP.NETy en previsin de que se adoptar WCF, haga lo siguiente:
Defina el tipo mediante las clases de .NET Framework en lugar de mediante el
Esquema XML.
Agregue solo SerializableAttribute y XmlRootAttribute a la clase, utilizando el
ltimo para definir explcitamente el espacio de nombres del tipo.No agregue
atributos adicionales del espacio de nombres System.Xml.Serialization para
controlar cmo se traducir la clase de .NET Framework a XML.
Mediante el uso de este enfoque, debera ser capaz de convertir ms adelante las
clases .NET en contratos de datos agregando DataContractAttribute y
DataMemberAttribute sin modificar significativamente el XML en el que las clases
se serializan para la transmisin.Los tipos utilizados en los mensajes por los
<httpModules>
<remove name=ServiceModel />
<httpModules/>