UF1846. Desarrollo de aplicaciones web distribuidas

Page 1



UF1846

Desarrollo de aplicaciones web distribuidas



Datos del autor

José Ramón Santos Dios es diplomado en Ciencias Empresariales por la Universidad de Vigo, graduado superior en TIC por la Universidad de Santiago de Compostela y máster en Software Libre por la UOC. Desde el año 2003 se ha dedicado a la docencia, impartiendo acciones formativas relacionadas con las Tecnologías de la Información y las Comunicaciones en las principales empresas de formación de la comunidad autónoma de Galicia y como Agente TIC para la red CEMIT de la Xunta de Galicia. En la actualidad, combina su profesión de docente con la elaboración de contenidos didácticos adaptados a diferentes niveles formativos y la elaboración de manuales relacionados con certificados de profesionalidad, también el desarrollo del diseño y programación web ocupan parte de su actividad profesional. Para ver su currículum profesional completo puede acceder a el enlace de la red Linkedin: https://www.linkedin.com/in/santosdios/


Ficha Desarrollo de aplicaciones web distribuidas. Informática y comunicaciones. 1ª Edición Certia Editorial, Pontevedra, 2022 Autor: Jose Ramón Santos Dios Formato: 170 x 240 mm

D esarrollo

• 92 páginas.

de aplicaciones web distribuidas .

I nformática

y

comunicaciones

No está permitida la reproducción total o parcial de este libro, ni su tratamiento informático, ni la transmisión de ninguna forma o por cualquier medio, ya sea electrónico, mecánico, por fotocopia, por registro u otros métodos, sin el permiso previo y por escrito de los titulares del Copyright. Derechos reservados 2022, respecto a la primera edición en español, por Certia Editorial. ISBN: 978-84-17328-83-2 Editor: Cenepo Consult, SLU Depósito legal: PO 222-2022 Impreso en España - Printed in Spain Certia Editorial ha incorporado en la elaboración de este material didáctico citas y referencias de obras divulgadas y ha cumplido todos los requisitos establecidos por la Ley de Propiedad Intelectual. Por los posibles errores y omisiones, se excusa previamente y está dispuesta a introducir las correcciones pertinentes en próximas ediciones y reimpresiones. Fuente fotografia portada: Pixabay, autoriza a copiar, distribuir, comunicar publicamente la obra y adaptar el trabajo.


510

MF0493_3: Implantación de aplicaciones web en entorno internet, intranet y extranet MP0391: Módulo de prácticas profesionales no laborales Duración horas totales certificado de profesionalidad

MF0492_3: Programación web en el entorno servidor

240

90

MF0491_3: Programación web en el entorno cliente

510

80 590

Duración horas módulos formativos

90

60

90

90

30

90

60

Horas

90

240

180

UF1841: Elaboración de documentos web mediante lenguajes de marca UF1842: Desarrollo y reutilización de componentes software y multimedia mediante lenguajes de guión UF1843: Aplicaciones técnicas de usabilidad y accesibilidad en el entorno cliente UF1844: Desarrollo de aplicaciones web en el entorno servidor. UF1845: Acceso a datos en aplicaciones web del entorno servidor. UF1846: Desarrollo de aplicaciones web distribuidas.

Correspondencia con el Catálogo Modular de Formación Profesional Módulos certificado H.CP Unidades formativas

180

H. Q

FICHA DE CERTIFICADO DE PROFESIONALIDAD (IFCD0210) DESARROLLO DE APLICACIONES CON TECNOLOGÍAS WEB (RD 1531/2011, de 31 de octubre modificado por el RD 628/2013, de 2 de agosto)

Área profesional: Desarrollo

Familia profesional: INFORMÁTICA Y COMUNICACIONES



Índice INTRODUCCIÓN.................................................................................. 11

Unidad didáctica 1 1. Arquitecturas distribuidas orientadas a servicios................................ 13 1.1. Características generales de las arquitecturas de servicios distribuidos.....................................................................................................15 1.2. Modelo conceptual de las arquitecturas orientadas a servicios..............18 1.2.1. Basados en mensajes.......................................................................20 1.2.2. Basados en recursos........................................................................20 1.2.3. Políticas y contratos de servicios..................................................21 1.3. Aspectos de seguridad en arquitecturas orientadas a servicios..............22 1.3.1. Seguridad de datos..........................................................................22 1.3.2. Seguridad de mensajes....................................................................23 1.4. Control de acceso. El modelo RBAC.........................................................23 1.5. Seguridad en comunicaciones. Protocolos seguros.................................24 1.6. Implementación de arquitecturas orientadas a servicios mediante tecnologías web.............................................................................................25 1.7. Especificaciones de servicios web de uso común: SOAP, REST, etc...26

9


1.8. Lenguajes de definición de servicios: el estándar WSDL.......................29 1.9. Estándares de seguridad en servicios web: WS-Security, SAML, XACML, etc...................................................................................................31 1.10. Implementación de la seguridad en arquitecturas orientadas a servicios..........................................................................................................33 1.10.1. Conceptos básicos de criptografía................................................34 1.10.2. Tipos de criptografía......................................................................34 1.10.3. Entidades certificadoras.................................................................36 1.10.4. Certificados digitales. Características...........................................36 1.10.5. Identificación y firma digital mediante certificados digitales...37 1.10.6. Cifrado de datos..............................................................................39 1.11. Directorios de servicios..............................................................................41 1.11.1. Concepto de directorio..................................................................41 1.11.2. Ventajas e inconvenientes..............................................................41 1.11.3. Directorios distribuidos.................................................................42 1.11.4. Estándares sobre directorios de servicios: UDDI.....................43 . UNIDAD DIDÁCTICA 2 2. Programación de servicios web en entornos distribuidos................... 47 2.1. Componentes software para el acceso a servicios distribuidos.............49 2.2. Definición de servicios.................................................................................50

10


2.3. Generación automática de servicios..........................................................50 2.4. Programación de diferentes tipos de acceso a servicios.........................51 2.4.1. Servicios basados en publicación/suscripción...........................52 2.4.2. Servicios basados en repositorios.................................................52 2.5. Servicios accesibles desde agentes de usuario..........................................53 2.6. Proveedores y consumidores de servicios en entorno servidor............55 2.7. Herramientas para la programación de servicios web.............................56 2.7.1. Comparativa.....................................................................................57 2.8. Bibliotecas y entornos integrados (frameworks) de uso común............60

resumen final............................................................................... 61

actividades..................................................................................... 63

autoEVALUACIÓN FINAL.............................................................. 79

soluciones...................................................................................... 85

BIBLIOGRAFÍA .................................................................................. 87

11



