169
Arquitectura de Arquitectura de Servicios Web Servicios Web José Miguel Selman G. José Miguel Selman G. j j [email protected] [email protected] Conceptos, Aplicaciones, Buenas Prácticas, Actualidad y Tendencias

Charla Web Services

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Charla Web Services

Arquitectura de Arquitectura de Servicios WebServicios Web

José Miguel Selman G.José Miguel Selman G.

[email protected]@gmail.com

Conceptos, Aplicaciones, Buenas Prácticas, Actualidad y Tendencias

Page 2: Charla Web Services

TemarioTemario

IntroducciónIntroducción Arquitectura de Servicios WebArquitectura de Servicios Web Seguridad en Servicios WebSeguridad en Servicios Web OrquestaciónOrquestación InteroperabilidadInteroperabilidad Un Web Service en 2 minutosUn Web Service en 2 minutos RecomendacionesRecomendaciones Aplicaciones y ExtensionesAplicaciones y Extensiones

- SemánticaSemántica- Grid ServicesGrid Services- PortalesPortales- Rich Internet Applications: Ajax, REST y másRich Internet Applications: Ajax, REST y más……

Page 3: Charla Web Services

PresentacionesPresentaciones

Cargo/RolCargo/Rol Empresa/AreaEmpresa/Area ExpectativasExpectativas

Page 4: Charla Web Services

Acerca de MíAcerca de Mí

Ingeniero Civíl en Ciencias de la Computación, Ingeniero Civíl en Ciencias de la Computación, Universidad de ChileUniversidad de Chile

Arquitecto Tecnológico Senior, BEE Concretorías y Arquitecto Tecnológico Senior, BEE Concretorías y SistemasSistemas

Líder Grupo Usuarios Java de Chile (www.jug.cl)Líder Grupo Usuarios Java de Chile (www.jug.cl) Instructor Cursos Java, Java EE y Arquitectura para Instructor Cursos Java, Java EE y Arquitectura para

Sun MicrosystemsSun Microsystems– CertificacionesCertificaciones

Sun Certified Java ProgrammerSun Certified Java Programmer Sun Cerified Business Component DeveloperSun Cerified Business Component Developer Sun Certified Web Component DeveloperSun Certified Web Component Developer Sun Certified Enterprise ArchitectSun Certified Enterprise Architect

Profesor Part-Time Universidad de ChileProfesor Part-Time Universidad de Chile

Page 5: Charla Web Services

IntroducciónIntroducción

La Web fue originalmente diseñeada para La Web fue originalmente diseñeada para compartir documentoscompartir documentos

Sirve muy bien este propósito:Sirve muy bien este propósito:– Información compartida: Es una librería de contenidoInformación compartida: Es una librería de contenido– Permite realizar comercio electrónicoPermite realizar comercio electrónico

Factores de éxitoFactores de éxito– Pocos estándares: HTTP+ HTMLPocos estándares: HTTP+ HTML– Modelo de interacción construido realizando pocos Modelo de interacción construido realizando pocos

supuestos sobre la plataforma computacional.supuestos sobre la plataforma computacional.– Ubicuidad: EUbicuidad: Estar en la Web y poder ser encontradostar en la Web y poder ser encontrado

Page 6: Charla Web Services

Pero ha evolucionado…Pero ha evolucionado…

WebWeb 2.0

¿Web 3.0?

?

Page 7: Charla Web Services

MotivaciónMotivación

Hoy, la Web está en todas partes, por lo que hay mucho más Hoy, la Web está en todas partes, por lo que hay mucho más que podemos hacerque podemos hacer– Centro de negocios electrónicosCentro de negocios electrónicos– E-commerce automatizadoE-commerce automatizado– Integración de procesos de negocioIntegración de procesos de negocio– Posibilidad de compartir recursos. (Grid Computing)Posibilidad de compartir recursos. (Grid Computing)– Portales de Agregación de InformaciónPortales de Agregación de Información– ……

Las soluciones ad-hoc y propietarias han demostrado no ser Las soluciones ad-hoc y propietarias han demostrado no ser lo suficientente lo suficientente eficienteseficientes

Objetivo: Objetivo: Permitir interacciones entre sistemas distribuídos en Permitir interacciones entre sistemas distribuídos en la Webla Web

Page 8: Charla Web Services

Evolución computación Evolución computación distribuída (Hacia Servicios distribuída (Hacia Servicios Web)Web)

* Fuente: “J2EE Web Services on BEA Weblogic”, Anjali Anagol-Subbarao

E-Mail

EDI

RPCs

Corba

COM XML

SOAPWSDL

WS-Stack

RMI199719901970

2000

1980 (*)

Page 9: Charla Web Services

Definiendo Servicios Definiendo Servicios WebWeb ““A Software System designed to A Software System designed to

support Interoperable machine-to-support Interoperable machine-to-machine interaction over a network”machine interaction over a network”– W3CW3C

CaracterísticasCaracterísticas– Independientes de la PlataformaIndependientes de la Plataforma– Diseñados para apalancar tecnologías existentesDiseñados para apalancar tecnologías existentes– Soporte para varios lenguajes de programaciónSoporte para varios lenguajes de programación– Tres estándaresTres estándares

SOAP + UDDI + WSDLSOAP + UDDI + WSDL

Page 10: Charla Web Services

WS como WS como Componentes RemotosComponentes Remotos Proveen mecanismos para ejecutar Proveen mecanismos para ejecutar

operaciones remotas de forma similar a: operaciones remotas de forma similar a: – CORBACORBA– RMIRMI– RPCRPC– DCOMDCOM

La diferencia principal:La diferencia principal:– Apalancamiento de tecnologías y protocolos Apalancamiento de tecnologías y protocolos

maduros y estándares de Internet (HTTP, XML, …)maduros y estándares de Internet (HTTP, XML, …)– Librerías en muchos lenguajes de programaciónLibrerías en muchos lenguajes de programación

Page 11: Charla Web Services

Quién es QuiénQuién es Quién

Web Services Interoperability Organization•Basic Profile, Attachments Profile, …

www.ws-i.org

Internet Engineering Task Force•HTTP, FTP, …

www.ietf.org

Advancing Open Standards for the Information Society•UDDI, WS-Security, WS-*, …

www.oasis-open.org

World Wide Web Consortium•SOAP, WSDL

www.w3c.org

Page 12: Charla Web Services

Quienes aparecen Quienes aparecen siempre…siempre…

Y muchos otros…

Page 13: Charla Web Services

Características de los Características de los Servicios WebServicios Web

ObjetivosObjetivos– Permitir interoperabilidad universalPermitir interoperabilidad universal– Adopción masiva, ubicuidad, rendimientoAdopción masiva, ubicuidad, rendimiento– Soportar una arquitectura orientada a Soportar una arquitectura orientada a

Servicios (SOA)Servicios (SOA)– Soportar eficientemente ambientes Soportar eficientemente ambientes

abiertos (Web) y cerrados (corporativos)abiertos (Web) y cerrados (corporativos)

Page 14: Charla Web Services

Características de los Características de los Servicios WebServicios Web Objetivos derivadosObjetivos derivados

– Conocer con precisión cuales son los Conocer con precisión cuales son los Servicios ofrecidos por un Servicios ofrecidos por un proveedor, junto con la descripción proveedor, junto con la descripción de su interfazde su interfaz

– Utilizar un estándar que permita Utilizar un estándar que permita comunicar aplicaciones comunicar aplicaciones independiente de la plataformaindependiente de la plataforma

Page 15: Charla Web Services

Características de los Características de los Servicios WebServicios Web Objetivos (+ técnicos)Objetivos (+ técnicos)

– Tener un protocolo universal para la Tener un protocolo universal para la comunicación entre aplicacionescomunicación entre aplicaciones

– Basar la comunicación en los Basar la comunicación en los protocolos de internet (en especial protocolos de internet (en especial HTTP)HTTP)

– Estandarizar los mensajes a enviar, Estandarizar los mensajes a enviar, ya sea un documento a procesar ya sea un documento a procesar remotamente o la invocación de un remotamente o la invocación de un comandocomando

Page 16: Charla Web Services

Características de los Características de los Servicios WebServicios Web RequerimientosRequerimientos

– Basado en estándaresBasado en estándares– Muy buen soporte es críticoMuy buen soporte es crítico– Se asume una muy pequeña Se asume una muy pequeña

infraestructurainfraestructura Sólo un pequeño número de estándares debe Sólo un pequeño número de estándares debe

ser implementado.ser implementado.

– Se enfoca en Se enfoca en MENSAJES MENSAJES y y DOCUMENTOSDOCUMENTOS, , no en componentes de Softwareno en componentes de Software

Page 17: Charla Web Services

Características de los Características de los Servicios WebServicios Web Servicio WebServicio Web

- Es una arquitectura de computación Es una arquitectura de computación distribuídadistribuída

- Usa sus propias interfaces, Usa sus propias interfaces, protocolos y servicios de registro, protocolos y servicios de registro, para que distintas aplicaciones de para que distintas aplicaciones de distintas plataformas puedan usar distintas plataformas puedan usar sus procedimientos sus procedimientos

- En constante evoluciónEn constante evolución

Page 18: Charla Web Services

Las aplicaciones de Servicios Las aplicaciones de Servicios Web son encapsuladas; Web son encapsuladas; componentes Web bajamente componentes Web bajamente acoplados que se pueden acoplados que se pueden vincular dinámicamente entre vincular dinámicamente entre sísí

Page 19: Charla Web Services

Ciclo de Vida ServiciosCiclo de Vida Servicios

Registro o Directorio

Proveedor del Servicio

Consumidor delServicio

1. Desarrollo servicio e interfaz

2. Publica servicio en el directorio

3. Busca proveedorde servicio.

4. Listado de proveedores deservicio y descripciones.

5. Desarrollo aplicación cliente

6. Requiere Servicio

7. Provee Servicio

Page 20: Charla Web Services

Otras PreocupacionesOtras Preocupaciones

Page 21: Charla Web Services

Framework de Servicios Framework de Servicios WebWeb

Se describe en términos de:Se describe en términos de:

– Lo que va en el “fierro” o en los “cables”: Lo que va en el “fierro” o en los “cables”: Formatos y protocolosFormatos y protocolos..

– Qué describe lo que va en el “cable”:Qué describe lo que va en el “cable”:Lenguajes de Descripción.Lenguajes de Descripción.

– Qué nos permite encontrar estas Qué nos permite encontrar estas descripiones:descripiones:Descubrimiento de Servicios.Descubrimiento de Servicios.

Page 22: Charla Web Services

Arquitectura Arquitectura ConceptualConceptual

ComunicacionesHTTP, SMTP, FTP, JMS, IIOP, …

MensajesExtensiones SOAPEntrega Confiable, Correlación, Transacciones…

SOAP

DescripcionesWSDL

ProcesosDescubrimiento, Agregación, Coreografía, …

XM

L, DTD

, XM

L Sch

em

a

SEGURIDAD