Introducción El manual «UF1846. Desarrollo de aplicaciones web distribuidas» forma parte del módulo formativo «MF0492_3: Programación web en el entorno servidor», del Catálogo Nacional de Cualificaciones Profesionales, y pertenece al certificado de profesionalidad «IFCD0210: Desarrollo de aplicaciones con tecnologías web». En el presente manual aprenderemos todo acerca de los servicios distribuidos para su integración en las aplicaciones web, analizar las potencialidades que pueden aportar los servicios distribuidos web en las aplicaciones que se desarrollan en este contexto. También veremos las características de los estándares y protocolos actuales para las aplicaciones distribuidas en los servicios web, para poder utilizar los más adecuados en función de las necesidades de la aplicación web a desarrollar. Finalmente, encontraremos diferentes actividades y pruebas de evaluación para poner en práctica los contenidos aprendidos. Este manual te permitirá adquirir las siguientes capacidades y criterios de evaluación: •

C1: Seleccionar y emplear servicios distribuidos para su integración en la aplicación web. o

CE1.1 Identificar las posibilidades que ofrecen los servicios distribuidos web para su integración en la aplicación a desarrollar.

o

CE1.2 Especificar las características de los protocolos estándares del mercado para poder utilizar servicios web en la aplicación a desarrollar.

o

CE1.3 Seleccionar y emplear los servicios web más adecuados para ser utilizados en la aplicación web en función del diseño especificado.

UF1846. Desarrollo de aplicaciones web distribuidas

13



UNIDAD

1

Arquitecturas distribuidas orientadas a servicios

Contenido 1.1. Características generales de las arquitecturas de servicios distribuidos 1.2. Modelo conceptual de las arquitecturas orientadas a servicios 1.3. Aspectos de seguridad en arquitecturas orientadas a servicios 1.4. Control de acceso. El modelo RBAC 1.5. Seguridad en comunicaciones. Protocolos seguros 1.6. Implementación de arquitecturas orientadas a servicios mediante tecnologías web 1.7. Especificaciones de servicios web de uso común: SOAP, REST, etc. 1.8. Lenguajes de definición de servicios: el estándar WSDL 1.9. Estándares de seguridad en servicios web: WS-Security, SAML, XACML, etc. 1.10. Implementación de la seguridad en arquitecturas orientadas a servicios 1.11. Directorios de servicios

UF1846. Desarrollo de aplicaciones web distribuidas

15



Las arquitecturas distribuidas consisten en sistemas informáticos formados por componentes hardware y software mediante ordenadores conectados en red y comunicados entre sí por medio de una comunicación mediante un protocolo prefijado por un esquema cliente-servidor, para realizar un objetivo común computacional o de compartición de recursos.

1

.1. Características generales de las arquitecturas de servicios distribuidos

Realmente casi todos los sistemas informáticos son en algún aspecto sistemas distribuidos, pero en el caso de los sistemas distribuidos propiamente dichos, podemos especificar una serie de características concretas.

UF1846. Desarrollo de aplicaciones web distribuidas

17


Compartición de recursos. Un sistema distribuido permite compartir recursos hardware o software (memorias, impresoras, sistemas de ficheros, bases de datos etc.). La compartición de recursos no es nada nuevo en la informática y suele ser el objetivo principal de las redes de computadores. La diferencia en el caso de los sistemas distribuidos es que la compartición de recursos se hace efectiva a través de un software que ofrece un interfaz de comunicación permitiendo que el recurso sea accedido y manejado de manera fiable y consistente. Este tipo de software se denomina gestor de recursos. El sistema distribuido puede manejar varios gestores de recursos al mismo tiempo. Los usuarios se comunican con los gestores de los recursos para acceder a los recursos compartidos del sistema

Sistemas abiertos. Otra característica de los sistemas distribuidos es que se diseñan utilizando protocolos estándar que permiten utilizar hardware y software de diferentes fabricantes en el mismo sistema. Un sistema informático es abierto si este tiene la capacidad de ser ampliado con respecto a extensiones hardware (añadir periféricos, memoria y otras componentes) o a las extensiones de software (añadir características y actualizaciones al sistema operativo, protocolos de comunicación y servicios de compartición de recursos, etc.).

Comunicación uniforme: Los procesos e interfaces deben estar provistos de este mecanismo de comunicación para acceder a recursos compartidos. Cuando existen varios procesos en una única máquina, decimos que se están ejecutando concurrentemente. La concurrencia implica que los diferentes procesos se estén comunicando entre ellos entrelazando la ejecución de los distintos procesos mediante el procesador central.

Tolerancia a fallos: la tolerancia a fallos de hardware o software es esencial en este tipo de sistemas, ya que este debe ser capaz de gestionar y recuperar los errores que se produzcan sin detener la prestación de servicios, de tal modo que cuando uno de los componentes del sistema fallase, solo se vería afectado el trabajo que estaba realizando el componente averiado, permitiendo a un usuario desplazarse a otra estación de trabajo; y un proceso servidor podría ejecutarse en otra máquina. Para que un sistema distribuido sea tolerante a fallos debe abarcar dos

18

UF1846. Desarrollo de aplicaciones web distribuidas


aspectos complementarios:

o

Redundancia de hardware: mediante el uso de componentes redundantes, junto con otras técnicas como replicado de servidores críticos para poder desarrollar operaciones continuadas bajo el fallo de uno de ellos.

o

Recuperación del software: mediante el diseño de programas que sean capaces de recuperarse de los fallos.

Transparencia: trata sobre la ocultación al usuario de los componentes de un sistema distribuido, de manera que este se percibe como un todo, en vez de una colección de componentes independientes. Esto facilita el manejo del sistema por parte del usuario. Podemos hablar de varios niveles de transparencia: o

Transparencia de Concurrencia: se da en el instante en que varios procesos se desarrollan al mismo tiempo usando elementos compartidos, de forma que no exista interferencia entre ellos.

o

Transparencia de Fallos: el usuario del sistema puede trabajar en el mismo sin conocimiento de los errores en el hardware o en el software.

o

Transparencia de Acceso: permite el acceso a cualquier parte del sistema de manera homogénea sin diferencias de una conexión remota o local.

o

Transparencia de Migración: facilita el traslado de elementos del sistema sin que afecte a los usuarios de la aplicación.

o

Transparencia de Escalado: permite la expansión del sistema sin que modifique la estructura del sistema o de las aplicaciones.

Concurrencia: lo que implica que varios procesos pueden operar al mismo tiempo sobre equipos diferentes del sistema.

Sistemas abiertos: diseñados sobre protocolos estándar normalizados de manera que se puedan utilizar por diferentes fabricantes de software o hardware.

UF1846. Desarrollo de aplicaciones web distribuidas

19


1

.2. Modelo conceptual de las arquitecturas orientadas a servicios Los modelos de sistemas de información sirven para reflejar la estructura de la organización y los servicios asociados a la misma, además de la interacción entre los diferentes componentes del sistema y con terceros. Actualmente existen dos tipos genéricos de arquitecturas de sistemas distribuidos: •