ADMINISTRACIÓN

Page 23: Charla Web Services

¿Qué provee la ¿Qué provee la Arquitectura?Arquitectura? Encapsulamiento de Encapsulamiento de

funcionalidadesfuncionalidades Sistemas débilmente acopladosSistemas débilmente acoplados Componentes reutilizablesComponentes reutilizables Acceso mediante programaciónAcceso mediante programación Montado “sobre” la WebMontado “sobre” la Web Comunicación sobre XMLComunicación sobre XML

Page 24: Charla Web Services

Recordemos que…Recordemos que…

Web ServicesWeb Services• WSDLWSDL

• Web Services Description LanguageWeb Services Description Language

• SOAPSOAP• SOAPSOAP

• UDDIUDDI• Universal Description, Discovery and Universal Description, Discovery and

IntegrationIntegration

Page 25: Charla Web Services

WSDLWSDL Web Web ServicesServices Description Language Description Language Es un Es un documentodocumento XML que introduce una gramática para XML que introduce una gramática para describirdescribir puntos puntos

de emisión de mensajes (endpoints).de emisión de mensajes (endpoints). Los elementos que permiten describir “endpoints” son:Los elementos que permiten describir “endpoints” son:

– Messages: Referencias a XML Schema que definen las diferente Messages: Referencias a XML Schema que definen las diferente partes de un Mensaje.partes de un Mensaje.

– Operations: Lista de Mensajes involucrados en un flujo de mensaje. Operations: Lista de Mensajes involucrados en un flujo de mensaje. Por ejemplo una operación de request-response contiene dos Por ejemplo una operación de request-response contiene dos mensajes.mensajes.

– PortType: Es el set de flujos de mensajes (Operations), que se PortType: Es el set de flujos de mensajes (Operations), que se encuentran en un “endpoint”, sin detallar el transporte ni la encuentran en un “endpoint”, sin detallar el transporte ni la codificación.codificación.

– Binding: Medio de transporte y codificación particular de un PortType.Binding: Medio de transporte y codificación particular de un PortType.– Port: Dirección en la red de un “endpoint” y el binding que lo Port: Dirección en la red de un “endpoint” y el binding que lo

caracteriza.caracteriza.– Service: Colección de “endpoints” relacionados.Service: Colección de “endpoints” relacionados.

Page 26: Charla Web Services

WSDLWSDL

types

message

portTypes

bindings

port

service

DefinicionesAbstractas

DefinicionesConcretas

DocumentoWSDL

Declaraciones de Tipos de datos (“dataTypes”)

Definición de los mensajes en términos de los “dataTypes”

Definición de las operaciones soportadas y los mensajes que forman parte de las mismas

Protocolo usado para implementar un “portType” y el formato de los mensajes

Asocia una dirección concreta con un “binding”

Define los “ports” que proveen el servicio

Page 27: Charla Web Services

WSDLWSDL

Service