Arquitectura cliente-servidor: está formado por dos tipos de roles. Por una parte, el cliente que demanda un servicio y, por otra, el servidor que es el que lo presta. Normalmente la comunicación entre ambos es iniciada por el cliente por medio de una petición, mientras que el servidor permanece todo el tiempo a la escucha para atender las peticiones realizadas.

Arquitecturas de objetos distribuidos: en este tipo de arquitectura no existe diferencia entre servidores y clientes. Todos los elementos son considerados iguales sin distinción entre los proveedores de servicios y los usuarios, por lo que todos son vistos como un conjunto de elementos que interaccionan entre ellos.

La SOA (Arquitecturas Orientadas a Servicios) es un tipo de arquitectura distribuida que define las siguientes capas de software:

20

Aplicaciones básicas: software desarrollado bajo cualquier arquitectura o tecnología.

Acceso a datos: sirven al sistema para conectarse a las fuentes de datos, como las bases de datos y otros datos estructurados, y trasladarlos a las aplicaciones del sistema.

Integración de servicios: facilitan el intercambio de datos entre elementos de las diferentes capas.

Composición de procesos: definen el proceso en términos del negocio y sus necesidades.

UF1846. Desarrollo de aplicaciones web distribuidas


Entrega: es la capa donde los servicios son desplegados a los usuarios finales.

Capa de interface: la encargada de mostrar el resultado final de las operaciones al usuario.

En el caso de los web services, podemos diferenciar los siguientes elementos de su arquitectura: •

Service Discovery: se encarga añadir la funcionalidad de publicar y buscar servicios web en un directorio común de registro. Una vez que se ha localizado un web service nos proporcionará información sobre que operaciones soporta y cómo activarlo.

UF1846. Desarrollo de aplicaciones web distribuidas

21


Service Invocation: invoca un web service para enviar mensajes entre el cliente y el servidor.

Transport: maneja el protocolo necesario para enviar los mensajes que han de ser transmitidos entre el servidor y el cliente.

1.2.1. Basados en mensajes Este tipo de sistemas proporcionan a las aplicaciones un servicio de comunicación entre los procesos, utilizando la tecnología de colas de mensajes. El mensaje se define como una estructura de datos, registros u objetos; es decir, se intercambian mensajes en lugar de llamadas a métodos, permitiendo que las peticiones se redirijan en función de la carga del sistema y su prioridad. Son arquitecturas asíncronas lo que implica menos bloqueos de clientes esperando respuesta del servidor Algunos ejemplos de arquitecturas basados en colas de mensajes son IBM MQSeries o Microsoft Message Queuing (MSMQ).

1.2.2. Basados en recursos Los sistemas distribuidos basados en un modelo de compartición de recursos utilizan la ejecución paralela cuando diferentes usuarios interactúan simultáneamente con los programas del sistema o cuando varios procesos se ejecutan concurrentemente respondiendo diferentes peticiones. El primer caso es el menos conflictivo, ya que las aplicaciones ejecutadas no entran en conflicto con las estaciones de trabajo de otros usuarios. En el segundo caso, las peticiones deben ser puestas en la cola de trabajo y procesarse de manera secuencial por el gestor de recursos. Para ello, las tareas deben sincronizarse para gestionarse adecuadamente.

22

UF1846. Desarrollo de aplicaciones web distribuidas


Los sistemas basados en recursos son escalables según la capacidad del sistema para incrementarse y añadir nuevos recursos. Esta escalabilidad en cuanto al hardware comprendería las estaciones de trabajo, servidores, periféricos, etc. La escalabilidad potencial de un sistema es esencial para atender la demanda de recursos cuando el sistema crezca, por ejemplo, con el incremento de nuevos usuarios o estaciones de trabajo. Por lo tanto, debe estar diseñado para detectar las necesidades de escalabilidad y aplicarlas cuando estas se hagan patentes. Para conseguir esta escalabilidad sin afectar al rendimiento total del sistema se utilizan varias técnicas como el replicado de datos, el uso de varios servidores para manejar las tareas y recursos y el aprovechamiento de la concurrencia para permitir una mayor productividad.

1.2.3. Políticas y contratos de servicios El contrato de servicios es una interfaz web con la que se comunican las aplicaciones, actuando como un contrato de datos que agrupa todos los parámetros de entrada a un servicio. Para que el servicio sea simple y efectivo se debe tener en cuenta una serie de aspectos: •

No utilizar elementos con referencias circulares en los parámetros de entrada y en los valores de retorno de la interfaz.

Utilizar parámetros de entrada y valores de retorno tipados.

En SOA los servicios se comunican mediante el intercambio de contratos de datos. Un contrato de datos agrupa los parámetros de entrada de un servicio, mediante una clase que se compone exclusivamente de propiedades y que viene a representar a un objeto. El principio de autonomía hace referencia a que los servicios deben estar débilmente acoplados y así ser desplegados independientemente del resto de servicios pero que al mismo tiempo puedan comunicarse con otros a través de contratos y políticas. La semántica de servicio consta de la información relativa a su funcionalidad, registrada a través de políticas.

UF1846. Desarrollo de aplicaciones web distribuidas

23


1

.3. Aspectos de seguridad en arquitecturas orientadas a servicios En cualquier sistema informático y de datos es fundamental establecer mecanismos que permitan garantizar la seguridad e integridad de todo el flujo de datos en las transacciones. Por lo tanto, la seguridad es decisiva en el éxito de cualquier proyecto que lleve consigo la transacción de datos, como en el caso del comercio electrónico, banca online, y cualquier negocio digital. Esto incrementará el potencial crecimiento del proyecto del sistema y ayudará en la expansión del mismo. En el caso de los sistemas distribuidos, la seguridad puede verse comprometida por la propia estructura del sistema, ya que la posibilidad de acceder desde varias computadoras diferentes y el tráfico en la red puede estar sujeto a accesos indeseados. Todo ello hace más difícil garantizar que la integridad de los datos en el sistema se mantenga y que los servicios del sistema no se degraden por algún tipo de ataque.

1.3.1. Seguridad de datos Los elementos que definen una comunicación segura de datos son: •

Integridad. Garantizar la identidad de quien realiza la transacción por medio de la autentificación.

Confidencialidad. Un aspecto que permite mantener la información privada.

No repudio. Garantizar que no se pueda discutir la procedencia o la propiedad de la información enviada.

Los niveles de seguridad de los sistemas distribuidos varían según el tipo de actividad que soportan, sus amenazas y volumen de las transacciones. En la mayoría de casos, se debe garantizar la salvaguarda de datos por medio de accesos concurrentes a las bases de datos. También se deben garantizar accesos concurrentes a bases de datos por parte de muchos usuarios, garantizar tiempos de respuesta mínimos, etc.

24

UF1846. Desarrollo de aplicaciones web distribuidas


1.3.2. Seguridad de mensajes El protocolo de seguridad de los mensajes dentro de un sistema distribuido atraviesa diferentes fases. Todo servicio que reciba un mensaje comienza a realizar un chequeo para detectar posible contenido mal formado, lo cual exige procesamiento extra en el sistema. Los aspectos que debemos tener en cuenta para proteger el contenido del mensaje son las posibles intercepciones, que vulnerarían el derecho de confidencialidad, o modificaciones ilegales, que alterarían la integridad del mensaje. Podemos utilizar diferentes estándares para proteger los mensajes del sistema. Para proteger el mensaje cifrándolo disponemos de la especificación WS-Security, con XML Digital Signature podemos aplicar mecanismos para proteger la integridad del mensaje, asegurando que los mensajes se transmiten sin modificaciones.

1

.4. Control de acceso. El modelo RBAC

Control de acceso es una función de seguridad con la que se puede controlar todos los accesos a determinadas tareas del sistema para cada usuario, mediante la división de los roles de usuario aplicando diferentes atributos a cada uno de ellos. Cada rol de usuario tendrá un grupo de privilegios y accesos a recursos determinados. El más utilizado actualmente es el control de acceso basados en roles RBAC (Role Based Access Control). La arquitectura de los sistemas basados en roles consiste en la asignación de diferentes permisos (lectura, escritura, etc.) a los distintos roles asignados en la organización, como pueden ser el usuario normal, editor, administrador, supervisor, etc. Este sistema de roles permite controlar un proceso de envío de mensajes de inicio a fin, en un determinado flujo de trabajo. La asignación de roles es un sistema muy eficiente y rápido en el proceso de seguridad de mensajes, ya que los roles están siempre previamente determinados y establecidos. En el caso de nuevas incorporaciones en el equipo de trabajo o

UF1846. Desarrollo de aplicaciones web distribuidas

25


cambios estructurales del mismo, la organización esta dispone de un sistema preestablecido para una rápida asignación de permisos. Los roles de usuario más frecuentes con los que nos podemos encontrar en un sistema distribuido son: •

Administrador principal: es el perfil de usuario que contiene todos los derechos posibles del sistema.

Administrador del sistema: un perfil que contiene permisos de alto nivel como instalar o desinstalar software, manejar sistemas de ficheros, gestionar correo, etc.

Operador: se trata de un usuario con privilegios básicos con permisos para el manejo de ficheros, copias de seguridad de datos, etc.

1

.5. Seguridad en comunicaciones. Protocolos seguros Los protocolos seguros en las comunicaciones utilizan técnicas de encriptado entre clientes y servidores, empleando una clave común solamente conocida por ambos. Algunos de estos protocolos son SSH (Secure Shell), utilizado en la comunicación telnet, o SSL para el http. Como hemos comentado, la idea principal de la asignación de roles de usuarios consiste en aplicar diferentes permisos (lectura, escritura, etc.), sobre procesos a los diferentes roles existentes en la organización, como el editor, director, administrador, etc. Luego se asignan estos roles a los diferentes usuarios según las responsabilidades que tienen que asumir en cada sesión. Debemos tener en cuenta que si implementamos erróneamente el sistema de permisos, por ejemplo debido a una mala interpretación de la organización, de sus responsabilidades y de sus procesos de negocio, puede dar lugar a agujeros de seguridad que podría comprometer las seguridad del sistema. Por lo tanto, la principal recomendación de seguridad para utilizar el sistema

26

UF1846. Desarrollo de aplicaciones web distribuidas


RBAC adecuadamente es la designación de un responsable de la administración del sistema de permisos con conocimiento de la jerarquía de la organización y una metodología eficiente para la delimitación de todos los permisos entre los miembros. Existen varios protocolos de comunicaciones seguros: •

SSH (Secure Shell): se usa para acceder a máquinas de manera remota mediante línea de comandos, permitiendo enviar datos a través de una canal seguro.

TSL (Transport Layer Security): es una evolución de SSL. Funciona estableciendo un canal cifrado entre cliente y servidor en una red de comunicación, mediante tres fases: o

Se intercambia el algoritmo a utilizar en la comunicación

o

Intercambio de claves publicas entre cliente y servidor por medio de certificados digitales

o

Se utiliza cifrado simétrico.

1

.6. Implementación de arquitecturas orientadas a servicios mediante tecnologías web Definición: Un servicio web consiste en un método de comunicación entre dos máquinas en una red de datos, mediante una colección de protocolos abiertos y estándares usados para intercambiar datos entre aplicaciones o sistemas.

Los web services intercambian datos entre aplicaciones realizadas en diferentes lenguajes de programación que funcionan en plataformas diferentes, mediante el uso de estándares abiertos.

UF1846. Desarrollo de aplicaciones web distribuidas

27


Cuando una organización ha analizado la Arquitectura Orientada a Servicio adecuada y viable al proyecto, el siguiente paso será la implementación del proyecto piloto, mediante sucesivas iteraciones. Este proceso será documentado mediante un análisis detallado de todos los procesos, registrando la prioridad y el impacto de cada una de las actividades del proyecto. En cada iteración se realizarán las siguientes actividades: •

Análisis, diseño e implementación de los procesos llevados a cabo.

Definición del modelo de arquitectura, incluyendo datos, dominios, procesos, servicios etc.

Definición de metodologías, procedimientos y buenas prácticas.

Análisis de vulnerabilidades y riesgos del sistema.

1

.7. Especificaciones de servicios web de uso común: SOAP, REST, etc.

SOAP (Simple Object Access Protocol) es el servicio web más estandarizado en la actualidad, siendo uno de los protocolos más usados como estándar de web services. Promovido por la W3C, fue creado por un conjunto de corporaciones entre las que se encuentran Microsoft, SUN, Microsystems, SAP e IBM. En resumen, SOAP es un protocolo escrito en XML para el intercambio de información entre aplicaciones. Con este protocolo, el cliente o el servidor pueden realizar peticiones mediante HTTP a un servidor web. Los mensajes deben tener un formato determinado empleando XML para encapsular los parámetros de la petición. SOAP funciona de manera similar al protocolo HTTP pero en lugar de utilizar una página en HTML para ser descargada y mostrada en el agente de usuario, envía un mensaje XML a través de peticiones HTTP y recibe una respuesta. Para manejar el servicio SOAP correctamente, el servidor debe incluir un procesador de XML.

28

UF1846. Desarrollo de aplicaciones web distribuidas


El estándar SOAP ha sido aceptado por gran parte de la industria y prácticamente todas las grandes compañías de software del mundo lo han implementado. Esto es debido a un conjunto de ventajas: •

No está asociado vinculado a ninguna API ni lenguaje de programación ya que no es más que un documento XML, por lo que puede transportarse utilizando cualquier protocolo capaz de transmitir texto e implementarse dentro de cualquier plataforma de lenguaje de programación.