Port(e.g. http://host/svc)

Binding(e.g. SOAP)

Interfaz Abstracta

portType

operation(s)

inMesage outMessage

Port

Binding

Page 28: Charla Web Services

WSDL ejemploWSDL ejemplo

Page 29: Charla Web Services

SOAPSOAP

Antes: Simple Object Access ProtocolAntes: Simple Object Access Protocol Ahora: Solo SOAPAhora: Solo SOAP Es un protocolo liviano para el intercambio Es un protocolo liviano para el intercambio

de información en ambientes distribuídos y de información en ambientes distribuídos y descentralizadosdescentralizados

Page 30: Charla Web Services

Introducción : SOAPIntroducción : SOAP

No hace todo lo que hace CORBA, RMI o alguna No hace todo lo que hace CORBA, RMI o alguna de las arquitecuras de Computación Distribuída de las arquitecuras de Computación Distribuída anterioresanteriores

Pero es simple…Pero es simple… Estrutura Física:Estrutura Física:

– Envelope: Contenedor del mensajeEnvelope: Contenedor del mensaje– Header: Permite agregar nuevas funcionalidad Header: Permite agregar nuevas funcionalidad

dependientes de la plataformadependientes de la plataforma– Body: Contenedor para la información a Body: Contenedor para la información a

transmitirtransmitir– Fault: Contenedor de Mensajes de errorFault: Contenedor de Mensajes de error

Page 31: Charla Web Services

Estructura: Flexible y Estructura: Flexible y ExtensibleExtensible

Transporte

(HTTP, SMTP, FTP, MQ, etc.)

Envelope (XML)

Header Body

Mensaje o PayLoad • RPC/Encoded• Document/Literal

• Información Rutas• Transacciones• Entrega Confiable• Seguridad

Page 32: Charla Web Services

Ejemplos SOAPEjemplos SOAP

Page 33: Charla Web Services

Extensión: SOAP with Extensión: SOAP with AttachmentsAttachments Es posible extender la definición Es posible extender la definición

SOAPSOAP Puede ser transportado dentro de Puede ser transportado dentro de

un MIMEun MIME- MultiPurpose Internet Mail ExtensionMultiPurpose Internet Mail Extension

Se preservan las reglas de SOAPSe preservan las reglas de SOAP Permite el encapsulamiento de Permite el encapsulamiento de

compendios de documentoscompendios de documentos

Page 34: Charla Web Services

Extensión : SOAP with Extensión : SOAP with AttachmentsAttachments

POST /insuranceClaims HTTP/1.1POST /insuranceClaims HTTP/1.1 Host: www.risky-stuff.comHost: www.risky-stuff.com Content-Type: Multipart/Related; boundary=MIME_boundary; type=text/xml;Content-Type: Multipart/Related; boundary=MIME_boundary; type=text/xml; start="<[email protected]>"start="<[email protected]>" Content-Length: XXXXContent-Length: XXXX SOAPAction: http://schemas.risky-stuff.com/Auto-ClaimSOAPAction: http://schemas.risky-stuff.com/Auto-Claim Content-Description: This is the optional message description.Content-Description: This is the optional message description.

--MIME_boundary--MIME_boundary Content-Type: text/xml; charset=UTF-8Content-Type: text/xml; charset=UTF-8 Content-Transfer-Encoding: 8bitContent-Transfer-Encoding: 8bit Content-ID: <[email protected]>Content-ID: <[email protected]>

<?xml version='1.0' ?><?xml version='1.0' ?> <SOAP-ENV:Envelope<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body><SOAP-ENV:Body> <claim:insurance_claim_auto id="insurance_claim_document_id"<claim:insurance_claim_auto id="insurance_claim_document_id" xmlns:claim="http://schemas.risky-stuff.com/Auto-Claim">xmlns:claim="http://schemas.risky-stuff.com/Auto-Claim"> <theSignedForm href="cid:[email protected]"/><theSignedForm href="cid:[email protected]"/> <theCrashPhoto href="cid:[email protected]"/><theCrashPhoto href="cid:[email protected]"/> <!-- ... more claim details go here... --><!-- ... more claim details go here... --> </claim:insurance_claim_auto></claim:insurance_claim_auto> </SOAP-ENV:Body></SOAP-ENV:Body> </SOAP-ENV:Envelope></SOAP-ENV:Envelope>

--MIME_boundary--MIME_boundary Content-Type: image/tiffContent-Type: image/tiff Content-Transfer-Encoding: base64Content-Transfer-Encoding: base64 Content-ID: <[email protected]>Content-ID: <[email protected]>

...Base64 encoded TIFF image......Base64 encoded TIFF image... --MIME_boundary--MIME_boundary Content-Type: image/jpegContent-Type: image/jpeg Content-Transfer-Encoding: binaryContent-Transfer-Encoding: binary Content-ID: <[email protected]>Content-ID: <[email protected]>

...Raw JPEG image.....Raw JPEG image.. --MIME_boundary-- --MIME_boundary--

Page 35: Charla Web Services

SOAPSOAP

Page 36: Charla Web Services

SOAPSOAP

Page 37: Charla Web Services

UDDIUDDI

Universal Description, Discovery and Universal Description, Discovery and IntegrationIntegration

Es un documento XML que describe un Es un documento XML que describe un negocio y los servicios que ofrecenegocio y los servicios que ofrece

La idea es buscar la compañía que La idea es buscar la compañía que ofrece un servicio requerido, ver sus ofrece un servicio requerido, ver sus características y posiblemente características y posiblemente contactar al encargadocontactar al encargado

Páginas Amarillas de SW, pero con Páginas Amarillas de SW, pero con páginas blancas, amarillas y verdespáginas blancas, amarillas y verdes

Page 38: Charla Web Services

UDDIUDDI

Estándar de facto para la publicación y Estándar de facto para la publicación y descubrimiento de Servicios Webdescubrimiento de Servicios Web

Nace de la necesidad de compartir WS internosNace de la necesidad de compartir WS internos Pretende “divulgar y publicitar” los WS en Pretende “divulgar y publicitar” los WS en

InternetInternet- Puede ser usado en IntranetsPuede ser usado en Intranets

Dos especificaciones:Dos especificaciones:– API (herramientas para publicar y consultar)API (herramientas para publicar y consultar)– Data Structure (definiciones y codificaciones)Data Structure (definiciones y codificaciones)

Page 39: Charla Web Services

UDDIUDDI

Codificación:Codificación:– businessEntity: Datos del proveedor del businessEntity: Datos del proveedor del

servicioservicio– businessService: Categorización basada en businessService: Categorización basada en

negocios o tipos de servicionegocios o tipos de servicio– tModel: Detalles técnicos (gralmente WSDL), tModel: Detalles técnicos (gralmente WSDL),

pero la idea es independizarse de la pero la idea es independizarse de la implementación.implementación.

Identificados con UUID, “identificador único Identificados con UUID, “identificador único universal”universal”… … - (Bueno, casi…)(Bueno, casi…)

Page 40: Charla Web Services

Consultas UDDIConsultas UDDI

Page 41: Charla Web Services

Problemas UDDIProblemas UDDI

Los estándares que componen la arquitectura de Servicios Web están diseñados para Los estándares que componen la arquitectura de Servicios Web están diseñados para proveer descripciones del mecanismo de transporte (SOAP), y las interfaces utilizadas proveer descripciones del mecanismo de transporte (SOAP), y las interfaces utilizadas (WSDL). Sin embargo estas características no permiten lograr una automática (WSDL). Sin embargo estas características no permiten lograr una automática localización de Servicios Web en base a las capacidades que poseen y las funciones localización de Servicios Web en base a las capacidades que poseen y las funciones que cumplen. que cumplen.

UDDI intenta describir Servicios Web, mediante un directorio jerárquico de negocios, UDDI intenta describir Servicios Web, mediante un directorio jerárquico de negocios, que a través de una serie de atributos, permite navegar por una jerarquía clasificada que a través de una serie de atributos, permite navegar por una jerarquía clasificada de negocios que poseen servicios. Pero tampoco es capaz de representar las de negocios que poseen servicios. Pero tampoco es capaz de representar las capacidades de un Servicio Web, por lo tanto no entrega herramientas adecuadas capacidades de un Servicio Web, por lo tanto no entrega herramientas adecuadas para buscar servicios en base a lo que proveen. Aún más, la búsqueda sólo permite para buscar servicios en base a lo que proveen. Aún más, la búsqueda sólo permite como entrada palabras clave o como entrada palabras clave o keywords, keywords, lo que lleva a recibir resultados amplios y lo que lleva a recibir resultados amplios y con una muy baja o nula relación.con una muy baja o nula relación.

Un Servicio Web puede existir en distintos repositorios UDDI, con distintos Un Servicio Web puede existir en distintos repositorios UDDI, con distintos identificadores. No existen protocolos de comunicación estandarizados entre identificadores. No existen protocolos de comunicación estandarizados entre directorios, que permitan manejar una sincronización de servicios publicados. directorios, que permitan manejar una sincronización de servicios publicados. Además, un mismo servicio puede ser categorizado con atributos completamente Además, un mismo servicio puede ser categorizado con atributos completamente distintos en dos directorios UDDI.distintos en dos directorios UDDI.

Cabe recordar que la experiencia práctica en el uso de directorios UDDI públicos (un Cabe recordar que la experiencia práctica en el uso de directorios UDDI públicos (un directorio privado es siempre más riguroso), muestra que existe un gran número de directorio privado es siempre más riguroso), muestra que existe un gran número de descripciones de Servicios Web incompletas, erróneas o mal clasificadas. Un caso descripciones de Servicios Web incompletas, erróneas o mal clasificadas. Un caso típico es encontrar Servicios Web publicados en un directorio, que ni siquiera cuentan típico es encontrar Servicios Web publicados en un directorio, que ni siquiera cuentan con atributo que indique donde encontrar la descripción WSDL del servicio.con atributo que indique donde encontrar la descripción WSDL del servicio.

Page 42: Charla Web Services

En Resumen: ¿Qué va en el En Resumen: ¿Qué va en el cable hasta ahora?cable hasta ahora?

La integración en Internet La integración en Internet necesita un lenguajenecesita un lenguaje– XML messaging XML messaging

protocol sobre HTTP: protocol sobre HTTP: SOAPSOAP

Dentro de organizaciones Dentro de organizaciones la integración debe la integración debe permitir alternar entre:permitir alternar entre:– CORBA, RMI, CORBA, RMI, ……– MensajeríaMensajería– Métodos o Servicios Métodos o Servicios

localeslocales

SOAP SOAP

SeguridadSeguridad

AttachmentsAttachments

ConfiabilidadConfiabilidad

RuteoRuteo

TransaccionesTransacciones

ContextoContexto

W3C

Page 43: Charla Web Services

Piezas Faltantes: WS-*Piezas Faltantes: WS-*

Seguridad (WS-Security)Seguridad (WS-Security)– Logging, credencialesLogging, credenciales– WS-Trust, WS-SecureConversation, WS-Trust, WS-SecureConversation, ……

Transactions (WS-Transaction)Transactions (WS-Transaction)– WS-AtomicTransction, WS-AtomicTransction, ……

Calidad de Servicio (Calidad de Servicio (WS-ReliableMessagingWS-ReliableMessaging))– Garantías de la puntualidad Garantías de la puntualidad

Operaciones asincrónicas Operaciones asincrónicas – Coordinaciones, WorkflowCoordinaciones, Workflow

……

Page 44: Charla Web Services

Seguridad en Servicios Seguridad en Servicios WebWeb

Page 45: Charla Web Services

Seguridad como un Seguridad como un habilitadorhabilitador Integración de AplicacionesIntegración de Aplicaciones EAIEAI

– CRMsCRMs– ERPsERPs

B2C, B2B, etc.B2C, B2B, etc. Automatización de Procesos de NegocioAutomatización de Procesos de Negocio Portales de Agregación de InformaciónPortales de Agregación de Información ……

Page 46: Charla Web Services

Arquitectura General Arquitectura General Aplicaciones Aplicaciones EmpresarialesEmpresariales

ClientesServidor

WebServidor

App.

ServidorApp.

ServidorApp.

AccesoDatos

Conectores aSistemas Legacy

Bases deDatos

Seguridad Back-end

• Seguridad Mainframe• Seguridad RDBMS• etc.

Seguridad Middleware

• Roles• Seguridad Componentes• Criptografía• etc.

Seguridad Perímetro

• Firewalls/VPNs• Criptografía• Seguridad Servidores Web• Detección de Intrusión• etc.

Plataformas Predominantes: J2EE y .NET

Page 47: Charla Web Services

¿De qué debemos ¿De qué debemos proteger nuestras proteger nuestras aplicaciones?aplicaciones?

Violación de Confidencialidad Violación de Integridad

Ataque de Repetición

Page 48: Charla Web Services

Ataques AplicacionesAtaques Aplicaciones

Ataque del Intermediario (conocido como “Man in the Middle”)

Page 49: Charla Web Services

Ataque típicos Ataque típicos Aplicaciones WebAplicaciones Web Manipulación de parámetrosManipulación de parámetros

– http://www.sitio.com/listadoProductos.do?maxResults=100 ¿maxResults=999999999?¿maxResults=999999999?

– Ataques SQL (SQL Ataques SQL (SQL InjectionInjection)) http://www.sitio.com/listTabla.aspx?orderBy=columna1

– SELECT * FROM tabla ORDER BY columna1SELECT * FROM tabla ORDER BY columna1 Recursos no publicadosRecursos no publicados

– http://www.sitio.com/documentos/documento1.html ¿http://www.sitio.com/documentos/?¿http://www.sitio.com/documentos/? ¿http://www.sitio.com/test/?¿http://www.sitio.com/test/? ¿http://www.sitio.com/prueba/?¿http://www.sitio.com/prueba/?

Ataques a los servidoresAtaques a los servidores– Buffer OverflowBuffer Overflow– ……

Cross Site Scripting (XSS)Cross Site Scripting (XSS) PhishingPhishing ……

Page 50: Charla Web Services

Requerimientos de Requerimientos de SeguridadSeguridad AutenticaciónAutenticación AutorizaciónAutorización ConfidencialidadConfidencialidad IntegridadIntegridad No repudiaciónNo repudiación Alta DisponibilidadAlta Disponibilidad

Page 51: Charla Web Services

Desafíos de Seguridad Desafíos de Seguridad Servicios WebServicios Web Seguridad basada en el usuario Seguridad basada en el usuario

finalfinal Mantener la seguridad al pasar Mantener la seguridad al pasar

por múltiples Servicios (“nodos”)por múltiples Servicios (“nodos”) Abstracción de la seguridad del Abstracción de la seguridad del

transporte subyacentetransporte subyacente

Page 52: Charla Web Services

Seguridad a través de múltiples Seguridad a través de múltiples Servicios y múltiples Servicios y múltiples transportestransportes

Physical

Data Link

Network

Transport

Session

Presentation

Application

Physical

Data Link

Network

Transport

Session

Presentation

Application

Usuario Sitio Web Servicio Web

HTTP JMS

Abstracción de Seguridad del transporte subyacenteAbstracción de Seguridad del transporte subyacente Seguridad PersistenteSeguridad Persistente

Contexto de Seguridad 1

Contexto de Seguridad 2

Page 53: Charla Web Services

Seguridad para Seguridad para Servicios WebServicios Web Los servicios de seguridad Los servicios de seguridad

pueden ser provistos por:pueden ser provistos por:– Capa de TransporteCapa de Transporte– Capa de MensajeríaCapa de Mensajería– Combinaciones de AmbasCombinaciones de Ambas

Existencia de gran cantidad de Existencia de gran cantidad de especificaciones y alternativasespecificaciones y alternativas

Page 54: Charla Web Services

Interrelación Interrelación Tecnologías/Especificaciones de Tecnologías/Especificaciones de Seguridad Servicios WebSeguridad Servicios Web

TCP/IP

Capa de Transporte (HTTP, FTP, SMTP, MQ, etc.)

Seguridad Capa de Transporte (TLS/SSL)

XML Signature

XML Encryption

SOAP

WS Security

SAML XKMS Otras Alto Nivel

Infr

aest

ruct

ura

de R

ed

Fram

ew

ork

s X

ML

Fuente: “Securing Web Services With WS-Security. Demystifying WS-Security, WS-Policy, SAML, XML Signature, and XML Encryption”, Jothy Rosenberg and David Remy

Page 55: Charla Web Services

WS-SecurityWS-Security

Esfuerzo conjunto de IBM, Microsoft y VeriSignEsfuerzo conjunto de IBM, Microsoft y VeriSign– En Abril de 2002 publican “Security in a Web Services En Abril de 2002 publican “Security in a Web Services

World: A Proposed Architecture and Roadmap”World: A Proposed Architecture and Roadmap” Hoy mantenida por OASISHoy mantenida por OASIS Su objetivo es Proveer seguridad a SOAPSu objetivo es Proveer seguridad a SOAP Se enfoca en la correcta y efectiva aplicación Se enfoca en la correcta y efectiva aplicación

de tecnologías comode tecnologías como– XML SignatureXML Signature– XML EncryptionXML Encryption– SAMLSAML

Provee un contenedor para artefactos de Provee un contenedor para artefactos de seguridadseguridad

Page 56: Charla Web Services

El encabezado El encabezado WS-SecurityWS-Security Tokens de seguridadTokens de seguridad

– Cero, uno ó más tokens de seguridad Cero, uno ó más tokens de seguridad – Usualmente no más de unoUsualmente no más de uno

Elementos de contenido cifrado con XML Elementos de contenido cifrado con XML EncryptionEncryption– Cero, uno ó más de elementos XML EncryptionCero, uno ó más de elementos XML Encryption– Estos pueden serEstos pueden ser

<ReferenceList><ReferenceList> <EncryptedKey><EncryptedKey>

Elementos de contenido firmado digitalmente Elementos de contenido firmado digitalmente con XML Signaturecon XML Signature– Cero, uno ó más firmas XML SignatureCero, uno ó más firmas XML Signature– Usualmente, si se incluye una firma, esta firma como Usualmente, si se incluye una firma, esta firma como

mínimo alguna parte del cuerpo del mensaje.mínimo alguna parte del cuerpo del mensaje.

Page 57: Charla Web Services

Ejemplo Sobre SOAP Ejemplo Sobre SOAP WS-SecurityWS-Security

<S:Envelope><S:Header>

<wsse:Security><wsse:UsernameToken>

…</wsse:UsernameToken><ds:Signature>

…</ds:Signature>…<xenc:ReferenceList>

…<xenc:DataReference

URI=”#body”/>…

</xenc:ReferenceList></wsse:Security>

</S:Header><S:Body>

<xenc:EncryptedData Id=”body” Type=”content”>…

</xenc:EncryptedData></S:Body>

</S:Envelope>

Page 58: Charla Web Services

Algunos ejemplosAlgunos ejemplos

<wsse:Security>

<wsse:UsernameToken>

<wsse:Username>jselman</wsse:Username>

<wsse:Password>1234</wsse:Password>

</wsse:UsernameToken>

</wsse:Security>

<wsse:Security>

<wsse:UsernameToken>

<wsse:Username>jselman</wsse:Username>

<wsse:PasswordType=”wsse:PasswordDigest”>

D2A12DFE8D90FC6…

</wsse:PasswordType>

<wsse:Nonce>EFD89F06CCB28C89</wsse:Nonce>

<wsu:Created>2005-05-08T20:21:23Z</wsu:Created>

</wsse:UsernameToken>

</wsse:Security>

Page 59: Charla Web Services

5959

Opciones de Seguridad Opciones de Seguridad Capa de TransporteCapa de Transporte

Servicio de Seguridad

Tecnologías

Integridad SSL/TLS

Confidencialidad SSL/TLS

Autenticación Proveedor (Servidor)

SSL/TLS

Autenticación Consumidor (Cliente)

SSL/TLS con autenticación de cliente

HTTP Basic

HTTP Digest

HTTP Attributes

SSL/TLSHTTP Basic

HTTP Digest

Page 60: Charla Web Services

Opciones de Seguridad Opciones de Seguridad Capa de MensajeríaCapa de Mensajería

Servicio de Servicio de SeguridadSeguridad TecnologíasTecnologías

IntegridadIntegridad

XML SignatureXML Signature

S/MIMES/MIME

PKCS#7PKCS#7

ConfidencialidadConfidencialidad XML EncryptionXML Encryption

Autenticación del Autenticación del Emisor SOAP (Cliente)Emisor SOAP (Cliente)

XML EncryptionXML Encryption username & [password|username & [password|digest]digest]

username & [password|digest]username & [password|digest]

Certificado X.509Certificado X.509

Token de Token de SeguridadSeguridad

KerberosKerberos

SAMLSAML

RELREL

Etc.Etc.

Page 61: Charla Web Services

Comparación Comparación Seguridad Según CapaSeguridad Según Capa

Seguridad de TransporteSeguridad de Transporte Seguridad de MensajeríaSeguridad de Mensajería

Punto a PuntoPunto a Punto Destino a DestinoDestino a Destino

Madura, su implementación es Madura, su implementación es relativamente directarelativamente directa

Nueva, relativamente Nueva, relativamente compleja con muchas opciones compleja con muchas opciones de seguridadde seguridad

No granular, enfoque del todo No granular, enfoque del todo o nadao nada

Muy granular, puede aplicar Muy granular, puede aplicar selectivamente a trozos de selectivamente a trozos de mensajes y solamente a los mensajes y solamente a los requerimientos o respuestasrequerimientos o respuestas

Dependiente del TransporteDependiente del Transporte La misma estrategia puede La misma estrategia puede aplicarse a distintas aplicarse a distintas tecnologías de transportetecnologías de transporte

Page 62: Charla Web Services

Seguridad Capa de Seguridad Capa de MensajeríaMensajería Construida sobre modelos madurosConstruida sobre modelos maduros Gran cantidad de especificacionesGran cantidad de especificaciones

– XML Signature, XML Encryption, SAML, XML Signature, XML Encryption, SAML, XKMS, XACML, XKMS, XACML, ……

Mayor FortalezaMayor Fortaleza– FlexibilidadFlexibilidad

Mayor DebilidadMayor Debilidad– FlexibilidadFlexibilidad

Page 63: Charla Web Services

Composición de Composición de Servicios WebServicios Web

Page 64: Charla Web Services

ComposiciónComposición

Paradigma emergenteParadigma emergente Multiples intentos de estandarización Multiples intentos de estandarización

de lenguajes (WSFL, XLANG, BPML, de lenguajes (WSFL, XLANG, BPML, BPEL)BPEL)

Se pueden caracterizar en función de Se pueden caracterizar en función de patrones de diseñopatrones de diseño

Comparable a diseñar un workflowComparable a diseñar un workflow

Page 65: Charla Web Services

Historia de los Historia de los estándares de estándares de Procesos de NegocioProcesos de Negocio

2000/05

XLang(Microsoft)

2001/03

BPML(Intallio)

2001/05

WSFL(IBM)

2001/06

BPSS(ebXML)

2002/03

BPEL4WS 1.0 (IBM, Microsoft)

BPEL4WS 1.1(OASIS)

2002/06 2003/01

WS-Choreography(W3C)

2003/04

WSCI(Sun et al)

WSCL(HP)

2002/08

Page 66: Charla Web Services

Servicios Web como Servicios Web como procesos de negocioprocesos de negocio

Servicio Web 1

Servicio Web 2

Servicio Web 3

Servicio Web 4

Servicio Web 5

Servicio Web n

Page 67: Charla Web Services

Problema TipoProblema Tipo

ClienteServicio de

Compra

Servicio Crédito

Servicio de Inventario

Orden deCompra

Check

Crédito

ReservarInventario

Respuesta

Crédito

RespuestaInventario

Factura

Consolidación de Resultados

Page 68: Charla Web Services

Desafío de los Desafío de los Procesos de NegocioProcesos de Negocio Comunicación Comunicación

asincrónica asincrónica coordinada entre los coordinada entre los servicios servicios

Intercambios de Intercambios de mensaje mensaje correlacionados entre correlacionados entre los participanteslos participantes

Implementar el Implementar el procesamiento procesamiento paralelo de paralelo de actividadesactividades

Manipular y Manipular y transformar data transformar data entre participantes entre participantes de la interacciónde la interacción

Soporte para las Soporte para las transacciones y las transacciones y las actividades actividades duraderas de duraderas de negocio negocio

Proporcionar manejo Proporcionar manejo de excepciones de excepciones consistenteconsistente

Page 69: Charla Web Services

Orquestación vs Orquestación vs CoreografíaCoreografía OrquestaciónOrquestación

– Es un proceso de negocio ejecutable que Es un proceso de negocio ejecutable que describe un flujo desde la perspectiva y describe un flujo desde la perspectiva y control de un sólo punto de emisión control de un sólo punto de emisión (endpoint) (comúnmente: Workflow)(endpoint) (comúnmente: Workflow)

CoreografíaCoreografía– Son los visibles y públicos intercambios de Son los visibles y públicos intercambios de

mensajes, reglas de interacción y mensajes, reglas de interacción y acuerdos entre dos o más puntos de acuerdos entre dos o más puntos de emisión de procesos de negocioemisión de procesos de negocio

Page 70: Charla Web Services

Ejemplo: Orden de Ejemplo: Orden de compracompra

Orden de Compra

Requerimiento de Orden de Compra

Ack de recepción

Respuesta a la orden de compra

Negocio

“A”Negocio

“B”

Page 71: Charla Web Services

Visto como Visto como CoreografíaCoreografía

OC Request

Envío OC

Recepción OC Ack

Recepción respuesta OC

Recepción OC

Envío OC Ack

Envío respuesta OC

OC Acknowledgement

OC Response

CoreografíaCoreografía – Las públicas y visibles interacciones de intercambiode mensajes

Proceso Público

Negocio A Negocio B

Page 72: Charla Web Services

Visto como Visto como OrquestaciónOrquestación

Envío OC

Recepción OC Ack

Recepción respuesta

OC

Transformación

Transformación

Desde ERP

Hacia ERP

OC Request

OC Acknowledgement

OC Response

OrquestaciónOrquestación – Es un proceso de negocio privado ejecutable

Proceso Privado

Business BPEL Workflow

Page 73: Charla Web Services

Orquestación y Orquestación y Coreografía juntosCoreografía juntos

NegocioB

Business Analyst Tool

NegocioA

EnvíoOC

Recepción OC Ack

Recepción respuesta

OC

Transform

Transform

Negocio A BPEL Workflow

OC Request

OC Acknowledgement

OC Response

GeneraciónPlantilla BPEL

GeneraciónPlantilla BPEL

Recepción OC

Envío OC Ack

envíoRecepción

Respuesta OC

Transform

Transform

Negocio B BPEL Workflow

Dos Workflow BPEL que muestran acuerdo entre negocios

Page 74: Charla Web Services

BPELBPEL

• Business Process Execution LanguageBusiness Process Execution Language

• Version 1.0 liberada por IBM, Microsoft y BEA Version 1.0 liberada por IBM, Microsoft y BEA agosto 2002agosto 2002

• Version 1.1 subida a OASIS Abril 2003Version 1.1 subida a OASIS Abril 2003

• Lenguaje XML para describir procesos de Lenguaje XML para describir procesos de como Servicios Webcomo Servicios Web• Convergencia de XLANG (Microsoft) y WSFL (IBM)Convergencia de XLANG (Microsoft) y WSFL (IBM)

• Consenso corporativoConsenso corporativo• IBM, Microsoft, Oracle, Sun, BEA, SAP, Siebel …IBM, Microsoft, Oracle, Sun, BEA, SAP, Siebel …

Page 75: Charla Web Services

Proposición de BPELProposición de BPEL

Procesos de negocio portablesProcesos de negocio portables– Construido sobre la infraestructura Construido sobre la infraestructura

interoperable de los Servicios Web interoperable de los Servicios Web Gran lenguaje empresarial para procesos Gran lenguaje empresarial para procesos

de negociode negocio– Set de habilidades y lenguaje común para Set de habilidades y lenguaje común para

desarrolladoresdesarrolladores Selección del motor de procesosSelección del motor de procesos

– El estándar lleva a la competenciaEl estándar lleva a la competencia

Page 76: Charla Web Services

Estándares que Estándares que construyen BPELconstruyen BPEL

Description

HTTP,IIOP, JMS, SMTP Transport

XMLMessage

SOAP

WSDL

UDDI Discovery

Transactions

CoordinationWS-SecurityWS-ReliabilityQuality ofService

Orchestration - BPEL4WS

BusinessProcesses

Context

Description

Man

agem

ent

Choreography - CDL4WS

Page 77: Charla Web Services

Actividades BPELActividades BPEL

ActividadesActividades <invoke><invoke> <receive><receive> <assign><assign> <reply><reply> <throw><throw> <terminate><terminate> <wait><wait>

ActividadesActividades

EstruturadasEstruturadas <sequence><sequence> <switch><switch> <pick><pick> <flow><flow> <link><link> <while><while> <scope><scope>

Page 78: Charla Web Services

Partners/sociosPartners/socios

Aquí se declaran los Servicios Web y Aquí se declaran los Servicios Web y los roles utilizados por el procesolos roles utilizados por el proceso

Ligado al WSDL del proceso en sí y a Ligado al WSDL del proceso en sí y a los Servicios Web participantes los Servicios Web participantes mediante tipos de enlaces de mediante tipos de enlaces de servicioservicio

ServicioCrédito

Partner 2

ServicioInventario

Partner 3Partner 1(el proceso)

ServicioCompra

Page 79: Charla Web Services

VariablesVariables

Mensaje enviados y recibidos por Mensaje enviados y recibidos por partnerspartners– Persisten en largas interaccionesPersisten en largas interacciones– Definidas en los tipos y mensajes WSDLDefinidas en los tipos y mensajes WSDL

CustomerService

Process

<A>

<variable> <activity>

<B>

<activity>

PersistPersist/Retrieve

CustomerService

Persist/Retrieve

Persist/Retrieve

<variable>

Page 80: Charla Web Services

Ejemplo documento BPELEjemplo documento BPEL

Page 81: Charla Web Services

En ResumenEn Resumen

PartnerWSDL 1

WSDL delProceso

PartnerWSDL n

. . .

Escenario BPEL

<process> <partners> <variables> <sequence> <flow> </sequence></process>

1. Compilar2. Empaquetar3. Desplegar

Servidor deAplicaciones

ejecución BPEL

BPEL Compilado

Page 82: Charla Web Services
Page 83: Charla Web Services

BPEL4PeopleBPEL4People

BPEL se centra en coordinación de actividades BPEL se centra en coordinación de actividades entre sistemasentre sistemas

BPEL4People extiende el concepto permitiendo la BPEL4People extiende el concepto permitiendo la integración de personas en los procesos de integración de personas en los procesos de negocionegocio Casos de excepciónCasos de excepción EscalamientosEscalamientos ……

Mantenida por OASIS, Miembros: Adobe, IBM, SAP, Mantenida por OASIS, Miembros: Adobe, IBM, SAP, Oracle, RedHat y otrosOracle, RedHat y otros……

Más información: Más información: http://www.oasis-open.org/committees/tc_home.phhttp://www.oasis-open.org/committees/tc_home.php?wg_abbrev=bpel4peoplep?wg_abbrev=bpel4people

Page 84: Charla Web Services

¿Donde Vamos?¿Donde Vamos?

La integración requiere de La integración requiere de descripciones descripciones interoperables interoperables entendibles por máquinasentendibles por máquinas

La extensión de los La extensión de los lenguajes provee soporte lenguajes provee soporte para diferentes niveles de para diferentes niveles de integración entre integración entre aplicacionesaplicaciones

Servicios Web = SOAP + Servicios Web = SOAP + WSDL + UDDI + WSDL + UDDI + ……

InterfazInterfaz

Calidad de Servicio

Calidad de Servicio

ServicioServicio

Flujo PúblicoFlujo Público

Flujo/Composición

Flujo/Composición

AcuerdosAcuerdos

WS

DL

BP

EL

XML SchemaXML Schema

Ad

min

istra

ció

nA

dm

inis

tració

n

Seg

urid

ad

Seg

urid

ad

Page 85: Charla Web Services

WS-I Web Services WS-I Web Services InteroperabilityInteroperability

http://www.ws-i.org/

Page 86: Charla Web Services

Es un esfuerzo abierto de la industria dedicado a promover la interoperabilidad de Servicios Web entre plataformas, aplicaciones y lenguajes de programación

Es un integrador de estándares para ayudar a los Servicios Web a avanzar de una manera coherente y estructurada

Aproximadamente 130 miembros

70% vendedores soluciones, 30% end-user (servicios)

Fuerte presencia non-U.S.

What is WS-I?WS-I Web Services WS-I Web Services InteroperabilityInteroperability

Page 87: Charla Web Services

WS-I, Standards, and IndustryWS-I Web Services WS-I Web Services InteroperabilityInteroperability

Page 88: Charla Web Services

• Permitir interoperabilidad de Servicios WebIntegrando EspecificacionesPromoviendo implementaciones consistentesPermitiendo una visible representación de conformidad

Acelerar el despliegue de Servicios WebOfrecer guías de implementación y buenas prácticas Entregar herramientas y aplicaciones de ejemploProveer de un foro de implementadores donde los desarrolladores puede colaborar

• Incentivar la adopción de Servicios WebConstruir consenso en la industria para reducir los riesgos de adopción temprana

Provee de un foro para que los end-users comuniquen requerimientos

Aumentar el conocimiento de los requerimientos de negocio

WS-I GoalsWS-I Web Services WS-I Web Services Interoperability: ¿Objetivo?Interoperability: ¿Objetivo?

Page 89: Charla Web Services

Para end-usersReducir el costo, complejidad, y riesgo de adoptar Servicios Web Acelera la interoperabilidad entre productos and solucionesAyuda a asegurar que los requerimientos de negocio se cumplan

Para vendedoresSatisfacer las demandas de los clientes de interoperabilidad cross-vendor

Acelerar el time-to-market de desarrollo de nuevos productosLes permite influenciar la industria

Para los desarrolladoresAumenta la productividad vía especificaciones, herramientas y buenas prácticas

Establece un framework para aumentar la eficiencia de otros desarrolladores

Les permite influenciar la industria

WS-I Value PropositionWS-I Web Services WS-I Web Services Interoperability: ¿Objetivos?Interoperability: ¿Objetivos?

Page 90: Charla Web Services

PerfilesSet de especificaciones o estandarizción de estandares en una versión específica

Guías y convenciones para usar estas especificaciones en formas que aseguren la interoperabilidad

Aplicaciones de ejemploCasos de uso y escenarios basados en requerimientos de clientes

Código de ejemplo y aplicaciones construidas en múltiples ambientes

Para demostrar la interoperabilidad basada en perfiles Herramientas de Test y documentación

Herramientas que prueban las implementaciones de los perfiles para ver el nivel de conformidad

Documentación, white papers

DeliverablesWS-I Web Services WS-I Web Services Interoperability: ¿Entregables?Interoperability: ¿Entregables?

Page 91: Charla Web Services

Basic Profile Working GroupNúcleo de especificaciones. Corazón SW

Basic Security Profile Working GroupSOAP messaging security, transporte y otras consideraciones de seguridad

XML Schema Work Plan Working GroupPlanificar soluciones apropiadas para solucionar problemas de interoperabilidad de XML Schema

WS-I Web Services WS-I Web Services Interoperability: Interoperability: Detrás de Detrás de cámaras…cámaras…

Page 92: Charla Web Services

Sample Applications Working GroupIlustrar buenas prácticas para implementar en múltiples plataformas

Testing Tools Working GroupConstruye herramientas de pruebas auto administradas para cumplir con la conformidad con perfiles WS-I

Requirements Gathering Working GroupCaptura requerimientos de negocio para conducir las futuras direcciones de los perfiles

Current Working GroupsWS-I Web Services WS-I Web Services Interoperability: Interoperability: Detrás de Detrás de cámaras…cámaras…

Page 93: Charla Web Services

Basic ProfileBasic Profile 1.0 and 1.1

— Más de 200 problemas de interoperabilidad resueltos; convenciones alrededor de la mensajería, descripción y descubrimiento

Simple SOAP Binding Profile 1.0

— Derivado del Basic Profile. Requerimientos relacionados con la serialización de un “envelope” y su representación en el mensaje

Sample Applications and Testing Tools for the Basic Profile

• Attachments Profile 1.0Complementa el Basic Profile 1.1 para agregar soporte para el transporte interoperable de datos atachados

SOAP with Attachments (SwA)

Delivered to DateWS-I Web Services WS-I Web Services Interoperability: PerfilesInteroperability: Perfiles

Page 94: Charla Web Services

Basic Security ProfileSecurity Scenarios (Working Group Draft)

— Documentar riesgos de seguridad en Servicios Web interoperables, junto con las correspondientes medidas de mitigación

Basic Security Profile 1.0 (Working Group Draft)

— Se dirige a la seguridad en el transporte y otras consideraciones de seguridad para los perfiles WS-I

— Perfila las especificaciones de OASIS

Delivered to DateWS-I Web Services WS-I Web Services Interoperability: PerfilesInteroperability: Perfiles

Page 95: Charla Web Services

WS-I’s Work to Date

Composition/OrchestrationBusiness Process

Orchestration

PortalsManagement

XML, SOAP

XML Schema, WSDL, UDDI, SOAP with Attachments

HTTP, HTTPS, Others

Invocation

Description

Transports

Composable Service

ElementsTransactionalityWS-Security

Reliable Messaging

Endpoint Identification, Publish/SubscribeMessaging

AdditionalCapabilities

WS-I Web Service WS-I Web Service InteroperabilityInteroperability

Page 96: Charla Web Services

Resumen

Reduce el costo, complejidad y riesgo

Provee confianza en la interoperabilidad

Guías de implementación comunes

Aumenta la productividad y acelera el time to market

Facilita la colaboración, interna y con socios

Permite a las compañías enfocarse en el valor agregado no en la “plomería”

Simplifica las decisiones de compra

El logo WS-I identifica conformidad.

Business Value of WS-I Conformance

WS-I Web Service WS-I Web Service InteroperabilityInteroperability

Page 97: Charla Web Services

RecapitulandoRecapitulando……

Ventajas Web ServicesVentajas Web Services– Desarrolladores no se preocupan mas por la Desarrolladores no se preocupan mas por la

infraestructurainfraestructura– Reducción de costos en el ciclo de desarrollo Reducción de costos en el ciclo de desarrollo

de software por la alta reutilización de de software por la alta reutilización de componentescomponentes

– Proveedores de ServiciosProveedores de Servicios– Acceso personalizado en diversos medios y Acceso personalizado en diversos medios y

dispositivosdispositivos– InteroperabilidadInteroperabilidad– MultiplataformaMultiplataforma

Page 98: Charla Web Services

RecapitulandoRecapitulando……

PosibilidadesPosibilidades Actualmente Servicios WebActualmente Servicios Web

– Necesitan de una codificación estática de su Necesitan de una codificación estática de su construcción, invocación y conexiones mutuasconstrucción, invocación y conexiones mutuas

– Nula reacción a cambios: proveedor, Nula reacción a cambios: proveedor, interrupción, modificación de la interfazinterrupción, modificación de la interfaz

– Mantenimiento es costosoMantenimiento es costoso– No permite optimizar, buscar el servicio que No permite optimizar, buscar el servicio que

más se acomode a mi realidad y de menor más se acomode a mi realidad y de menor costocosto

Page 99: Charla Web Services

Manos a la obraManos a la obra……

Page 100: Charla Web Services

Aplicaciones/Aplicaciones/FrameworksFrameworks Practicamente todas las plataformas tienen soporte Practicamente todas las plataformas tienen soporte

para Web Servicespara Web Services JavaJava

- Axis - Axis2Axis - Axis2- JAX-RPC, JAX-WS (J2EE y JEE)JAX-RPC, JAX-WS (J2EE y JEE)- MetroMetro

.NET.NET SAP (mySAP)SAP (mySAP) OracleOracle ……

Page 101: Charla Web Services

Java EE: Un servicio en 2 Java EE: Un servicio en 2 minutosminutos

Java EE 5Java EE 5 NetBeans 6.1NetBeans 6.1 GlassFish v2GlassFish v2

Page 102: Charla Web Services

WS con NetBeansWS con NetBeans

Page 103: Charla Web Services

Vista de DiseñoVista de Diseño

Page 104: Charla Web Services

Probando nuestro Probando nuestro ServicioServicio

Page 105: Charla Web Services

Recomendaciones y Recomendaciones y Buenas PrácticasBuenas Prácticas

Page 106: Charla Web Services

Exponer sólo lo Exponer sólo lo necesarionecesario Cambios en los serviciosCambios en los servicios

– Si cambia la implementación no hay Si cambia la implementación no hay problema, peroproblema, pero

– Si cambia la interfaz…Si cambia la interfaz… No siempre conocemos a todos los No siempre conocemos a todos los

consumidores de un servicioconsumidores de un servicio Efecto RippleEfecto Ripple

Page 107: Charla Web Services

Recomendaciones y Recomendaciones y Buenas PrácticasBuenas Prácticas Las Buenas Prácticas relacionadas a XML también Las Buenas Prácticas relacionadas a XML también

son aplicables a Web Servicesson aplicables a Web Services Partir de a pocoPartir de a poco

– Proyectos pequeñosProyectos pequeños– Silver Bullet / Golden HammerSilver Bullet / Golden Hammer

Usar estándares madurosUsar estándares maduros– PortabilidadPortabilidad– Evitar extensiones propietarias y versiones no Evitar extensiones propietarias y versiones no

finalesfinales Seguir las recomendaciones de interoperabilidad Seguir las recomendaciones de interoperabilidad

(WS-I)(WS-I)

Page 108: Charla Web Services

Definir interfaces Definir interfaces establesestables Los mismos principios de diseño de software y Los mismos principios de diseño de software y

arquitectura son aplicables a Servicios Webarquitectura son aplicables a Servicios Web La calidad de las interfaces es claveLa calidad de las interfaces es clave

– Completas y autocontenidas…Completas y autocontenidas… Nombres descriptivosNombres descriptivos

– Debiera ser fácil interpretar lo que hace un Debiera ser fácil interpretar lo que hace un servicio y los parámetros que recibeservicio y los parámetros que recibe

– Ej: Ej: consulta(int param1, String param2)consulta(int param1, String param2)– Convenciones de nombresConvenciones de nombres

Los beneficios no se perciben hasta avanzada la Los beneficios no se perciben hasta avanzada la construcción de un sistemaconstrucción de un sistema

Top-Down Top-Down Partir por la interfaz Partir por la interfaz

Page 109: Charla Web Services

Separación de Separación de ResponsabilidadesResponsabilidades

Principio “Separation of Concerns”Principio “Separation of Concerns”– http://en.wikipedia.org/wiki/Separation_of_concernshttp://en.wikipedia.org/wiki/Separation_of_concerns

public boolean esFeriadoLegal(Date date) throws UnauthorizedException {

ExecutionContext ec = getCurrentExecutionContext();

SOAPDocument request = ec.getCurrentMessage();

String username = getUsernameFromSoapMessage(request);

String password = getPasswordFromSoapMessage(request);

if ( !canUseService(username, password) ) {

throw new UnauthorizedException(“Access Denied for given credentials”);

}

boolean isFeriado = AccesorBaseDeDatos.getFeriado(date);

return isFeriado;

}

Código Servicio

Page 110: Charla Web Services

Conocer las Conocer las Limitaciones Limitaciones Considerar la carga adicional que Considerar la carga adicional que

recibirá un servidor al ser recibirá un servidor al ser expuesto como Servicio Webexpuesto como Servicio Web

Page 111: Charla Web Services

Identificar, Clasificar y Identificar, Clasificar y CatalogarCatalogar Identificar y Clasificar ServiciosIdentificar y Clasificar Servicios

– Verticales: FuncionalidadVerticales: Funcionalidad– Horizontales: Transversales a nuestras Horizontales: Transversales a nuestras

arquitecturasarquitecturas Mantener un directorio de ServiciosMantener un directorio de Servicios

– UbicaciónUbicación– CaracterísticasCaracterísticas– ResponsableResponsable– ¿Clientes?¿Clientes?

VersionamientoVersionamiento GobernanciaGobernancia

Page 112: Charla Web Services

La importancia de un La importancia de un RepositorioRepositorio Mantener un directorio debe ser una actividad Mantener un directorio debe ser una actividad

obligatoriaobligatoria Fomenta la correcta catalogaciónFomenta la correcta catalogación Fomenta el descubrimiento y reutilizaciónFomenta el descubrimiento y reutilización No nos olvidemos de que siempre que distribuimos No nos olvidemos de que siempre que distribuimos

una aplicación introducimos:una aplicación introducimos:– Potencialmente más puntos de fallaPotencialmente más puntos de falla– La no disponibilidad de un servicio puede afectar La no disponibilidad de un servicio puede afectar

a la disponibilidad de nuestros sistemasa la disponibilidad de nuestros sistemas Facilita la administración y monitoreoFacilita la administración y monitoreo Acciones ProActivasAcciones ProActivas

Page 113: Charla Web Services

Cuando evitar Web Cuando evitar Web ServicesServices Pueden no resultar siempre la mejor alternativaPueden no resultar siempre la mejor alternativa Sólo utilizar cuando aporte algún valorSólo utilizar cuando aporte algún valor ¡No todo es un Servicio!¡No todo es un Servicio!

– ¿Validación de RUT?¿Validación de RUT? Considerar Considerar

– Efectos de codificación y decodificación XMLEfectos de codificación y decodificación XML Existen aceleradores de HardwareExisten aceleradores de Hardware

– Efectos de Overhead de Llamadas RemotasEfectos de Overhead de Llamadas Remotas– Efectos de Participación con el resto de la infraestructraEfectos de Participación con el resto de la infraestructra

TransaccionesTransacciones AdministraciónAdministración ……..

Page 114: Charla Web Services

Aplicaciones y Aplicaciones y ExtensionesExtensiones

Page 115: Charla Web Services

Ontología OWL-SOntología OWL-S

Semantic Mark Up For Web ServicesSemantic Mark Up For Web Services

OntologíaOntología– TérminosTérminos– Relaciones entre ellosRelaciones entre ellos– Describir un dominio de aplicación concreto sin Describir un dominio de aplicación concreto sin

ambigüedadesambigüedades ArquitecturaArquitectura

– Perfil (Profile)Perfil (Profile) ¿¿QuéQué hace el servicio? hace el servicio?

– Modelo (Model)Modelo (Model) ¿¿Cómo usar el servicioCómo usar el servicio??

– Implementación (Grounding)Implementación (Grounding) ¿¿Cómo acceder al servicioCómo acceder al servicio??

Page 116: Charla Web Services

OWL-S: ProfileOWL-S: Profile

PERFIL: PERFIL: ¿Qué hace el servicio?¿Qué hace el servicio?– ConceptualmenteConceptualmente

Lo que se lograLo que se logra LimitacionesLimitaciones CalidadCalidad RequerimientosRequerimientos

– En concretoEn concreto Datos proveedorDatos proveedor CategoríaCategoría ParámetrosParámetros Entrada y SalidaEntrada y Salida TiposTipos

Page 117: Charla Web Services

OWL-S: ModelOWL-S: Model

MODELO: ¿Cómo usar el servicio?MODELO: ¿Cómo usar el servicio?– Detalla contenido semántico de los Detalla contenido semántico de los

requerimientosrequerimientos– Cómo preguntar y para el servicio que ocurre Cómo preguntar y para el servicio que ocurre

luego de su invocaciónluego de su invocación

– Esta descripción puede ser utilizada por Esta descripción puede ser utilizada por agentesagentes

– Especificación de operacionesEspecificación de operaciones Simples o compuestasSimples o compuestas

Page 118: Charla Web Services

OWL-S: GroundingOWL-S: Grounding

IMPLEMENTACION: ¿Cómo acceder al IMPLEMENTACION: ¿Cómo acceder al servicio?servicio?– ProtocoloProtocolo– MensajesMensajes– PuertosPuertos– ……

Enlace a descripción funcionalEnlace a descripción funcional– WSDLWSDL

Page 119: Charla Web Services

OWL-S: Relación WSDLOWL-S: Relación WSDL

Más información: http://www.w3.org/Submission/2004/SUBM-OWL-S-20041122/

Page 120: Charla Web Services

Discusión OWL-SDiscusión OWL-S

¿Aplicable hoy?¿Aplicable hoy?

Page 121: Charla Web Services

Introducción a GridIntroducción a GridServicesServices

Page 122: Charla Web Services

Grid ServicesGrid Services

Open Grid Services Architecture (OGSA)

La tecnología grid se ha vuelto muy popular

En 2003 fue declarada por el MIT como una de las 10 tecnologías emergentes que cambiarán el mundo.

La palabra ”grid” empieza a aparecer por todos lados, todo el mundo habla de ello

Page 123: Charla Web Services

Grid ServicesGrid Services

¿Qué es el Grid?– “Mientras que la Web es un servicio para compartir

información a través de Internet, el Grid es un servicio para compartir potencia de cálculo y capacidad de almacenamiento a través de la red”

Esta forma de compartir se realiza abstrayendo/virtualizando los recursos que participan en una infraestructura grid, de manera que para el usuario final actúan como un único y potente “computador”

Los teóricos del grid computing entienden que el objetivo final de la tecnología grid es crear una infraestructura cuyo ámbito sea todo Internet

Integrando todos los heterogéneos recursos computacionales que existen alrededor del mundo

Page 124: Charla Web Services

Grid ServicesGrid Services

Aclaraciones– El Grid NO es una mejora/ampliación de

Internet (no están al mismo nivel)– El Grid NO es un proyecto (es una

tecnología)– El Grid NO es un cluster de ordenadores

(en un grid puede haber integrados muchos o ningún cluster)

El Grid toma el nombre de su analogía con la red eléctrica (inglés ”power grid”):

Page 125: Charla Web Services

Grid Services: Grid Services: Grid MiddlewareGrid Middleware El Grid es posible gracias al ”grid

middleware”– El software que permite la integración de todos los

distintos tipos de recursos que participan en él. ¿software especial? ¿middleware?

– Definición de middleware (Wikipedia): ”En un entorno de computación distribuida, el middleware se define como la capa de software que se encuentra entre el sistema operativo y las aplicaciones en cada host/máquina que participa en el sistema”

Globus Toolkit– http://www.globus.org/toolkit/

Page 126: Charla Web Services

Grid Services Grid Services (Middleware)(Middleware) Finalidad: virtualización de los recursos de

computación Funcionalidad:

– Asignación eficiente de recursos– Ejecución de trabajos y posterior transferencia de

resultados– Almacenamiento, registro y posterior localización y

acceso a datos– Proveer mecanismos de seguridad: autenticación,

autorización...– Monitorización

El grid middleware se construye mediante servicios grid (”grid services”), que a su vez están basados en la tecnología de Servicios Web

Page 127: Charla Web Services

Infraestructura Grid: Vista Infraestructura Grid: Vista ConceptualConceptual

Más Información: http://www.globus.org/ogsa/

Page 128: Charla Web Services

Portales y WSRPPortales y WSRP

http://www.ibm.com/developerworks/webservices/library/ws-wsrp/

Page 129: Charla Web Services

Otra Dimensión de Servicios Web: Otra Dimensión de Servicios Web: Portales y WSRPPortales y WSRP

Mantenida por OASISMantenida por OASIS Web Services for Remote PortletsWeb Services for Remote Portlets

Información + PresentaciónInformación + Presentación Look & Feel provisto por el portalLook & Feel provisto por el portal Mejor reutilización aplicaciones WebMejor reutilización aplicaciones Web

Page 130: Charla Web Services

WSRP: Productores y WSRP: Productores y ConsumidoresConsumidores

Page 131: Charla Web Services

Portal con WSRPPortal con WSRP

Page 132: Charla Web Services

Rich Internet Rich Internet Applications: Applications:

Ajax, REST y másAjax, REST y más……

Page 133: Charla Web Services

Rich Internet ApplicationsRich Internet Applications

Interfaces de Usuario “Ricas”Interfaces de Usuario “Ricas” Pilar Fundamental de la Web 2.0Pilar Fundamental de la Web 2.0 Mejorando la experiencia en aplicaciones Web Mejorando la experiencia en aplicaciones Web

acercándolas al Desktopacercándolas al Desktop– Drag & DropDrag & Drop– AutocompletaciónAutocompletación– Expasión (Arboles, etc.)Expasión (Arboles, etc.)– ……

Cambio de ParadigmaCambio de Paradigma– Evolución de un modelo SíncronoEvolución de un modelo Síncrono– A un modelo asíncronoA un modelo asíncrono

Page 134: Charla Web Services

Aplicaciones RIAAplicaciones RIA

Page 135: Charla Web Services

Modelo SíncronoModelo Síncrono

Actividad de Usuario Actividad de Usuario Actividad de Usuario

Procesamiento en Servidor

Procesamiento en Servidor

Page 136: Charla Web Services

Modelo AsíncronoModelo Asíncrono

Browser

Motor AJAX

InputUsuario 1

InputUsuario 2

RenderRespuesta 1

RenderRespuesta 2

Procesamiento en Servidor

Procesamiento en Servidor

Page 137: Charla Web Services

AJAXAJAX

Plataforma para RIAPlataforma para RIA AAsynchronous synchronous JJavascript avascript AAnd nd

XXMLML XMLHttpRequest, XMLHttpRequest, MSXMLMSXML

– Registro de CallbacksRegistro de Callbacks– Uso de Uso de

DOMDOM DHTMLDHTML

Y muchos más…

Page 138: Charla Web Services

RESTREST

REREpresentational presentational SState tate TTransferransfer Alternativa a SOAPAlternativa a SOAP

– Recursos Tienen URIsRecursos Tienen URIs http://www.boeing.com/aircrafts/767 http://www.travelsite.com/Chile/Santiago/Hotels/Marriott

Clientes interactúan vía verbos HTTPClientes interactúan vía verbos HTTP– GET: Para leerGET: Para leer– PUT: Para reemplazarPUT: Para reemplazar– DELETE: Para eliminarDELETE: Para eliminar– POST: Para accionesPOST: Para acciones

Page 139: Charla Web Services

JSONJSON

JJavaavaSScript cript OObject bject NNotationotation

Page 140: Charla Web Services

Otras Plataformas RIAOtras Plataformas RIA

www.javafx.comsilverlight.net

www.adobe.com/es/products/flex/www.adobe.com/es/products/air/

Y muchas más…

Page 141: Charla Web Services

PreguntasPreguntas

Page 142: Charla Web Services

BibliografíaBibliografía

““Web and Grid Services. Architectures and Technologies”, Savas Web and Grid Services. Architectures and Technologies”, Savas Parastatidis, North-East Regional E-Science CentreParastatidis, North-East Regional E-Science Centre

““Describing Web Services using OWL-S and WSDL”, Describing Web Services using OWL-S and WSDL”, http://www.daml.org/services/owl-s/1.1/owl-s-wsdl.htmlhttp://www.daml.org/services/owl-s/1.1/owl-s-wsdl.html

““Arquitectura de Servicios Web y Frameworks de Desarrollo”, Arquitectura de Servicios Web y Frameworks de Desarrollo”, Rodrigo Frez, Universidad de ChileRodrigo Frez, Universidad de Chile

““Modularización de los aspectos de seguridad en Servicios Web”, Modularización de los aspectos de seguridad en Servicios Web”, José Miguel Selman G., Universidad de ChileJosé Miguel Selman G., Universidad de Chile

““Servicios Web y Frameworks de Desarrollo”, José Miguel Selman G., Servicios Web y Frameworks de Desarrollo”, José Miguel Selman G., Universidad de ChileUniversidad de Chile

Page 143: Charla Web Services

XML SignatureXML Signature

Esfuerzo conjunto IETF/W3CEsfuerzo conjunto IETF/W3C Su objetivo es firmar digitalmente:Su objetivo es firmar digitalmente:

– Documentos XMLDocumentos XML– Partes de Documentos XMLPartes de Documentos XML– Objetos ExternosObjetos Externos

Utiliza tecnologías maduras de encriptación asimétrica Utiliza tecnologías maduras de encriptación asimétrica y generación de y generación de hasheshashes– SHA1SHA1– RSARSA– ……

Requiere de una infraestructura de llaves públicas Requiere de una infraestructura de llaves públicas para proveer:para proveer:– IdentidadIdentidad– No repudiaciónNo repudiación

Page 144: Charla Web Services

Tipos de Firmas XML Tipos de Firmas XML SignatureSignature

<Signature> <Reference>

<ElementoFirmado>

Enveloping

<ElementoEnvolvente>

<Signature> <Reference>

Enveloped

<DocumentoXML>

<Signature> <Reference>

Detached

<ElementoDestino>

Page 145: Charla Web Services

CanonicalizaciónCanonicalización

<OrdenDeCompra>

<Productos>

<CodProducto>

SKU10023

</CodProducto>

</Productos>

</OrdenDeCompra>

<OrdenDeCompra><Productos><CodProducto>SKU10023</CodProducto></Productos></OrdenDeCompra>

• c14n• Consenso común• XSLT

Page 146: Charla Web Services

Estructura XML Estructura XML SignatureSignature

<Signature ID?>

<SignedInfo>

<CanonicalizationMethod/>

<SignatureMethod/>

(<Reference>

(<Transforms>)?

<DigestMethod>

<DigestValue>

</Reference>)+

</SignedInfo>

<SignatureValue>

(<KeyInfo>)?

(<Object ID?>)*

</Signature>

Page 147: Charla Web Services

XML Signature: XML Signature: EnvelopedEnveloped

<OrdenDeCompra id=”ODC200504251002”>

<SKU>12345678</SKU>

<Cantidad>17</Cantidad>

<Signature xmlns=”http://www.w3.org/2000/09/xmldsig#”>

<SignedInfo>

<Reference URI=”#ODC200504251002”/>

</SignedInfo>

<SignatureValue>…</SignatureValue>

<KeyInfo>…</KeyInfo>

</Signature>

</OrdenDeCompra>

Page 148: Charla Web Services

XML Signature: XML Signature: EnvelopingEnveloping

<Signature xmlns=”http://www.w3.org/2000/09/xmldsig#”>

<SignedInfo>

<Reference URI=”#10022334”/>

</SignedInfo>

<SignatureValue>…</SignatureValue>

<KeyInfo>…</KeyInfo>

<Object>

<SignedItem id=”10022334”>Información a ser Firmada</SignedItem>

</Object>

</Signature>

Page 149: Charla Web Services

XML Signature: XML Signature: DetachedDetached

<Signature xmlns=”http://www.w3.org/2000/09/xmldsig#”>

<SignedInfo>

<Reference URI=”http://www.jselman.com/imagen.jpg”/>

</SignedInfo>

<SignatureValue>…</SignatureValue>

<KeyInfo>…</KeyInfo>

</Signature>

Page 150: Charla Web Services

Recomendaciones Recomendaciones Seguridad XML Seguridad XML SignatureSignature Solamente lo firmado es seguroSolamente lo firmado es seguro

– Especial cuidado con desechos ocurridos por Especial cuidado con desechos ocurridos por transformacionestransformaciones

Solamente lo que se ve puede ser firmadoSolamente lo que se ve puede ser firmado– Por ejemplo si un contrato fue presentado a un Por ejemplo si un contrato fue presentado a un

usuario mediante el uso de XML y una plantilla usuario mediante el uso de XML y una plantilla XSLT, ambos deben ser firmados (WYSIWYS)XSLT, ambos deben ser firmados (WYSIWYS)

Ver lo que es firmadoVer lo que es firmado– Especial cuidado con referencias a objetos que Especial cuidado con referencias a objetos que

“deberían” contener cierto elemento.“deberían” contener cierto elemento.

Page 151: Charla Web Services

Ejemplo XML SignatureEjemplo XML Signature

Page 152: Charla Web Services

XML EncryptionXML Encryption

Posterior a XML SignaturePosterior a XML Signature La información cifrada es expresada en un formato común La información cifrada es expresada en un formato común

XMLXML Trozos de un documento XML pueden ser selectivamente Trozos de un documento XML pueden ser selectivamente

cifradoscifrados Utiliza algoritmos y técnicas de encriptación madurasUtiliza algoritmos y técnicas de encriptación maduras

– SimétricaSimétrica– AsimétricaAsimétrica– Híbrida (llave de sesión)Híbrida (llave de sesión)

Algunos AlgoritmosAlgunos Algoritmos– DESDES– 3DES3DES– AESAES– ……

Page 153: Charla Web Services

Estructura XML Estructura XML EncryptionEncryption

<EncryptedData Id? Type? MimeType? Encoding?><EncryptionMethod/>?<ds:KeyInfo>

<EncryptedKey>?<AgreementMethod>?<ds:KeyName>?<ds:RetrievalMethod>?<ds:*>?

</ds:KeyInfo><CipherData>

<CipherValue>?<CipherReference URI?>?

</CipherData><EncryptionProperties>?

</EncryptedData>

Page 154: Charla Web Services

Ejemplo XML Ejemplo XML EncryptionEncryption

<purchaseOrder> <Order> <Item>book</Item> <Id>123-958-74598</Id> <Quantity>12</Quantity> </Order> <Payment> <CardId> 123654-8988889-9996874 </CardId> <CardName>visa</CardName> <ValidDate>12-10-2004</ValidDate> </Payment></purchaseOrder>

<PurchaseOrder> <Order> <Item>book</Item> <Id>123-958-74598</Id> <Quantity>12</Quantity> </Order> <EncryptedData Type='http://www.w3.org/2001/04/xmlenc#Element‘ xmlns='http://www.w3.org/2001/04/xmlenc#'> <CipherData> <CipherValue>A23B45C564587</CipherValue> </CipherData> </EncryptedData></PurchaseOrder>

Page 155: Charla Web Services

XKMSXKMS

XML Key Management SpecificationXML Key Management Specification Infraestructura de llave pública (PKI)Infraestructura de llave pública (PKI)

– Repositorio de credencialesRepositorio de credenciales– Asociación a identidadesAsociación a identidades

VentajasVentajas– Complejidad reducida para los clientesComplejidad reducida para los clientes– Facilita la codificaciónFacilita la codificación– Administración de la confianza centralizadaAdministración de la confianza centralizada– ……

PKIServicios Web XKMS

Aplicaciones

Page 156: Charla Web Services

SAMLSAML

Security Assertion Markup LanguageSecurity Assertion Markup Language Especificación mantenida por OASISEspecificación mantenida por OASIS Transportador de identidadesTransportador de identidades ““Confianza Portable”Confianza Portable” Requiere preestablecimiento de confianza entre los Requiere preestablecimiento de confianza entre los

dominiosdominios Potencial uso para herramientas de Potencial uso para herramientas de Single Sign-OnSingle Sign-On Aserciones en formato XMLAserciones en formato XML

– AutenticaciónAutenticación– AtributosAtributos– AutorizaciónAutorización

¡Se pueden firmar con XML Signature!¡Se pueden firmar con XML Signature!

Page 157: Charla Web Services

Aserciones SAMLAserciones SAML

AutenticaciónAutenticación– El Sujeto El Sujeto SS fue identificado con el método fue identificado con el método MM a la hora a la hora TT..– Los métodos de autenticación soportadosLos métodos de autenticación soportados

ContraseñaContraseña Ticket KerberosTicket Kerberos Contraseña Remota Segura (RSP)Contraseña Remota Segura (RSP) Token de HardwareToken de Hardware Certificado de Cliente SSLCertificado de Cliente SSL Llave Pública en un contenedor X.509Llave Pública en un contenedor X.509 Llave Pública PGPLlave Pública PGP Llave Pública SPKILlave Pública SPKI Llave Pública XKMSLlave Pública XKMS Firma Digital XML SignatureFirma Digital XML Signature

AtributosAtributos– El sujeto El sujeto SS posee los siguientes atributos: posee los siguientes atributos:

Atributo 1Atributo 1: : aa Atributo 2Atributo 2: b: b …… Atributo nAtributo n: : nn

– Este tipo de información esta típicamente contenida en servidores LDAP. Este tipo de información esta típicamente contenida en servidores LDAP. AutorizaciónAutorización

– Al sujeto Al sujeto SS se puede autorizar el acceso tipo se puede autorizar el acceso tipo AA sobre el recurso sobre el recurso RR dada la dada la evidencia evidencia EE. .

Page 158: Charla Web Services

Ejemplo Aserción de Ejemplo Aserción de AutenticaciónAutenticación

<saml:AssertionMajorVersion=”1” MinorVersion=”0”AssertionID=”10.254.1.101.12345”Issuer=”jselman.com”IssueInstant=”2005-05-07T22:02:00Z”><saml:Conditions NotBefore=”2005-05-07T22:02:00Z” NotAfter=”2005-05-

07T22:09:00Z” /><saml:AuthenticationStatement

AuthenticationMethod=”password”AuthenticationInstant=”2005-05-07T22:02:00Z”><saml:Subject>

<saml:NameIdentifier SecurityDomain=”jselman.com” Name=”José Miguel” />

</saml:Subject></saml:AuthenticationStatement>

</saml:Assertion>

Page 159: Charla Web Services

Arquitectura SAMLArquitectura SAML

SAML

Aserción deAutenticación

Aserción deAtributos

Aserción deAutorización

Autoridad de Autenticación

Autoridad de Atributos

Punto de Decisiónde Políticas (PDP)

Recolector de Credenciales

Entidad deSistema

Punto de HacerValer Políticas (PEP)

RequerimientoAplicación

Política Política Política

Page 160: Charla Web Services

160160

Ejemplo XML EncryptionEjemplo XML Encryption<Alumno>

<Nombre>José Miguel Selman</Nombre><AñoIngreso>1999</AñoIngreso><Matricula>

<EncryptedData id=”matricula” Type=”http://www.w3.org/2000/09/xmldsig#content”>

<EncryptionMethod Algorithm=”…”/><CipherData><CipherValue>…</CipherValue></CipherData>

</EncryptedData></Matricula><NotaExamen>

<EncryptedData id=”notaexamen” Type=”http://www.w3.org/2000/09/xmldsig#content”>

<EncryptionMethod Algorithm=”…”/><CipherData><CipherValue>…</CipherValue></CipherData>

</EncryptedData></NotaExamen><EncryptedKey>

<EncryptionMethod Algorithm=”…”/><CipherData>

<CipherValue>…</CipherValue></CipherData><ReferenceList>

<DataReference URI=”#matricula”/><DataReference URI=”#notaexamen”/>

</ReferenceList></EncryptedKey>

</Alumno>

Page 161: Charla Web Services

161161

Token SAMLToken SAML<S:Envelope xmlns:S="...">

<S:Header>

<wsse:Security xmlns:wsse="...">

<saml:Assertion

MajorVersion="1"

MinorVersion="0"

AssertionID="SecurityToken-ef912422"

Issuer="jselman"

IssueInstant="2005-05-14T16:47:05.6228146-07:00"

xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion">

...

</saml:Assertion>

...

</wsse:Security>

</S:Header>

<S:Body>

...

</S:Body>

</S:Envelope>

Page 162: Charla Web Services

162162

Username TokenUsername Token

<wsse:Security>

<wsse:UsernameToken>

<wsse:Username>jselman</wsse:Username>

<wsse:PasswordType=”wsse:PasswordDigest”>

D2A12DFE8D90FC6…

</wsse:PasswordType>

<wsse:Nonce>EFD89F06CCB28C89</wsse:Nonce>

<wsu:Created>2005-05-08T20:21:23Z</wsu:Created>

</wsse:UsernameToken>

</wsse:Security>

Page 163: Charla Web Services

163163

Token eXtensible Rights Token eXtensible Rights Markup LanguageMarkup Language

<S:Envelope> <S:Header> <wsse:Security> <r:license licenseId=”urn:foo:SecurityToken:ab12345”> <r:grant> <r:keyHolder> <r:info> <ds:KeyValue>…</ds:KeyValue> </r:info> </r:keyHolder> <r:possessProperty/> <sx:commonName>José Miguel Selman</sx:commonName> </r:grant> <r:issuer> <ds:Signature>…</ds:Signature> </r:issuer> </r:license> <ds:Signature> <ds:SignedInfo> … <ds:Reference URI=”#msgBody”> … </ds:Reference> … </ds:SignedInfo> … <ds:KeyInfo> <wsse:SecurityTokenReference> <wsse:Reference URI=”urn:foo:SecurityToken:ab12345” ValueType=”r:license”/> </wsse:SecurityTokenReference> </ds:KeyInfo> </ds:Signature> </wsse:Security> </S:Header> <S:Body wsu:Id=”msgBody”> <PictureRequest xmlns=”http://www.jselman.com/pics”> <Picture format=”image/gif”> AxE1TrsRGGH… </Picture> </PictureRequest> </S:Body></S:Envelope>

Page 164: Charla Web Services

164164

Token Certificado X509Token Certificado X509

<wsse:BinarySecurityToken ValueType=”wsse:X509v3” EncodingType=”wsse:Base64Binary”>

NIFEPzCCA9CrAwIBAgIQEmtJZc0…

</wsse:BinarySecurityToken>

Page 165: Charla Web Services

165165

Token XCBFToken XCBF

<S:Envelope xmlns:S="..."> <S:Header> <wsse:Security xmlns:wsse="..."> <wsse:XCBFSecurityToken xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/04/secext" Id="XCBF-biometric-object" ValueType="wsse:XCBFv1" EncodingType="wsee:XER">

<BiometricSyntaxSets> <BiometricSyntax> <biometricObjects> <BiometricObject> <biometricHeader> <version> 0 </version> <recordType> <id> 4 </id> </recordType> <dataType> <processed/> </dataType> <purpose> <audit/> </purpose> <quality> -1 </quality> <validityPeriod> <notBefore> 1980.10.4 </notBefore> <notAfter>2003.10.3.23.59.59</notAfter> </validityPeriod> <format> <formatOwner> <oid> 2.23.42.9.10.4.2 </oid> </formatOwner> </format> </biometricHeader> <biometricData> 0A0B0C0D0E0F1A1B1C1D1E1F2A2B2C2D2E2F </biometricData> </BiometricObject> </biometricObjects> </BiometricSyntax> </BiometricSyntaxSets>

</wsse:XCBFSecurityToken> </wsse:Security> </S:Header> <S:Body> ... </S:Body></S:Envelope>

Page 166: Charla Web Services

166166

WS-Security WS-Security TimestampsTimestamps

<S:Envelope>

<S:Header>

<wsse:Security>

<wsu:Timestamp>

<wsu:Created>2005-05-14T19:31:22Z</wsu:Created>

<wsu:Expires>2005-05-14 T19:46:22Z</wsu:Expires>

</wsu:Timestamp>

</wsse:Security>

</S:Header>

</S:Envelope>

Page 167: Charla Web Services

167167

Especificaciones WS-*Especificaciones WS-*

WS-Policy:WS-Policy: Define como expresar capacidades y Define como expresar capacidades y restricciones de políticas de seguridad.restricciones de políticas de seguridad.

WS-Trust:WS-Trust: Describe un modelo para establecer relaciones Describe un modelo para establecer relaciones de confianza directa y a través de intermediarios.de confianza directa y a través de intermediarios.

WS-Privacy:WS-Privacy: Habilita a los usuarios para establecer sus Habilita a los usuarios para establecer sus preferencias de privacidad y a Web Services para establecer preferencias de privacidad y a Web Services para establecer e implementar prácticas de privacidad.e implementar prácticas de privacidad.

WS-SecureConversation:WS-SecureConversation: Describe como administrar y Describe como administrar y autenticar intercambios de mensajes entre partes, autenticar intercambios de mensajes entre partes, incluyendo el intercambio de contextos de seguridad y el incluyendo el intercambio de contextos de seguridad y el establecimiento y derivación de llaves de sesión. establecimiento y derivación de llaves de sesión.

WS-Federation:WS-Federation: Describe la manera de administrar las Describe la manera de administrar las relaciones de confianza en un ambiente federado relaciones de confianza en un ambiente federado heterogéneo, incluyendo soporte para identidades heterogéneo, incluyendo soporte para identidades federadas. federadas.

WS-Authorization:WS-Authorization: Define como Web Services administran Define como Web Services administran políticas e información de autorización.políticas e información de autorización.

Page 168: Charla Web Services

168168

Triángulo Seguridad Triángulo Seguridad DistribuidaDistribuida

Page 169: Charla Web Services

169169

Framework de Seguridad Web Framework de Seguridad Web ServicesServices

Especificaciones Base Web Services

WS Security

WS-Policy WS-Trust WS-Privacy

WS-SecureConversationWS-Federation WS-Authorization

HOY