Utiliza los estándares existentes como XML para la codificación de los mensajes en lugar de utilizar su propio sistema, por lo que se pueden asociar a los protocolos de transporte existentes como HTTP y SMTP

Proporciona un método estándar para empaquetar un mensaje, mediante un contenedor con la carga de datos de dicho mensaje y una información de cabecera que se utiliza para describir el mensaje por medio de una especificación que define una forma de codificar los datos contenidos en el mensaje.

La especificación de SOAP dispone de un patrón de mensaje estándar para facilitar la asociación de un mensaje de petición con un mensaje de respuesta, la llamada a un método y sus parámetros se realizan en el cuerpo del mensaje de petición en forma de manera estructura.

El protocolo es una evolución del anterior XML-RPC, mejorando aspectos de seguridad y extensibilidad, y se basa en un conjunto de servicios de mensajería

UF1846. Desarrollo de aplicaciones web distribuidas

29


agrupados en un framework y basado en XML. Puede ser utilizado sobre cualquier protocolo de transporte de datos como HTTP, SMTP, TCP o JMS, utilizándose sobre cualquier lenguaje de programación. El proceso de mensajes del servicio SOAP se basa en tres partes fundamentales: 1. Un encapsulamiento sobre el cual se define el mensaje y cómo procesarlo. 2. Un grupo de normas de codificación para enviar el tipo de datos. 3. Un formato para representar las llamadas a procedimientos y respuestas. El término REST (Representation State Transfer) surge en el año 2000, a partir de la lectura de una tesis doctoral sobre la web por parte de su autor Roy Fielding, uno de los principales creadores de la especificación del protocolo HTTP. Este concepto, que se ha popularizado entre la comunidad de desarrolladores web, se refiere al conjunto de elementos de arquitectura que se utilizan para crear cualquier interfaz web simple o conjunto de servicios web con XML y HTTP. Un sistema REST distribuye cada recurso mediante una dirección única a través de su URI, un protocolo cliente/servidor basado en http, y un conjunto de operaciones definidas que se aplican a todos los recursos de información, las más importantes son POST, GET, PUT y DELETE. La representación de las transacciones en un sistema REST es a través de los lenguajes HTML o XML, siendo posible navegar de un recurso REST a otros, simplemente siguiendo enlaces sin requerir el uso de registros u otra infraestructura adicional. El acceso a estos recursos será a través de un URI (Identificador Uniforme de Recurso) que permite su acceso mediante un identificador global, este acceso es independiente de la propia petición y del tipo de conector, que accede a la conexión sin tener más información que la propia petición. De este modo, cada aplicación puede interactuar con un recurso con solo conocer su URI e ignorando otros datos técnicos como la existencia de proxys, cortafuegos, etc. Los objetivos que persigue el servicio REST son los siguientes:

30

Escalabilidad: es decir la capacidad de crecer gradualmente sin degradar el rendimiento.

Generalidad de interfaces: pretendiendo que cualquier cliente puede trabajar en cualquier servidor web sin la necesidad de una configuración

UF1846. Desarrollo de aplicaciones web distribuidas


previa específica, mediante el protocolo HTTP. •

Compatibilidad con componentes: como los cortafuegos, puertas de enlace o cachés. La siguiente tabla nos muestra las ventajas de aplicar SOAP o REST en un servicio web SOAP

REST REST tiene mayor velocidad, menor Los servicios SOAP exigen reglas ancho de banda y mayor flexibilidad de estrictas al interactuar con el servidor. formato. REST puede utilizar datos, imágenes, SOAP solamente permite el formato URLs, etc., en formato JSON, además de XML de datos. XML, HTML y texto sin formato. SOAP utiliza el lenguaje de definición de REST utiliza el lenguaje de descripción servicios web WSDL. de aplicaciones web WADL. SOAP es compatible con WS-security y REST admite SSL y HTTPS. SSL (Secure Sockets Layer).

1

.8. Lenguajes de definición de servicios: el estándar WSDL Definición: El estándar WSDL, lenguaje de descripción de servicios Web (WSDL, Web Service Description Language), está basado en XML y describe los requisitos del protocolo y los formatos de los mensajes necesarios para interactuar con los servicios Web, estableciendo así una interfaz pública a los servicios en combinación con SOAP y XML.

Mediante este estándar, un cliente se conecta con un servicio web accediendo al archivo WSDL en formato XML, que especifica las funciones que están disponibles en el servidor, qué tipos de datos puede manejar, las operaciones y los mensajes que soporta el servicio. Es frecuente que el cliente utilice el

UF1846. Desarrollo de aplicaciones web distribuidas

31


protocolo SOAP para acceder a las funciones listadas en el WSDL. Por lo tanto, el fichero WSDL tendrá la siguiente estructura: •

<types> Tipos de Datos: define los tipos de datos utilizados en los mensajes y definidos en la especificación XML.

<message> Mensajes: define los elementos de mensaje, estos elementos pueden incluir cualquiera de los tipos definidos en la sección anterior.

<operation> Operación: descripción abstracta de una acción admitida por el servicio.

<port> Puerto: se define como la combinación de un enlace y una dirección de red.

<portType> Tipos de puerto: define las operaciones permitidas y los mensajes intercambiados en el servicio.

<binding> Unión: indica el conjunto de protocolos de comunicación utilizados y del formato de datos para un tipo de puerto determinado.

<service> Servicios: indica el conjunto de puertos y dirección de los mismos.

Los servicios web se implementan normalmente con lenguajes de programación diseñados para interactuar con la web, como PHP, ASP, JSP. Estas implementaciones suelen estar también representadas utilizando WSDL.

32

UF1846. Desarrollo de aplicaciones web distribuidas


1

.9. Estándares de seguridad en servicios web: WS-Security, SAML, XACML, etc. Definición: Los estándares de seguridad son un conjunto de protocolos que contienen especificaciones acerca de la manera de garantizar la seguridad e integridad de datos en las transacciones de mensajería de Servicios Web.

Entre los más utilizados actualmente podemos destacar los siguientes. WS-Security, conocido ahora como WSS, fue desarrollado originalmente por IBM, Microsoft, y VeriSign. Aunque existen otros métodos para garantizar la transacción segura de datos en los servicios web, como utilizar TLS (Transport Layer Security). Como el envío mediante HTTPS, este tipo de protocolos pueden no asegurar la información de extremo a extremo, como en el caso del uso de proxys, que operan sobre el mensaje dejando un vacío de seguridad. WSS añade características de seguridad en el encabezado de un mensaje SOAP, trabajando en la capa aplicación, asegurando seguridad extremo a extremo. SAML (Security Assertion Markup Language) se define como framework XML para el intercambio de datos de autentificación y autorización entre un proveedor de identidad y un proveedor de servicio, actuando como la base de control de seguridad de acceso en internet y de los nuevos servicios web, y avalado por el comité OASIS Security Services Technical Committee (SSTC). SAML trata de definir los componentes necesarios para garantizar que las aplicaciones puedan intercambiar información de autentificación y control de accesos de usuario de manera transparente, facilitando la implementación de entornos donde la identificación del usuario es independiente del resto de la aplicación usada. El framework se suele utilizar con otras tecnologías y especificaciones como WS_Security, SOAP, WS-Trust, etc. La metodología de uso del estándar se basa en el concepto de aserción, el cual tiene tres posibilidades: •

Una declaración sobre la autentificación del usuario y su identidad,

UF1846. Desarrollo de aplicaciones web distribuidas

33


indicándose quién, cómo y cuándo fue autentificado. •

Una lista de credenciales de autorización del usuario, enumerando una serie de atributos asociados al sujeto.

Una concesión de autorización de un objeto para dar permiso a acceder a un recurso, por medio de una declaración de autorización.

Las especificaciones de seguridad de SAML recomiendan la firma XML y encriptación XML para seguridad a nivel mensaje XACML, y la SSL 3.0 o TLS 1.0 para la seguridad a nivel transporte. XACML consiste en un lenguaje de normas XML que se utiliza para describir los requisitos de control de acceso generales, es el encargado de crear un modelo para el intercambio de información de autorización, así como de almacenar y estructurar dicha información. Trabaja con un protocolo de petición y respuestas donde los componentes realizan una solicitud para saber si una acción puede ser o no permitida, devolviendo como resultado un valor que indica el resultado de la petición: •

Denegación.

Permisión.

Indeterminado en caso de error.

No aplicable.

Para ello presenta dos tipos de esquemas: •

Estructura para los mensajes de autorización que define la estructura del mensaje XML para una solicitud de autorización y del mensaje de respuesta

Estructura para las políticas de acceso que define el esquema XML de las políticas de acceso, que definen qué tipo de usuario puede realizar determinadas acciones sujetas a un tipo de contexto.

WS-Policy consiste en una especificación que sirve para delimitar las diferentes políticas aplicables a los servicios Web cuando deseamos integrar los servicios Web, mejorando así la integración y escalabilidad del proyecto.

34

UF1846. Desarrollo de aplicaciones web distribuidas


Mediante el marco de trabajo establecido con WS-Policy los desarrolladores podrán expresar las políticas de servicios de manera estandarizada, creando un consenso en las políticas de seguridad de las aplicaciones en tiempo de ejecución. La siguiente tabla representa un resumen para cada uno de los estándares de seguridad en servicios web: Estándar de seguridad

Definición

WS-SECURITY

Conjunto de especificaciones de seguridad de Servicios Web de OASIS. El estándar Web Services Security SOAP Messaging sirve para garantizar la seguridad de la mensajería SOAP.

SAML

Estándar en XML que se usa para la comunicación entre un usuario y un sistema, mediante la autentificación, autorización y el intercambio de mensajes.

XACML

Lenguaje basado en XML para el transporte de políticas de control de acceso a recursos, incluyendo un protocolo de solicitud y respuesta para la consulta de políticas de decisiones.

WS-Policy

Especificación recomendada por la W3C que permite a los programadores de servicios web especificar sus políticas de seguridad.

1

.10. Implementación de la seguridad en arquitecturas orientadas a servicios Cuando tratamos la seguridad en arquitecturas de este tipo nos referimos básicamente a aspectos comunes en todos los sistemas distribuidos en lo referente a la seguridad, como son la confidencialidad, integridad, privacidad, etc. Por lo que en los siguientes apartados trataremos de los aspectos básicos de seguridad en redes como son la criptografía, certificados digitales, cifrado de datos, directorio de servicios, etc.

UF1846. Desarrollo de aplicaciones web distribuidas

35


1.10.1 Conceptos básicos de criptografía Definición: La criptografía es la ciencia encargada de lograr la seguridad en el envío de mensajes por medio de la confidencialidad mediante un sistema de cifrado y códigos.

Los protocolos criptográficos son sistemas que se utilizan para proteger la información y dotar de seguridad a las comunicaciones y a las entidades que se comunican. Para ello, se desarrollan diferentes algoritmos matemáticos que sirven de herramientas para estos propósitos. El gran avance en el campo de la criptografía viene de la mano de la evolución de las matemáticas y la capacidad computacional de los ordenadores cada vez más potente, las propiedades que debe asegurar la criptografía en cuanto a seguridad son: •

Confidencialidad, que consiste en garantizar el acceso a la información solamente por el usuario autorizado, mediante técnicas de cifrado.

Integridad de la información, asegurando que esta sea la correcta y esté completa, utilizando para ello diferentes protocolos denominados funciones hash criptográficas.

Vinculación, que comprende un conjunto de técnicas que pretenden demostrar la autoría del usuario en alguna parte del proceso del mensaje, normalmente por medio de la firma digital.

Autenticación, que debe proporcionar mecanismos que permitan verificar la identidad del usuario.

1.10.2. Tipos de criptografía Existen dos grandes ramas dentro de la criptografía dependiendo del tipo de clave utilizada para cifrar o descifrar los mensajes: •

36

Cifrado simétrico: es la que solamente utiliza una única clave para cifrar y descifrar el mensaje, la cual debe ser conocida por el emisor y

UF1846. Desarrollo de aplicaciones web distribuidas


el receptor previamente. Este tipo de cifrado suele ser menos robusta debido a la existencia de una clave única, ya que el hecho de transmitir una única clave genera vulnerabilidad.

Cifrado asimétrico. Esta técnica utiliza un par de claves para el envío de mensajes, las cuales pertenecen a la misma persona a la que se ha enviado el mensaje. La primera clave es pública y se le entrega a cualquier persona y otra clave privada que el propietario debe guardarla de manera que nadie tenga acceso a ella. De esta manera, solamente el emisor conoce la clave pública; cifrando y enviando el mensaje mediante la clave al receptor este descifra el mensaje con la clave privada.

Los algoritmos de clave asimétrica consumen muchos más recursos computacionales que los de clave simétrica. El sistema de doble clave también nos permite utilizar la firma digital, de manera que el emisor puede certificar su autoría con la clave principal y verificando su identidad con la clave pública. Pero en su contra este tipo de metodología es más lenta que la criptografía simétrica.

UF1846. Desarrollo de aplicaciones web distribuidas

37


1.10.3. Entidades certificadoras Las entidades certificadoras (CA, Certification Authority) es una organización responsable de emitir y recovar los certificados digitales usados en la firma electrónica empleados en la criptografía asimétrica. Este tipo de organizaciones son consideradas prestadoras de servicios de certificación y se encargan de verificar la identidad de un usuario de un certificado antes de su expedición. Estos certificados recogen determinados datos del titular y su clave pública, y serán firmados electrónicamente por la autoridad certificadora. Este es un caso de prestación de servicios de certificación que legitima ante terceros. Normalmente, esta autoridad suele ser alguna administración pública, aunque puede ser cualquier organización que genere la confianza necesaria entre los usuarios para su correcto funcionamiento. En cualquier caso, actualmente no existe un procedimiento normalizado para demostrar que una autoridad certificadora merece dicha confianza.

1.10.4. Certificados digitales. Características Como hemos visto anteriormente, un certificado digital consiste en un procedimiento que permite a un usuario identificarse en la red, y suele ser necesario para diferentes trámites legales o comerciales, como los relacionados con trámites electrónicos en las administraciones públicas. Por lo tanto, el certificado electrónico tendrá las siguientes funciones: •

Autentificar la identidad digital del usuario ante terceros.

Firmar electrónicamente de forma que se asegure la integridad de los datos trasmitidos y su procedencia.

Garantizar que el documento firmado no ha sido manipulado por terceros, por lo que la integridad de los datos es asegurada.

Entre las diferentes características que pueden tener los certificados digitales podemos destacar: •

38

Identificación del firmante: se debe garantizar la identidad del mismo por diferentes medios, como la firma electrónica, identificación biométrica, etc.

UF1846. Desarrollo de aplicaciones web distribuidas


Verificación de la integridad del documento firmado: mediante encriptado nos aseguramos de que dicho documento no haya sido alterado.

Garantizar el no repudio del origen: mediante la identificación del firmante garantizamos que este ha sido el autor del documento de manera inequívoca.

Garantizar el no uso de la firma en otros documentos diferentes al certificado: ya que esta está digitalmente asociada al mismo y no se puede reproducir en otros medios.

1.10.5. Identificación y firma digital mediante certificados digitales La Sede Electrónica del Instituto Nacional de Estadística es el organismo público encargado de regular los certificados digitales. En la actualidad, las administraciones publicas emiten dos tipos de certificados electrónicos: el DNIe (DNI electrónico) y el certificado de la FNMT (Fábrica Nacional de Moneda y Timbre).

El certificado digital consiste en un fichero informático que se almacena en una memoria para su posterior uso en la identificación del titular. La firma digital es el mecanismo criptográfico que permite al receptor del mensaje firmado determinar la autenticidad del mensaje, la integridad del mismo y su autoría. Por lo tanto, se utilizará en todos los casos donde sea importante determinar la veracidad de la información enviada y el autor del mensaje, e impedir la falsificación o manipulación del contenido enviado. Este elemento de verificación está compuesto por cuatro elementos de información: •

Información del titular, como el nombre, dirección, correo electrónico, etc.

UF1846. Desarrollo de aplicaciones web distribuidas

39


Clave publica del titular, ya que utiliza el cifrado asimétrico como elemento de verificación.

Información de la autoridad certificadora, incluyendo los datos del emisor del certificado.

Firma electrónica del emisor, que garantiza su autenticidad e integridad, para ello el es necesaria la clave publica del mismo.

La estructura de un certificado digital según el estándar X 509 de ITU-T (International Telecommunication Union-Telecommunication Standarization Sector) el ISO/IEC, es la siguiente: •

Versión.

Número de serie.

Algoritmo de firma.

Emisor.

Validez.

Titular.

Clave pública.

Extensiones o complementos, que pueden ser de dos tipos: o

Restrictivas: limitan el uso del certificado.

o

Informativas: proveen información adicional sobre el certificado.

La firma digital debe poseer una serie de propiedades que le confieren validez, e impedir la posibilidad de ser falseada. Estas propiedades son:

40

El uso de una clave secreta conocida en exclusiva por el titular para generar la firma.

La firma digital debe ser única. Esta debe ser generada únicamente por el firmante y no admitir duplicidades.

UF1846. Desarrollo de aplicaciones web distribuidas


Computacionalmente seguras. Es decir, que el algoritmo para resolver la encriptación de la firma sea tan complejo que garantice la imposibilidad de ser falsificada.

Verificable. Se debe poder demostrar la autoría del firmante en cualquier momento y la integridad del mensaje.

Como hemos comentado anteriormente, la firma digital es un proceso que nos permite identificar la identidad de una persona en un sistema informático, vinculándola con un documento digital. En el proceso de firma digital asimétrica, la clave privada debe permanecer bajo la custodia de su titular o propietario, mientras que la clave pública es enviada junto al mensaje y posibilita al destinatario verificar quién es el autor del mensaje. El proceso conlleva los siguientes pasos: 1. Creamos el mensaje o documento. 2. Se aplica la firma al documento mediante una función logarítmica que aplica una huella digital única. 3. El receptor descifra la firma digital aplicando la función logarítmica al documento original mediante la clave pública. Luego se comparan las dos huellas digitales, la original y la del documento descifrado por el receptor, si las dos huellas digitales coinciden el documento no ha sido alterado, y se garantía de ese modo la identidad del emisor.

1.10.6. Cifrado de datos Definición: Se denomina cifrado de datos al proceso por medio del cual se transforma la información legible en ilegible por medio de un algoritmo matemático o criptograma, asegurando que el destinatario pueda proteger el contenido de la información y enviarlo a un destinatario sin riesgo a ser accedida por terceros.

Existen multitud de protocolos informáticos que utilizan el cifrado para salvaguardar la integridad, privacidad y autenticación de la información. En el caso de los servicios de internet, los más utilizados utilizan el certificado SSL,

UF1846. Desarrollo de aplicaciones web distribuidas

41


como el HTTPS o protocolo HTTP seguro. El certificado SSL aporta una prueba de autenticidad al sitio web, indicando que este es real y confiable para introducir datos personales. SSL (Secure Socket Layer) incorpora un protocolo de seguridad que encripta los datos para que se transfieran de manera íntegra y segura por la red. El modelo SSL está implementado desde los servidores de internet, creando un canal con un cifrado único para las sesiones privadas a través que internet. La clave pública del servidor está al alcance de cualquier persona, mientras que las aplicaciones web que soportan el certificado SSL utilizan la clave privada para descifrarla.

Seguridad en una red VPN consiste en una técnica de tunneling para dotar de seguridad a redes públicas, en las cuales se instala un canal seguro mediante cifrado de manera que se garantiza la integridad de los datos que circulan por ese canal, mediante protocolos de comunicación segura como IPSec que es el estándar nativo de VPN, u otros como SSL o PPTP. El tunneling utiliza una técnica de protección de la información mediante el encapsulamiento de la misma en un paquete. Este paquete viajará por la red en un envoltorio que solo entenderá el gateway (puerta de enlace) emisor y receptor, actuando de interfaz de conexión entre diferentes servicios, actuando de traductor de información del protocolo usado en la red inicial al utilizado en la red de destino, siendo todo el proceso transparente para el usuario. Otro método para utilizar el cifrado en la seguridad informática es por medio del cifrado de archivos. Existen aplicaciones que permiten el cifrado de un fichero informático completo, este método puede ser útil también para el almacenamiento seguro de la información por parte de una organización. Otra alternativa sería el cifrado de disco duro, permaneciendo todo el sistema de archivos cifrado mediante un proceso que permita que cada vez que se almacene

42

UF1846. Desarrollo de aplicaciones web distribuidas


un fichero se haga cifrado por defecto de manera que todo el contenido en el disco duro esté cifrado.

1

.11. Directorios de servicios

Los directorios de servicios son otras de las utilidades comunes en los sistemas distribuidos para organizar y almacenar información de manera segura. En los siguientes apartados veremos las características de los directorios de servicios y las características de seguridad que estos aportan.

1.11.1. Concepto de directorio Un directorio informático consiste en una porción de memoria que almacena una serie de datos bajo un mismo nombre, que pueden estar agrupados bajo cualquier criterio que decida el usuario. El servicio de directorios (SD) consiste en un conjunto de aplicaciones que almacena y organiza la información sobre los directorios, como los archivos que contiene, los usuarios que los utilizan, los atributos de los archivos o dónde se encuentran físicamente en el dispositivo de almacenamiento la información contenida o las aplicaciones Cliente/Servidor que utilizan esta información. Un directorio de servicios es un conjunto de aplicaciones que almacenan y gestionan la información y recursos de una red informática, actuando como una capa de abstracción entre los usuarios y los recursos compartidos. Esta estructura jerárquica almacena información sobre los objetos existentes en la red, tanto sobre las carpetas como otros recursos en general.

1.11.2. Ventajas e inconvenientes Entre las principales ventajas de los directorios distribuidos podemos señalar: •

Organización de la información, permitiendo crear grupos de usuarios con acceso a determinada información y permisos para manejarla.

UF1846. Desarrollo de aplicaciones web distribuidas

43


Control de usuarios más eficaz, permitiendo delimitar el acceso a los recursos de la red para cada uno por medio de la autenticación.

Escalabilidad, de manera que podemos ampliar las funcionalidades de unos pocos equipos a miles de manera sencilla.

Sincronización de datos, lo que nos permite acceder a copias de seguridad de manera más sencilla.

Los inconvenientes pueden venir dados de los costes de implementación y organización del sistema de directorios, debido a que el proceso de instalación y gestión del directorio distribuido añade tiempos de trabajo y licencias, que en determinados proyectos de escasa dimensión puede ser un coste añadido que no repercuta en el resultado final

1.11.3. Directorios distribuidos Los SD actúan como una capa de abstracción entre los usuarios y los recursos compartidos. Estos pueden ser de dos tipos desde el punto de vista de la distribución de la información: •

Centralizado: un único servidor presta todo el servicio de directorio, atendiendo a todas las peticiones de los clientes

Distribuidos: varios servidores proporcionan el servicio de directorio, para ello los datos pueden estar fraccionados y/o replicados, en el caso de datos fraccionados cada entrada es almacenada en un solo servidor y este almacena un subconjunto único y no solapado de información, mientras que si la información esta replicada, una entrada puede estar almacenada en varios servidores.

Normalmente, en un sistema de directorio distribuido se utilizan los dos métodos conjuntamente. Existen diferentes implementaciones de SD dependiendo de las compañías que lo soportan, algunas de ellas son: o Open Directory: Apple dispone de un servicio del directorio que integra varios protocolos estándares abiertos y propietarios.

44

UF1846. Desarrollo de aplicaciones web distribuidas


o Active Directory: es el servicio del directorio de Microsoft, que se incluye en las versiones de los sistemas operativos Windows. o Apache DS: servicio del directorio de Apache Software Fundation, o OID: es el servicio del directorio de Oracle Corporation.

1.11.4. Estándares sobre directorios de servicios: UDDI El directorio UDDI (Universal Discovery, Description and Integration) es un estándar abierto de directorios de servicios para servicios web promovido por la OASIS (Organization for the Advancement of Structured Information Standards). Es un registro público diseñado para almacenar de forma estructurada información sobre empresas y los servicios que estas ofrecen, por medio del cual se puede publicar y encontrar información de una empresa y de sus servicios. Los datos del registro pueden ser clasificados mediante taxonomías para recuperarlos fácilmente en función de una categoría.

UDDI fue desarrollado por un conjunto de empresas entre las que se encuentran Microsoft, IBM y SAP, entre otras, y surgió con la intención de centralizar web services comunes, así como ofrecer un depósito central donde se pueden realizar búsquedas de web services específicos. UDDI se ha convertido en uno de los estándares básicos de los web services. Normalmente actúa siendo accedido por los mensajes SOAP y creando documentos WSDL en los que se describen los requisitos del protocolo y los formatos del mensaje solicitado para interactuar con los servicios web del catálogo de registros. Podemos interactuar con el directorio UDDI mediante un conjunto de llamadas a API XML basadas en SOAP para descubrir datos técnicos de los servicios que permitan invocarlos y utilizarlos, sirviendo de infraestructura para una colección de software basado en servicios web Un registro UDDI tiene varias partes:

UF1846. Desarrollo de aplicaciones web distribuidas

45


Páginas blancas: la que indica la dirección, el contrato, los identificadores de la empresa como el nombre y descripción, y otra información adicional.

Páginas amarillas: proveen la categoría de la taxonomía industrial propuesta por UDDI. Existirá una página amarilla por cada servicio asociado a una página blanca.

Páginas verdes: contiene toda la información técnica sobre los servicios de la empresa, describe la manera de acceder a los servicios web y provee los enlaces a dichos servicios.

El registro de un negocio en UDDI se realiza mediante algoritmos que garantizan una comunicación segura en internet. WSDL describe la interfaz pública a los servicios web, mientras que WS-Security incorpora características de seguridad en el encabezado de un mensaje SOAP. Su funcionamiento es similar a una base de datos distribuida donde los usuarios consultan el directorio UDDI para obtener información sobre servicios web, mientras que las empresas registran sus servicios para ofrecérselos a los usuarios. Por medio de UDDI podemos obtener información sobre las empresas que ofrecen servicios en internet, y elegir la más adecuada, accediendo a información sobre sus servicios ofertados, procesos empresariales, datos de contacto, etc., todo en un entorno seguro y sencillo de usar. Los repositorios de datos almacenados en el directorio UDDI registran los

46

UF1846. Desarrollo de aplicaciones web distribuidas


servicios de estas empresas a los que podemos acceder a través de su interfaz en un entorno seguro, garantizando la integridad y confidencialidad de la información.

UF1846. Desarrollo de aplicaciones web distribuidas

47


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.