Charla Web Services

6,659 views
6,531 views

Published on

Published in: Technology
1 Comment
4 Likes
Statistics
Notes
No Downloads
Views
Total views
6,659
On SlideShare
0
From Embeds
0
Number of Embeds
75
Actions
Shares
0
Downloads
456
Comments
1
Likes
4
Embeds 0
No embeds

No notes for slide

Charla Web Services

  1. 1. Arquitectura de Servicios Web José Miguel Selman G. j [email_address] Conceptos, Aplicaciones, Buenas Prácticas, Actualidad y Tendencias
  2. 2. Temario <ul><li>Introducción </li></ul><ul><li>Arquitectura de Servicios Web </li></ul><ul><li>Seguridad en Servicios Web </li></ul><ul><li>Orquestación </li></ul><ul><li>Interoperabilidad </li></ul><ul><li>Un Web Service en 2 minutos </li></ul><ul><li>Recomendaciones </li></ul><ul><li>Aplicaciones y Extensiones </li></ul><ul><ul><li>Semántica </li></ul></ul><ul><ul><li>Grid Services </li></ul></ul><ul><ul><li>Portales </li></ul></ul><ul><ul><li>Rich Internet Applications: Ajax, REST y más … </li></ul></ul>
  3. 3. Presentaciones <ul><li>Cargo/Rol </li></ul><ul><li>Empresa/Area </li></ul><ul><li>Expectativas </li></ul>
  4. 4. Acerca de Mí <ul><li>Ingeniero Civíl en Ciencias de la Computación, Universidad de Chile </li></ul><ul><li>Arquitecto Tecnológico Senior, BEE Concretorías y Sistemas </li></ul><ul><li>Líder Grupo Usuarios Java de Chile (www.jug.cl) </li></ul><ul><li>Instructor Cursos Java, Java EE y Arquitectura para Sun Microsystems </li></ul><ul><ul><li>Certificaciones </li></ul></ul><ul><ul><ul><li>Sun Certified Java Programmer </li></ul></ul></ul><ul><ul><ul><li>Sun Cerified Business Component Developer </li></ul></ul></ul><ul><ul><ul><li>Sun Certified Web Component Developer </li></ul></ul></ul><ul><ul><ul><li>Sun Certified Enterprise Architect </li></ul></ul></ul><ul><li>Profesor Part-Time Universidad de Chile </li></ul>
  5. 5. Introducción <ul><li>La Web fue originalmente diseñeada para compartir documentos </li></ul><ul><li>Sirve muy bien este propósito: </li></ul><ul><ul><li>Información compartida: Es una librería de contenido </li></ul></ul><ul><ul><li>Permite realizar comercio electrónico </li></ul></ul><ul><li>Factores de éxito </li></ul><ul><ul><li>Pocos estándares: HTTP+ HTML </li></ul></ul><ul><ul><li>Modelo de interacción construido realizando pocos supuestos sobre la plataforma computacional. </li></ul></ul><ul><ul><li>Ubicuidad: E star en la Web y poder ser encontrado </li></ul></ul>
  6. 6. Pero ha evolucionado… Web Web 2.0 ¿Web 3.0? ?
  7. 7. Motivación <ul><li>Hoy, la Web está en todas partes, por lo que hay mucho más que podemos hacer </li></ul><ul><ul><li>Centro de negocios electrónicos </li></ul></ul><ul><ul><li>E-commerce automatizado </li></ul></ul><ul><ul><li>Integración de procesos de negocio </li></ul></ul><ul><ul><li>Posibilidad de compartir recursos. (Grid Computing) </li></ul></ul><ul><ul><li>Portales de Agregación de Información </li></ul></ul><ul><ul><li>… </li></ul></ul><ul><li>Las soluciones ad-hoc y propietarias han demostrado no ser lo suficientente eficientes </li></ul><ul><li>Objetivo: </li></ul><ul><li>Permitir interacciones entre sistemas distribuídos en la Web </li></ul>
  8. 8. Evolución computación distribuída (Hacia Servicios Web) * Fuente: “J2EE Web Services on BEA Weblogic”, Anjali Anagol-Subbarao E-Mail EDI RPCs Corba COM XML SOAP WSDL WS-Stack RMI 1997 1990 1970 2000 1980 (*)
  9. 9. Definiendo Servicios Web <ul><li>“ A Software System designed to support Interoperable machine-to-machine interaction over a network” </li></ul><ul><ul><li>W3C </li></ul></ul><ul><li>Características </li></ul><ul><ul><li>Independientes de la Plataforma </li></ul></ul><ul><ul><li>Diseñados para apalancar tecnologías existentes </li></ul></ul><ul><ul><li>Soporte para varios lenguajes de programación </li></ul></ul><ul><ul><li>Tres estándares </li></ul></ul><ul><ul><ul><li>SOAP + UDDI + WSDL </li></ul></ul></ul>
  10. 10. WS como Componentes Remotos <ul><li>Proveen mecanismos para ejecutar operaciones remotas de forma similar a: </li></ul><ul><ul><li>CORBA </li></ul></ul><ul><ul><li>RMI </li></ul></ul><ul><ul><li>RPC </li></ul></ul><ul><ul><li>DCOM </li></ul></ul><ul><li>La diferencia principal: </li></ul><ul><ul><li>Apalancamiento de tecnologías y protocolos maduros y estándares de Internet (HTTP, XML, …) </li></ul></ul><ul><ul><li>Librerías en muchos lenguajes de programación </li></ul></ul>
  11. 11. Quién es Quién <ul><li>Web Services Interoperability Organization </li></ul><ul><li>Basic Profile, Attachments Profile, … </li></ul>www.ws-i.org <ul><li>Internet Engineering Task Force </li></ul><ul><li>HTTP, FTP, … </li></ul>www.ietf.org <ul><li>Advancing Open Standards for the Information Society </li></ul><ul><li>UDDI, WS-Security, WS-*, … </li></ul>www.oasis-open.org <ul><li>World Wide Web Consortium </li></ul><ul><li>SOAP, WSDL </li></ul>www.w3c.org
  12. 12. Quienes aparecen siempre… Y muchos otros…
  13. 13. Características de los Servicios Web <ul><li>Objetivos </li></ul><ul><ul><li>Permitir interoperabilidad universal </li></ul></ul><ul><ul><li>Adopción masiva, ubicuidad, rendimiento </li></ul></ul><ul><ul><li>Soportar una arquitectura orientada a Servicios (SOA) </li></ul></ul><ul><ul><li>Soportar eficientemente ambientes abiertos (Web) y cerrados (corporativos) </li></ul></ul>
  14. 14. Características de los Servicios Web <ul><li>Objetivos derivados </li></ul><ul><ul><li>Conocer con precisión cuales son los Servicios ofrecidos por un proveedor, junto con la descripción de su interfaz </li></ul></ul><ul><ul><li>Utilizar un estándar que permita comunicar aplicaciones independiente de la plataforma </li></ul></ul>
  15. 15. Características de los Servicios Web <ul><li>Objetivos (+ técnicos) </li></ul><ul><ul><li>Tener un protocolo universal para la comunicación entre aplicaciones </li></ul></ul><ul><ul><li>Basar la comunicación en los protocolos de internet (en especial HTTP) </li></ul></ul><ul><ul><li>Estandarizar los mensajes a enviar, ya sea un documento a procesar remotamente o la invocación de un comando </li></ul></ul>
  16. 16. Características de los Servicios Web <ul><li>Requerimientos </li></ul><ul><ul><li>Basado en estándares </li></ul></ul><ul><ul><li>Muy buen soporte es crítico </li></ul></ul><ul><ul><li>Se asume una muy pequeña infraestructura </li></ul></ul><ul><ul><ul><li>Sólo un pequeño número de estándares debe ser implementado. </li></ul></ul></ul><ul><ul><li>Se enfoca en MENSAJES y DOCUMENTOS , no en componentes de Software </li></ul></ul>
  17. 17. Características de los Servicios Web <ul><li>Servicio Web </li></ul><ul><ul><li>Es una arquitectura de computación distribuída </li></ul></ul><ul><ul><li>Usa sus propias interfaces, protocolos y servicios de registro, para que distintas aplicaciones de distintas plataformas puedan usar sus procedimientos </li></ul></ul><ul><ul><li>En constante evolución </li></ul></ul>
  18. 18. <ul><li>Las aplicaciones de Servicios Web son encapsuladas; componentes Web bajamente acoplados que se pueden vincular dinámicamente entre sí </li></ul>
  19. 19. Ciclo de Vida Servicios Registro o Directorio Proveedor del Servicio Consumidor del Servicio 1. Desarrollo servicio e interfaz 5. Desarrollo aplicación cliente 2. Publica servicio en el directorio 3. Busca proveedor de servicio. 4. Listado de proveedores de servicio y descripciones. 6. Requiere Servicio 7. Provee Servicio
  20. 20. Otras Preocupaciones
  21. 21. Framework de Servicios Web <ul><li>Se describe en términos de: </li></ul><ul><ul><li>Lo que va en el “fierro” o en los “cables”: </li></ul></ul><ul><ul><li>Formatos y protocolos . </li></ul></ul><ul><ul><li>Qué describe lo que va en el “cable”: </li></ul></ul><ul><ul><li>Lenguajes de Descripción. </li></ul></ul><ul><ul><li>Qué nos permite encontrar estas descripiones: </li></ul></ul><ul><ul><li>Descubrimiento de Servicios. </li></ul></ul>
  22. 22. Arquitectura Conceptual Comunicaciones HTTP, SMTP, FTP, JMS, IIOP, … Mensajes Extensiones SOAP Entrega Confiable, Correlación, Transacciones… SOAP Descripciones WSDL Procesos Descubrimiento, Agregación, Coreografía, … XML, DTD, XML Schema S E G U R I D A D A D M I N I S T R A C I Ó N
  23. 23. ¿Qué provee la Arquitectura? <ul><li>Encapsulamiento de funcionalidades </li></ul><ul><li>Sistemas débilmente acoplados </li></ul><ul><li>Componentes reutilizables </li></ul><ul><li>Acceso mediante programación </li></ul><ul><li>Montado “sobre” la Web </li></ul><ul><li>Comunicación sobre XML </li></ul>
  24. 24. Recordemos que… <ul><li>Web Services </li></ul><ul><ul><li>WSDL </li></ul></ul><ul><ul><ul><li>Web Services Description Language </li></ul></ul></ul><ul><ul><li>SOAP </li></ul></ul><ul><ul><ul><li>SOAP </li></ul></ul></ul><ul><ul><li>UDDI </li></ul></ul><ul><ul><ul><li>Universal Description, Discovery and Integration </li></ul></ul></ul>
  25. 25. WSDL <ul><li>Web Services Description Language </li></ul><ul><li>Es un documento XML que introduce una gramática para describir puntos de emisión de mensajes (endpoints). </li></ul><ul><li>Los elementos que permiten describir “endpoints” son: </li></ul><ul><ul><li>Messages: Referencias a XML Schema que definen las diferente partes de un Mensaje. </li></ul></ul><ul><ul><li>Operations: Lista de Mensajes involucrados en un flujo de mensaje. Por ejemplo una operación de request-response contiene dos mensajes. </li></ul></ul><ul><ul><li>PortType: Es el set de flujos de mensajes (Operations), que se encuentran en un “endpoint”, sin detallar el transporte ni la codificación. </li></ul></ul><ul><ul><li>Binding: Medio de transporte y codificación particular de un PortType. </li></ul></ul><ul><ul><li>Port: Dirección en la red de un “endpoint” y el binding que lo caracteriza. </li></ul></ul><ul><ul><li>Service: Colección de “endpoints” relacionados. </li></ul></ul>
  26. 26. WSDL types message portTypes bindings port service Definiciones Abstractas Definiciones Concretas Documento WSDL 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
  27. 27. WSDL Service Port (e.g. http://host/svc) Binding (e.g. SOAP) Interfaz Abstracta portType operation(s) inMesage outMessage Port Binding
  28. 28. <ul><li>WSDL ejemplo </li></ul>
  29. 29. SOAP <ul><li>Antes: Simple Object Access Protocol </li></ul><ul><li>Ahora: Solo SOAP </li></ul><ul><li>Es un protocolo liviano para el intercambio de información en ambientes distribuídos y descentralizados </li></ul>
  30. 30. Introducción : SOAP <ul><li>No hace todo lo que hace CORBA, RMI o alguna de las arquitecuras de Computación Distribuída anteriores </li></ul><ul><li>Pero es simple… </li></ul><ul><li>Estrutura Física: </li></ul><ul><ul><li>Envelope: Contenedor del mensaje </li></ul></ul><ul><ul><li>Header: Permite agregar nuevas funcionalidad dependientes de la plataforma </li></ul></ul><ul><ul><li>Body: Contenedor para la información a transmitir </li></ul></ul><ul><ul><li>Fault: Contenedor de Mensajes de error </li></ul></ul>
  31. 31. Estructura: Flexible y Extensible <ul><li>Mensaje o PayLoad </li></ul><ul><li>RPC/Encoded </li></ul><ul><li>Document/Literal </li></ul>Transporte (HTTP, SMTP, FTP, MQ, etc.) Envelope (XML) Header Body <ul><li>Información Rutas </li></ul><ul><li>Transacciones </li></ul><ul><li>Entrega Confiable </li></ul><ul><li>Seguridad </li></ul>
  32. 32. Ejemplos SOAP
  33. 33. Extensión: SOAP with Attachments <ul><li>Es posible extender la definición SOAP </li></ul><ul><li>Puede ser transportado dentro de un MIME </li></ul><ul><ul><li>MultiPurpose Internet Mail Extension </li></ul></ul><ul><li>Se preservan las reglas de SOAP </li></ul><ul><li>Permite el encapsulamiento de compendios de documentos </li></ul>
  34. 34. Extensión : SOAP with Attachments <ul><li>POST /insuranceClaims HTTP/1.1 </li></ul><ul><li>Host: www.risky-stuff.com </li></ul><ul><li>Content-Type: Multipart/Related; boundary=MIME_boundary; type=text/xml; </li></ul><ul><li>start=&quot;<claim061400a.xml@claiming-it.com>&quot; </li></ul><ul><li>Content-Length: XXXX </li></ul><ul><li>SOAPAction: http://schemas.risky-stuff.com/Auto-Claim </li></ul><ul><li>Content-Description: This is the optional message description. </li></ul><ul><li>--MIME_boundary </li></ul><ul><li>Content-Type: text/xml; charset=UTF-8 </li></ul><ul><li>Content-Transfer-Encoding: 8bit </li></ul><ul><li>Content-ID: <claim061400a.xml@claiming-it.com> </li></ul><ul><li><?xml version='1.0' ?> </li></ul><ul><li><SOAP-ENV:Envelope </li></ul><ul><li>xmlns:SOAP-ENV=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;> </li></ul><ul><li><SOAP-ENV:Body> </li></ul><ul><li><claim:insurance_claim_auto id=&quot;insurance_claim_document_id&quot; </li></ul><ul><li>xmlns:claim=&quot;http://schemas.risky-stuff.com/Auto-Claim&quot;> </li></ul><ul><li><theSignedForm href=&quot;cid:claim061400a.tiff@claiming-it.com&quot;/> </li></ul><ul><li><theCrashPhoto href=&quot;cid:claim061400a.jpeg@claiming-it.com&quot;/> </li></ul><ul><li><!-- ... more claim details go here... --> </li></ul><ul><li></claim:insurance_claim_auto> </li></ul><ul><li></SOAP-ENV:Body> </li></ul><ul><li></SOAP-ENV:Envelope> </li></ul><ul><li>--MIME_boundary </li></ul><ul><li>Content-Type: image/tiff </li></ul><ul><li>Content-Transfer-Encoding: base64 </li></ul><ul><li>Content-ID: <claim061400a.tiff@claiming-it.com> </li></ul><ul><li>...Base64 encoded TIFF image... </li></ul><ul><li>--MIME_boundary </li></ul><ul><li>Content-Type: image/jpeg </li></ul><ul><li>Content-Transfer-Encoding: binary </li></ul><ul><li>Content-ID: <claim061400a.jpeg@claiming-it.com> </li></ul><ul><li>...Raw JPEG image.. </li></ul><ul><li>--MIME_boundary-- </li></ul>
  35. 35. SOAP
  36. 36. SOAP
  37. 37. UDDI <ul><li>Universal Description, Discovery and Integration </li></ul><ul><li>Es un documento XML que describe un negocio y los servicios que ofrece </li></ul><ul><li>La idea es buscar la compañía que ofrece un servicio requerido, ver sus características y posiblemente contactar al encargado </li></ul><ul><li>Páginas Amarillas de SW, pero con páginas blancas, amarillas y verdes </li></ul>
  38. 38. UDDI <ul><li>Estándar de facto para la publicación y descubrimiento de Servicios Web </li></ul><ul><li>Nace de la necesidad de compartir WS internos </li></ul><ul><li>Pretende “divulgar y publicitar” los WS en Internet </li></ul><ul><ul><li>Puede ser usado en Intranets </li></ul></ul><ul><li>Dos especificaciones: </li></ul><ul><ul><li>API (herramientas para publicar y consultar) </li></ul></ul><ul><ul><li>Data Structure (definiciones y codificaciones) </li></ul></ul>
  39. 39. UDDI <ul><li>Codificación: </li></ul><ul><ul><li>businessEntity: Datos del proveedor del servicio </li></ul></ul><ul><ul><li>businessService: Categorización basada en negocios o tipos de servicio </li></ul></ul><ul><ul><li>tModel: Detalles técnicos (gralmente WSDL), pero la idea es independizarse de la implementación. </li></ul></ul><ul><li>Identificados con UUID, “identificador único universal” … </li></ul><ul><ul><li>(Bueno, casi…) </li></ul></ul>
  40. 40. Consultas UDDI
  41. 41. Problemas UDDI <ul><li>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 (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 que cumplen. </li></ul><ul><li>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 de negocios que poseen servicios. Pero tampoco es capaz de representar las 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 como entrada palabras clave o keywords, lo que lleva a recibir resultados amplios y con una muy baja o nula relación. </li></ul><ul><li>Un Servicio Web puede existir en distintos repositorios UDDI, con distintos identificadores. No existen protocolos de comunicación estandarizados entre directorios, que permitan manejar una sincronización de servicios publicados. Además, un mismo servicio puede ser categorizado con atributos completamente distintos en dos directorios UDDI. </li></ul><ul><li>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 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 con atributo que indique donde encontrar la descripción WSDL del servicio. </li></ul>
  42. 42. En Resumen: ¿Qué va en el cable hasta ahora? <ul><li>La integración en Internet necesita un lenguaje </li></ul><ul><ul><li>XML messaging protocol sobre HTTP: SOAP </li></ul></ul><ul><li>Dentro de organizaciones la integración debe permitir alternar entre: </li></ul><ul><ul><li>CORBA, RMI, … </li></ul></ul><ul><ul><li>Mensajería </li></ul></ul><ul><ul><li>Métodos o Servicios locales </li></ul></ul>SOAP Seguridad Attachments Confiabilidad Ruteo Transacciones Contexto W3C
  43. 43. Piezas Faltantes: WS-* <ul><li>Seguridad (WS-Security) </li></ul><ul><ul><li>Logging, credenciales </li></ul></ul><ul><ul><li>WS-Trust, WS-SecureConversation, … </li></ul></ul><ul><li>Transactions (WS-Transaction) </li></ul><ul><ul><li>WS-AtomicTransction, … </li></ul></ul><ul><li>Calidad de Servicio ( WS-ReliableMessaging ) </li></ul><ul><ul><li>Garantías de la puntualidad </li></ul></ul><ul><li>Operaciones asincrónicas </li></ul><ul><ul><li>Coordinaciones, Workflow </li></ul></ul><ul><li>… </li></ul>
  44. 44. Seguridad en Servicios Web
  45. 45. Seguridad como un habilitador <ul><li>Integración de Aplicaciones </li></ul><ul><li>EAI </li></ul><ul><ul><li>CRMs </li></ul></ul><ul><ul><li>ERPs </li></ul></ul><ul><li>B2C, B2B, etc. </li></ul><ul><li>Automatización de Procesos de Negocio </li></ul><ul><li>Portales de Agregación de Información </li></ul><ul><li>… </li></ul>
  46. 46. Arquitectura General Aplicaciones Empresariales Clientes Servidor Web Servidor App. Servidor App. Servidor App. Acceso Datos Conectores a Sistemas Legacy Bases de Datos <ul><li>Seguridad Back-end </li></ul><ul><li>Seguridad Mainframe </li></ul><ul><li>Seguridad RDBMS </li></ul><ul><li>etc. </li></ul><ul><li>Seguridad Middleware </li></ul><ul><li>Roles </li></ul><ul><li>Seguridad Componentes </li></ul><ul><li>Criptografía </li></ul><ul><li>etc. </li></ul><ul><li>Seguridad Perímetro </li></ul><ul><li>Firewalls/VPNs </li></ul><ul><li>Criptografía </li></ul><ul><li>Seguridad Servidores Web </li></ul><ul><li>Detección de Intrusión </li></ul><ul><li>etc. </li></ul>Plataformas Predominantes: J2EE y .NET
  47. 47. ¿De qué debemos proteger nuestras aplicaciones? Violación de Confidencialidad Violación de Integridad Ataque de Repetición
  48. 48. Ataques Aplicaciones Ataque del Intermediario (conocido como “Man in the Middle”)
  49. 49. Ataque típicos Aplicaciones Web <ul><li>Manipulación de parámetros </li></ul><ul><ul><li>http://www.sitio.com/listadoProductos.do?maxResults=100 </li></ul></ul><ul><ul><ul><li>¿maxResults=999999999? </li></ul></ul></ul><ul><ul><li>Ataques SQL (SQL Injection ) </li></ul></ul><ul><ul><ul><li>http://www.sitio.com/listTabla.aspx?orderBy=columna1 </li></ul></ul></ul><ul><ul><ul><ul><li>SELECT * FROM tabla ORDER BY columna1 </li></ul></ul></ul></ul><ul><li>Recursos no publicados </li></ul><ul><ul><li>http://www.sitio.com/documentos/documento1.html </li></ul></ul><ul><ul><ul><li>¿http://www.sitio.com/documentos/? </li></ul></ul></ul><ul><ul><ul><li>¿http://www.sitio.com/test/? </li></ul></ul></ul><ul><ul><ul><li>¿http://www.sitio.com/prueba/? </li></ul></ul></ul><ul><li>Ataques a los servidores </li></ul><ul><ul><li>Buffer Overflow </li></ul></ul><ul><ul><li>… </li></ul></ul><ul><li>Cross Site Scripting (XSS) </li></ul><ul><li>Phishing </li></ul><ul><li>… </li></ul>
  50. 50. Requerimientos de Seguridad <ul><li>Autenticación </li></ul><ul><li>Autorización </li></ul><ul><li>Confidencialidad </li></ul><ul><li>Integridad </li></ul><ul><li>No repudiación </li></ul><ul><li>Alta Disponibilidad </li></ul>
  51. 51. Desafíos de Seguridad Servicios Web <ul><li>Seguridad basada en el usuario final </li></ul><ul><li>Mantener la seguridad al pasar por múltiples Servicios (“nodos”) </li></ul><ul><li>Abstracción de la seguridad del transporte subyacente </li></ul>
  52. 52. Seguridad a través de múltiples Servicios y múltiples transportes <ul><li>Abstracción de Seguridad del transporte subyacente </li></ul><ul><li>Seguridad Persistente </li></ul>Usuario Sitio Web Servicio Web HTTP JMS Physical Data Link Network Transport Session Presentation Application Physical Data Link Network Transport Session Presentation Application Contexto de Seguridad 1 Contexto de Seguridad 2 …
  53. 53. Seguridad para Servicios Web <ul><li>Los servicios de seguridad pueden ser provistos por: </li></ul><ul><ul><li>Capa de Transporte </li></ul></ul><ul><ul><li>Capa de Mensajería </li></ul></ul><ul><ul><li>Combinaciones de Ambas </li></ul></ul><ul><li>Existencia de gran cantidad de especificaciones y alternativas </li></ul>
  54. 54. Interrelación Tecnologías/Especificaciones de Seguridad 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 Infraestructura de Red Frameworks XML Fuente: “Securing Web Services With WS-Security. Demystifying WS-Security, WS-Policy, SAML, XML Signature, and XML Encryption”, Jothy Rosenberg and David Remy
  55. 55. WS-Security <ul><li>Esfuerzo conjunto de IBM, Microsoft y VeriSign </li></ul><ul><ul><li>En Abril de 2002 publican “Security in a Web Services World: A Proposed Architecture and Roadmap” </li></ul></ul><ul><li>Hoy mantenida por OASIS </li></ul><ul><li>Su objetivo es Proveer seguridad a SOAP </li></ul><ul><li>Se enfoca en la correcta y efectiva aplicación de tecnologías como </li></ul><ul><ul><li>XML Signature </li></ul></ul><ul><ul><li>XML Encryption </li></ul></ul><ul><ul><li>SAML </li></ul></ul><ul><li>Provee un contenedor para artefactos de seguridad </li></ul>
  56. 56. El encabezado WS-Security <ul><li>Tokens de seguridad </li></ul><ul><ul><li>Cero, uno ó más tokens de seguridad </li></ul></ul><ul><ul><li>Usualmente no más de uno </li></ul></ul><ul><li>Elementos de contenido cifrado con XML Encryption </li></ul><ul><ul><li>Cero, uno ó más de elementos XML Encryption </li></ul></ul><ul><ul><li>Estos pueden ser </li></ul></ul><ul><ul><ul><li><ReferenceList> </li></ul></ul></ul><ul><ul><ul><li><EncryptedKey> </li></ul></ul></ul><ul><li>Elementos de contenido firmado digitalmente con XML Signature </li></ul><ul><ul><li>Cero, uno ó más firmas XML Signature </li></ul></ul><ul><ul><li>Usualmente, si se incluye una firma, esta firma como mínimo alguna parte del cuerpo del mensaje. </li></ul></ul>
  57. 57. Ejemplo Sobre SOAP WS-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>
  58. 58. Algunos 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>
  59. 59. Opciones de Seguridad Capa 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/TLS HTTP Basic HTTP Digest
  60. 60. Opciones de Seguridad Capa de Mensajería Servicio de Seguridad Tecnologías Integridad XML Signature S/MIME PKCS#7 Confidencialidad XML Encryption Autenticación del Emisor SOAP (Cliente) XML Encryption username & [password|digest] username & [password|digest] Certificado X.509 Token de Seguridad Kerberos SAML REL Etc.
  61. 61. Comparación Seguridad Según Capa Seguridad de Transporte Seguridad de Mensajería Punto a Punto Destino a Destino Madura, su implementación es relativamente directa Nueva, relativamente compleja con muchas opciones de seguridad No granular, enfoque del todo o nada Muy granular, puede aplicar selectivamente a trozos de mensajes y solamente a los requerimientos o respuestas Dependiente del Transporte La misma estrategia puede aplicarse a distintas tecnologías de transporte
  62. 62. Seguridad Capa de Mensajería <ul><li>Construida sobre modelos maduros </li></ul><ul><li>Gran cantidad de especificaciones </li></ul><ul><ul><li>XML Signature, XML Encryption, SAML, XKMS, XACML, … </li></ul></ul><ul><li>Mayor Fortaleza </li></ul><ul><ul><li>Flexibilidad </li></ul></ul><ul><li>Mayor Debilidad </li></ul><ul><ul><li>Flexibilidad </li></ul></ul>
  63. 63. Composición de Servicios Web
  64. 64. Composición <ul><li>Paradigma emergente </li></ul><ul><li>Multiples intentos de estandarización de lenguajes (WSFL, XLANG, BPML, BPEL) </li></ul><ul><li>Se pueden caracterizar en función de patrones de diseño </li></ul><ul><li>Comparable a diseñar un workflow </li></ul>
  65. 65. Historia de los estándares de Procesos 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
  66. 66. Servicios Web como procesos de negocio Servicio Web 1 Servicio Web 2 Servicio Web 3 Servicio Web 4 Servicio Web 5 Servicio Web n
  67. 67. Problema Tipo Cliente Servicio de Compra Servicio Crédito Servicio de Inventario Consolidación de Resultados Orden de Compra Check Crédito Reservar Inventario Respuesta Crédito Respuesta Inventario Factura
  68. 68. Desafío de los Procesos de Negocio <ul><li>Comunicación asincrónica coordinada entre los servicios </li></ul><ul><li>Intercambios de mensaje correlacionados entre los participantes </li></ul><ul><li>Implementar el procesamiento paralelo de actividades </li></ul><ul><li>Manipular y transformar data entre participantes de la interacción </li></ul><ul><li>Soporte para las transacciones y las actividades duraderas de negocio </li></ul><ul><li>Proporcionar manejo de excepciones consistente </li></ul>
  69. 69. Orquestación vs Coreografía <ul><li>Orquestación </li></ul><ul><ul><li>Es un proceso de negocio ejecutable que describe un flujo desde la perspectiva y control de un sólo punto de emisión (endpoint) (comúnmente: Workflow) </li></ul></ul><ul><li>Coreografía </li></ul><ul><ul><li>Son los visibles y públicos intercambios de mensajes, reglas de interacción y acuerdos entre dos o más puntos de emisión de procesos de negocio </li></ul></ul>
  70. 70. Ejemplo: Orden de compra Orden de Compra Requerimiento de Orden de Compra Ack de recepción Respuesta a la orden de compra Negocio “A” Negocio “ B”
  71. 71. Visto como Coreografía OC Request OC Acknowledgement OC Response Coreografía – Las públicas y visibles interacciones de intercambio de mensajes Proceso Público Negocio A Negocio B Envío OC Recepción OC Ack Recepción respuesta OC Recepción OC Envío OC Ack Envío respuesta OC
  72. 72. Visto como Orquestació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ón – Es un proceso de negocio privado ejecutable Proceso Privado Business BPEL Workflow
  73. 73. Orquestación y Coreografía juntos Envío OC Recepción OC Ack Recepción respuesta OC Transform Transform Negocio A BPEL Workflow OC Request OC Acknowledgement OC Response Generación Plantilla BPEL Generación Plantilla 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 Negocio B Business Analyst Tool Negocio A
  74. 74. BPEL <ul><li>Business Process Execution Language </li></ul><ul><li>Version 1.0 liberada por IBM, Microsoft y BEA agosto 2002 </li></ul><ul><li>Version 1.1 subida a OASIS Abril 2003 </li></ul><ul><li>Lenguaje XML para describir procesos de como Servicios Web </li></ul><ul><ul><li>Convergencia de XLANG (Microsoft) y WSFL (IBM) </li></ul></ul><ul><li>Consenso corporativo </li></ul><ul><ul><li>IBM, Microsoft, Oracle, Sun, BEA, SAP, Siebel … </li></ul></ul>
  75. 75. Proposición de BPEL <ul><li>Procesos de negocio portables </li></ul><ul><ul><li>Construido sobre la infraestructura interoperable de los Servicios Web </li></ul></ul><ul><li>Gran lenguaje empresarial para procesos de negocio </li></ul><ul><ul><li>Set de habilidades y lenguaje común para desarrolladores </li></ul></ul><ul><li>Selección del motor de procesos </li></ul><ul><ul><li>El estándar lleva a la competencia </li></ul></ul>
  76. 76. Estándares que construyen BPEL Description HTTP,IIOP, JMS, SMTP Transport XML Message SOAP WSDL UDDI Discovery Transactions Coordination WS-Security WS-Reliability Quality of Service Business Processes Context Description Management Orchestration - BPEL4WS Choreography - CDL4WS
  77. 77. Actividades BPEL <ul><li>Actividades </li></ul><ul><li><invoke> </li></ul><ul><li><receive> </li></ul><ul><li><assign> </li></ul><ul><li><reply> </li></ul><ul><li><throw> </li></ul><ul><li><terminate> </li></ul><ul><li><wait> </li></ul><ul><li>Actividades </li></ul><ul><li>Estruturadas </li></ul><ul><li><sequence> </li></ul><ul><li><switch> </li></ul><ul><li><pick> </li></ul><ul><li><flow> </li></ul><ul><li><link> </li></ul><ul><li><while> </li></ul><ul><li><scope> </li></ul>
  78. 78. Partners/socios <ul><li>Aquí se declaran los Servicios Web y los roles utilizados por el proceso </li></ul><ul><li>Ligado al WSDL del proceso en sí y a los Servicios Web participantes mediante tipos de enlaces de servicio </li></ul>Servicio Crédito Partner 2 Servicio Inventario Partner 3 Partner 1 (el proceso) Servicio Compra
  79. 79. Variables <ul><li>Mensaje enviados y recibidos por partners </li></ul><ul><ul><li>Persisten en largas interacciones </li></ul></ul><ul><ul><li>Definidas en los tipos y mensajes WSDL </li></ul></ul>Customer Service Process <variable> <activity> <activity> Persist Persist/ Retrieve Customer Service Persist/ Retrieve Persist/ Retrieve <variable> <A> <B>
  80. 80. Ejemplo documento BPEL
  81. 81. En Resumen . . . <ul><li>Compilar </li></ul><ul><li>Empaquetar </li></ul><ul><li>Desplegar </li></ul>Partner WSDL 1 WSDL del Proceso Partner WSDL n Escenario BPEL <process> <partners> <variables> <sequence> <flow> </sequence> </process> Servidor de Aplicaciones ejecución BPEL BPEL Compilado
  82. 83. BPEL4People <ul><li>BPEL se centra en coordinación de actividades entre sistemas </li></ul><ul><li>BPEL4People extiende el concepto permitiendo la integración de personas en los procesos de negocio </li></ul><ul><ul><li>Casos de excepción </li></ul></ul><ul><ul><li>Escalamientos </li></ul></ul><ul><ul><li>… </li></ul></ul><ul><li>Mantenida por OASIS, Miembros: Adobe, IBM, SAP, Oracle, RedHat y otros … </li></ul><ul><li>Más información: http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=bpel4people </li></ul>
  83. 84. ¿Donde Vamos? <ul><li>La integración requiere de descripciones interoperables entendibles por máquinas </li></ul><ul><li>La extensión de los lenguajes provee soporte para diferentes niveles de integración entre aplicaciones </li></ul><ul><li>Servicios Web = SOAP + WSDL + UDDI + … </li></ul>Interfaz Calidad de Servicio Servicio Flujo Público Flujo/Composición Acuerdos WSDL BPEL XML Schema Administración Seguridad
  84. 85. WS-I Web Services Interoperability http://www.ws-i.org/
  85. 86. <ul><li>Es un esfuerzo abierto de la industria dedicado a promover la interoperabilidad de Servicios Web entre plataformas, aplicaciones y lenguajes de programación </li></ul><ul><li>Es un integrador de estándares para ayudar a los Servicios Web a avanzar de una manera coherente y estructurada </li></ul><ul><li>Aproximadamente 130 miembros </li></ul><ul><ul><li>70% vendedores soluciones, 30% end-user (servicios) </li></ul></ul><ul><ul><li>Fuerte presencia non-U.S. </li></ul></ul>What is WS-I? WS-I Web Services Interoperability
  86. 87. WS-I, Standards, and Industry WS-I Web Services Interoperability
  87. 88. <ul><li>Permitir interoperabilidad de Servicios Web </li></ul><ul><ul><li>Integrando Especificaciones </li></ul></ul><ul><ul><li>Promoviendo implementaciones consistentes </li></ul></ul><ul><ul><li>Permitiendo una visible representación de conformidad </li></ul></ul><ul><li>Acelerar el despliegue de Servicios Web </li></ul><ul><ul><li>Ofrecer guías de implementación y buenas prácticas </li></ul></ul><ul><ul><li>Entregar herramientas y aplicaciones de ejemplo </li></ul></ul><ul><ul><li>Proveer de un foro de implementadores donde los desarrolladores puede colaborar </li></ul></ul><ul><li>Incentivar la adopción de Servicios Web </li></ul><ul><ul><li>Construir consenso en la industria para reducir los riesgos de adopción temprana </li></ul></ul><ul><ul><li>Provee de un foro para que los end-users comuniquen requerimientos </li></ul></ul><ul><ul><li>Aumentar el conocimiento de los requerimientos de negocio </li></ul></ul>WS-I Goals WS-I Web Services Interoperability: ¿Objetivo?
  88. 89. <ul><li>Para end-users </li></ul><ul><ul><li>Reducir el costo, complejidad, y riesgo de adoptar Servicios Web </li></ul></ul><ul><ul><li>Acelera la interoperabilidad entre productos and soluciones </li></ul></ul><ul><ul><li>Ayuda a asegurar que los requerimientos de negocio se cumplan </li></ul></ul><ul><li>Para vendedores </li></ul><ul><ul><li>Satisfacer las demandas de los clientes de interoperabilidad cross-vendor </li></ul></ul><ul><ul><li>Acelerar el time-to-market de desarrollo de nuevos productos </li></ul></ul><ul><ul><li>Les permite influenciar la industria </li></ul></ul><ul><li>Para los desarrolladores </li></ul><ul><ul><li>Aumenta la productividad vía especificaciones, herramientas y buenas prácticas </li></ul></ul><ul><ul><li>Establece un framework para aumentar la eficiencia de otros desarrolladores </li></ul></ul><ul><ul><li>Les permite influenciar la industria </li></ul></ul>WS-I Value Proposition WS-I Web Services Interoperability: ¿Objetivos?
  89. 90. <ul><li>Perfiles </li></ul><ul><ul><li>Set de especificaciones o estandarizción de estandares en una versión específica </li></ul></ul><ul><ul><li>Guías y convenciones para usar estas especificaciones en formas que aseguren la interoperabilidad </li></ul></ul><ul><li>Aplicaciones de ejemplo </li></ul><ul><ul><li>Casos de uso y escenarios basados en requerimientos de clientes </li></ul></ul><ul><ul><li>Código de ejemplo y aplicaciones construidas en múltiples ambientes </li></ul></ul><ul><ul><li>Para demostrar la interoperabilidad basada en perfiles </li></ul></ul><ul><li>Herramientas de Test y documentación </li></ul><ul><ul><li>Herramientas que prueban las implementaciones de los perfiles para ver el nivel de conformidad </li></ul></ul><ul><ul><li>Documentación, white papers </li></ul></ul>Deliverables WS-I Web Services Interoperability: ¿Entregables?
  90. 91. <ul><li>Basic Profile Working Group </li></ul><ul><ul><li>Núcleo de especificaciones. Corazón SW </li></ul></ul><ul><li>Basic Security Profile Working Group </li></ul><ul><ul><li>SOAP messaging security, transporte y otras consideraciones de seguridad </li></ul></ul><ul><li>XML Schema Work Plan Working Group </li></ul><ul><ul><li>Planificar soluciones apropiadas para solucionar problemas de interoperabilidad de XML Schema </li></ul></ul>WS-I Web Services Interoperability: Detrás de cámaras…
  91. 92. <ul><li>Sample Applications Working Group </li></ul><ul><ul><li>Ilustrar buenas prácticas para implementar en múltiples plataformas </li></ul></ul><ul><li>Testing Tools Working Group </li></ul><ul><ul><li>Construye herramientas de pruebas auto administradas para cumplir con la conformidad con perfiles WS-I </li></ul></ul><ul><li>Requirements Gathering Working Group </li></ul><ul><ul><li>Captura requerimientos de negocio para conducir las futuras direcciones de los perfiles </li></ul></ul>Current Working Groups WS-I Web Services Interoperability: Detrás de cámaras…
  92. 93. <ul><li>Basic Profile </li></ul><ul><ul><li>Basic Profile 1.0 and 1.1 </li></ul></ul><ul><ul><ul><li>Más de 200 problemas de interoperabilidad resueltos; convenciones alrededor de la mensajería, descripción y descubrimiento </li></ul></ul></ul><ul><ul><li>Simple SOAP Binding Profile 1.0 </li></ul></ul><ul><ul><ul><li>— Derivado del Basic Profile. Requerimientos relacionados con la serialización de un “envelope” y su representación en el mensaje </li></ul></ul></ul><ul><ul><li>Sample Applications and Testing Tools for the Basic Profile </li></ul></ul><ul><li>• Attachments Profile 1.0 </li></ul><ul><ul><li>Complementa el Basic Profile 1.1 para agregar soporte para el transporte interoperable de datos atachados </li></ul></ul><ul><ul><ul><li>SOAP with Attachments (SwA) </li></ul></ul></ul>Delivered to Date WS-I Web Services Interoperability: Perfiles
  93. 94. <ul><li>Basic Security Profile </li></ul><ul><ul><li>Security Scenarios (Working Group Draft) </li></ul></ul><ul><ul><ul><li>Documentar riesgos de seguridad en Servicios Web interoperables, junto con las correspondientes medidas de mitigación </li></ul></ul></ul><ul><ul><li>Basic Security Profile 1.0 (Working Group Draft) </li></ul></ul><ul><ul><li>— Se dirige a la seguridad en el transporte y otras consideraciones de seguridad para los perfiles WS-I </li></ul></ul><ul><ul><li>— Perfila las especificaciones de OASIS </li></ul></ul>Delivered to Date WS-I Web Services Interoperability: Perfiles
  94. 95. WS-I’s Work to Date Composition/Orchestration Business Process Orchestration Portals Management XML, SOAP XML Schema, WSDL, UDDI, SOAP with Attachments HTTP, HTTPS, Others Invocation Description Transports Composable Service Elements Transactionality WS-Security Reliable Messaging Endpoint Identification, Publish/Subscribe Messaging Additional Capabilities WS-I Web Service Interoperability
  95. 96. <ul><li>Resumen </li></ul><ul><ul><li>Reduce el costo, complejidad y riesgo </li></ul></ul><ul><ul><ul><li>Provee confianza en la interoperabilidad </li></ul></ul></ul><ul><ul><ul><li>Guías de implementación comunes </li></ul></ul></ul><ul><ul><li>Aumenta la productividad y acelera el time to market </li></ul></ul><ul><ul><ul><li>Facilita la colaboración, interna y con socios </li></ul></ul></ul><ul><ul><ul><li>Permite a las compañías enfocarse en el valor agregado no en la “plomería” </li></ul></ul></ul><ul><ul><li>Simplifica las decisiones de compra </li></ul></ul><ul><ul><ul><li>El logo WS-I identifica conformidad. </li></ul></ul></ul>Business Value of WS-I Conformance WS-I Web Service Interoperability
  96. 97. Recapitulando … <ul><li>Ventajas Web Services </li></ul><ul><ul><li>Desarrolladores no se preocupan mas por la infraestructura </li></ul></ul><ul><ul><li>Reducción de costos en el ciclo de desarrollo de software por la alta reutilización de componentes </li></ul></ul><ul><ul><li>Proveedores de Servicios </li></ul></ul><ul><ul><li>Acceso personalizado en diversos medios y dispositivos </li></ul></ul><ul><ul><li>Interoperabilidad </li></ul></ul><ul><ul><li>Multiplataforma </li></ul></ul>
  97. 98. Recapitulando … <ul><li>Posibilidades </li></ul><ul><li>Actualmente Servicios Web </li></ul><ul><ul><li>Necesitan de una codificación estática de su construcción, invocación y conexiones mutuas </li></ul></ul><ul><ul><li>Nula reacción a cambios: proveedor, interrupción, modificación de la interfaz </li></ul></ul><ul><ul><li>Mantenimiento es costoso </li></ul></ul><ul><ul><li>No permite optimizar, buscar el servicio que más se acomode a mi realidad y de menor costo </li></ul></ul>
  98. 99. Manos a la obra …
  99. 100. Aplicaciones/Frameworks <ul><li>Practicamente todas las plataformas tienen soporte para Web Services </li></ul><ul><li>Java </li></ul><ul><ul><li>Axis - Axis2 </li></ul></ul><ul><ul><li>JAX-RPC, JAX-WS (J2EE y JEE) </li></ul></ul><ul><ul><li>Metro </li></ul></ul><ul><li>.NET </li></ul><ul><li>SAP (mySAP) </li></ul><ul><li>Oracle </li></ul><ul><li>… </li></ul>
  100. 101. Java EE: Un servicio en 2 minutos <ul><li>Java EE 5 </li></ul><ul><li>NetBeans 6.1 </li></ul><ul><li>GlassFish v2 </li></ul>
  101. 102. WS con NetBeans
  102. 103. Vista de Diseño
  103. 104. Probando nuestro Servicio
  104. 105. Recomendaciones y Buenas Prácticas
  105. 106. Exponer sólo lo necesario <ul><li>Cambios en los servicios </li></ul><ul><ul><li>Si cambia la implementación no hay problema, pero </li></ul></ul><ul><ul><li>Si cambia la interfaz… </li></ul></ul><ul><ul><ul><li>No siempre conocemos a todos los consumidores de un servicio </li></ul></ul></ul><ul><ul><ul><li>Efecto Ripple </li></ul></ul></ul>
  106. 107. Recomendaciones y Buenas Prácticas <ul><li>Las Buenas Prácticas relacionadas a XML también son aplicables a Web Services </li></ul><ul><li>Partir de a poco </li></ul><ul><ul><li>Proyectos pequeños </li></ul></ul><ul><ul><li>Silver Bullet / Golden Hammer </li></ul></ul><ul><li>Usar estándares maduros </li></ul><ul><ul><li>Portabilidad </li></ul></ul><ul><ul><li>Evitar extensiones propietarias y versiones no finales </li></ul></ul><ul><li>Seguir las recomendaciones de interoperabilidad (WS-I) </li></ul>
  107. 108. Definir interfaces estables <ul><li>Los mismos principios de diseño de software y arquitectura son aplicables a Servicios Web </li></ul><ul><li>La calidad de las interfaces es clave </li></ul><ul><ul><li>Completas y autocontenidas… </li></ul></ul><ul><li>Nombres descriptivos </li></ul><ul><ul><li>Debiera ser fácil interpretar lo que hace un servicio y los parámetros que recibe </li></ul></ul><ul><ul><li>Ej: consulta(int param1, String param2) </li></ul></ul><ul><ul><li>Convenciones de nombres </li></ul></ul><ul><ul><ul><li>Los beneficios no se perciben hasta avanzada la construcción de un sistema </li></ul></ul></ul><ul><li>Top-Down  Partir por la interfaz </li></ul>
  108. 109. Separación de Responsabilidades <ul><li>Principio “Separation of Concerns” </li></ul><ul><ul><li>http://en.wikipedia.org/wiki/Separation_of_concerns </li></ul></ul>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
  109. 110. Conocer las Limitaciones <ul><li>Considerar la carga adicional que recibirá un servidor al ser expuesto como Servicio Web </li></ul>
  110. 111. Identificar, Clasificar y Catalogar <ul><li>Identificar y Clasificar Servicios </li></ul><ul><ul><li>Verticales: Funcionalidad </li></ul></ul><ul><ul><li>Horizontales: Transversales a nuestras arquitecturas </li></ul></ul><ul><li>Mantener un directorio de Servicios </li></ul><ul><ul><li>Ubicación </li></ul></ul><ul><ul><li>Características </li></ul></ul><ul><ul><li>Responsable </li></ul></ul><ul><ul><li>¿Clientes? </li></ul></ul><ul><li>Versionamiento </li></ul><ul><li>Gobernancia </li></ul>
  111. 112. La importancia de un Repositorio <ul><li>Mantener un directorio debe ser una actividad obligatoria </li></ul><ul><li>Fomenta la correcta catalogación </li></ul><ul><li>Fomenta el descubrimiento y reutilización </li></ul><ul><li>No nos olvidemos de que siempre que distribuimos una aplicación introducimos: </li></ul><ul><ul><li>Potencialmente más puntos de falla </li></ul></ul><ul><ul><li>La no disponibilidad de un servicio puede afectar a la disponibilidad de nuestros sistemas </li></ul></ul><ul><li>Facilita la administración y monitoreo </li></ul><ul><li>Acciones ProActivas </li></ul>
  112. 113. Cuando evitar Web Services <ul><li>Pueden no resultar siempre la mejor alternativa </li></ul><ul><li>Sólo utilizar cuando aporte algún valor </li></ul><ul><li>¡No todo es un Servicio! </li></ul><ul><ul><li>¿Validación de RUT? </li></ul></ul><ul><li>Considerar </li></ul><ul><ul><li>Efectos de codificación y decodificación XML </li></ul></ul><ul><ul><ul><li>Existen aceleradores de Hardware </li></ul></ul></ul><ul><ul><li>Efectos de Overhead de Llamadas Remotas </li></ul></ul><ul><ul><li>Efectos de Participación con el resto de la infraestructra </li></ul></ul><ul><ul><ul><li>Transacciones </li></ul></ul></ul><ul><ul><ul><li>Administración </li></ul></ul></ul><ul><ul><ul><li>… . </li></ul></ul></ul>
  113. 114. Aplicaciones y Extensiones
  114. 115. Ontología OWL-S <ul><li>Semantic Mark Up For Web Services </li></ul><ul><li>Ontología </li></ul><ul><ul><li>Términos </li></ul></ul><ul><ul><li>Relaciones entre ellos </li></ul></ul><ul><ul><li>Describir un dominio de aplicación concreto sin ambigüedades </li></ul></ul><ul><li>Arquitectura </li></ul><ul><ul><li>Perfil (Profile) </li></ul></ul><ul><ul><ul><li>¿ Qué hace el servicio? </li></ul></ul></ul><ul><ul><li>Modelo (Model) </li></ul></ul><ul><ul><ul><li>¿ Cómo usar el servicio ? </li></ul></ul></ul><ul><ul><li>Implementación (Grounding) </li></ul></ul><ul><ul><ul><li>¿ Cómo acceder al servicio ? </li></ul></ul></ul>
  115. 116. OWL-S: Profile <ul><li>PERFIL: ¿Qué hace el servicio? </li></ul><ul><ul><li>Conceptualmente </li></ul></ul><ul><ul><ul><li>Lo que se logra </li></ul></ul></ul><ul><ul><ul><li>Limitaciones </li></ul></ul></ul><ul><ul><ul><li>Calidad </li></ul></ul></ul><ul><ul><ul><li>Requerimientos </li></ul></ul></ul><ul><ul><li>En concreto </li></ul></ul><ul><ul><ul><li>Datos proveedor </li></ul></ul></ul><ul><ul><ul><li>Categoría </li></ul></ul></ul><ul><ul><ul><li>Parámetros </li></ul></ul></ul><ul><ul><ul><li>Entrada y Salida </li></ul></ul></ul><ul><ul><ul><li>Tipos </li></ul></ul></ul>
  116. 117. OWL-S: Model <ul><li>MODELO: ¿Cómo usar el servicio? </li></ul><ul><ul><li>Detalla contenido semántico de los requerimientos </li></ul></ul><ul><ul><li>Cómo preguntar y para el servicio que ocurre luego de su invocación </li></ul></ul><ul><ul><li>Esta descripción puede ser utilizada por agentes </li></ul></ul><ul><ul><li>Especificación de operaciones </li></ul></ul><ul><ul><ul><li>Simples o compuestas </li></ul></ul></ul>
  117. 118. OWL-S: Grounding <ul><li>IMPLEMENTACION: ¿Cómo acceder al servicio? </li></ul><ul><ul><li>Protocolo </li></ul></ul><ul><ul><li>Mensajes </li></ul></ul><ul><ul><li>Puertos </li></ul></ul><ul><ul><li>… </li></ul></ul><ul><li>Enlace a descripción funcional </li></ul><ul><ul><li>WSDL </li></ul></ul>
  118. 119. OWL-S: Relación WSDL Más información: http://www.w3.org/Submission/2004/SUBM-OWL-S-20041122/
  119. 120. Discusión OWL-S <ul><li>¿Aplicable hoy? </li></ul>
  120. 121. Introducción a Grid Services
  121. 122. Grid Services <ul><li>Open Grid Services Architecture (OGSA) </li></ul><ul><li>La tecnología grid se ha vuelto muy popular </li></ul><ul><li>En 2003 fue declarada por el MIT como una de las 10 tecnologías emergentes que cambiarán el mundo. </li></ul><ul><li>La palabra ”grid” empieza a aparecer por todos lados, todo el mundo habla de ello </li></ul>
  122. 123. Grid Services <ul><li>¿Qué es el Grid? </li></ul><ul><ul><li>“ 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” </li></ul></ul><ul><li>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” </li></ul><ul><li>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 </li></ul><ul><li>Integrando todos los heterogéneos recursos computacionales que existen alrededor del mundo </li></ul>
  123. 124. Grid Services <ul><li>Aclaraciones </li></ul><ul><ul><li>El Grid NO es una mejora/ampliación de Internet (no están al mismo nivel) </li></ul></ul><ul><ul><li>El Grid NO es un proyecto (es una tecnología) </li></ul></ul><ul><ul><li>El Grid NO es un cluster de ordenadores (en un grid puede haber integrados muchos o ningún cluster) </li></ul></ul><ul><li>El Grid toma el nombre de su analogía con la red eléctrica (inglés ” power grid ”): </li></ul>
  124. 125. Grid Services: Grid Middleware <ul><li>El Grid es posible gracias al ”grid middleware” </li></ul><ul><ul><li>El software que permite la integración de todos los distintos tipos de recursos que participan en él. </li></ul></ul><ul><li>¿software especial? ¿ middleware ? </li></ul><ul><ul><li>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” </li></ul></ul><ul><li>Globus Toolkit </li></ul><ul><ul><li>http://www.globus.org/toolkit/ </li></ul></ul>
  125. 126. Grid Services (Middleware) <ul><li>Finalidad: virtualización de los recursos de computación </li></ul><ul><li>Funcionalidad: </li></ul><ul><ul><li>Asignación eficiente de recursos </li></ul></ul><ul><ul><li>Ejecución de trabajos y posterior transferencia de resultados </li></ul></ul><ul><ul><li>Almacenamiento, registro y posterior localización y acceso a datos </li></ul></ul><ul><ul><li>Proveer mecanismos de seguridad: autenticación, autorización... </li></ul></ul><ul><ul><li>Monitorización </li></ul></ul><ul><li>El grid middleware se construye mediante servicios grid (” grid services ”), que a su vez están basados en la tecnología de Servicios Web </li></ul>
  126. 127. Infraestructura Grid: Vista Conceptual Más Información: http://www.globus.org/ogsa/
  127. 128. Portales y WSRP http://www.ibm.com/developerworks/webservices/library/ws-wsrp/
  128. 129. Otra Dimensión de Servicios Web: Portales y WSRP <ul><li>Mantenida por OASIS </li></ul><ul><li>Web Services for Remote Portlets </li></ul><ul><ul><ul><li>Información + Presentación </li></ul></ul></ul><ul><ul><ul><li>Look & Feel provisto por el portal </li></ul></ul></ul><ul><ul><ul><li>Mejor reutilización aplicaciones Web </li></ul></ul></ul>
  129. 130. WSRP: Productores y Consumidores
  130. 131. Portal con WSRP
  131. 132. Rich Internet Applications: Ajax, REST y más …
  132. 133. Rich Internet Applications <ul><li>Interfaces de Usuario “Ricas” </li></ul><ul><li>Pilar Fundamental de la Web 2.0 </li></ul><ul><li>Mejorando la experiencia en aplicaciones Web acercándolas al Desktop </li></ul><ul><ul><li>Drag & Drop </li></ul></ul><ul><ul><li>Autocompletación </li></ul></ul><ul><ul><li>Expasión (Arboles, etc.) </li></ul></ul><ul><ul><li>… </li></ul></ul><ul><li>Cambio de Paradigma </li></ul><ul><ul><li>Evolución de un modelo Síncrono </li></ul></ul><ul><ul><li>A un modelo asíncrono </li></ul></ul>
  133. 134. Aplicaciones RIA
  134. 135. Modelo Síncrono Actividad de Usuario Actividad de Usuario Actividad de Usuario Procesamiento en Servidor Procesamiento en Servidor
  135. 136. Modelo Asíncrono Browser Motor AJAX Input Usuario 1 Input Usuario 2 Render Respuesta 1 Render Respuesta 2 Procesamiento en Servidor Procesamiento en Servidor
  136. 137. AJAX <ul><li>Plataforma para RIA </li></ul><ul><li>A synchronous J avascript A nd X ML </li></ul><ul><li>XMLHttpRequest, MSXML </li></ul><ul><ul><li>Registro de Callbacks </li></ul></ul><ul><ul><li>Uso de </li></ul></ul><ul><ul><ul><li>DOM </li></ul></ul></ul><ul><ul><ul><li>DHTML </li></ul></ul></ul>Y muchos más…
  137. 138. REST <ul><li>RE presentational S tate T ransfer </li></ul><ul><li>Alternativa a SOAP </li></ul><ul><ul><li>Recursos Tienen URIs </li></ul></ul><ul><ul><ul><li>http://www.boeing.com/aircrafts/767 </li></ul></ul></ul><ul><ul><ul><li>http://www.travelsite.com/Chile/Santiago/Hotels/Marriott </li></ul></ul></ul><ul><li>Clientes interactúan vía verbos HTTP </li></ul><ul><ul><li>GET: Para leer </li></ul></ul><ul><ul><li>PUT: Para reemplazar </li></ul></ul><ul><ul><li>DELETE: Para eliminar </li></ul></ul><ul><ul><li>POST: Para acciones </li></ul></ul>
  138. 139. JSON <ul><li>J ava S cript O bject N otation </li></ul>
  139. 140. Otras Plataformas RIA www.javafx.com silverlight.net www.adobe.com/es/products/flex/ www.adobe.com/es/products/air/ Y muchas más…
  140. 141. Preguntas
  141. 142. Bibliografía <ul><li>“ Web and Grid Services. Architectures and Technologies”, Savas Parastatidis, North-East Regional E-Science Centre </li></ul><ul><li>“ Describing Web Services using OWL-S and WSDL”, http://www.daml.org/services/owl-s/1.1/owl-s-wsdl.html </li></ul><ul><li>“ Arquitectura de Servicios Web y Frameworks de Desarrollo”, Rodrigo Frez, Universidad de Chile </li></ul><ul><li>“ Modularización de los aspectos de seguridad en Servicios Web”, José Miguel Selman G., Universidad de Chile </li></ul><ul><li>“ Servicios Web y Frameworks de Desarrollo”, José Miguel Selman G., Universidad de Chile </li></ul>
  142. 143. XML Signature <ul><li>Esfuerzo conjunto IETF/W3C </li></ul><ul><li>Su objetivo es firmar digitalmente: </li></ul><ul><ul><li>Documentos XML </li></ul></ul><ul><ul><li>Partes de Documentos XML </li></ul></ul><ul><ul><li>Objetos Externos </li></ul></ul><ul><li>Utiliza tecnologías maduras de encriptación asimétrica y generación de hashes </li></ul><ul><ul><li>SHA1 </li></ul></ul><ul><ul><li>RSA </li></ul></ul><ul><ul><li>… </li></ul></ul><ul><li>Requiere de una infraestructura de llaves públicas para proveer: </li></ul><ul><ul><li>Identidad </li></ul></ul><ul><ul><li>No repudiación </li></ul></ul>
  143. 144. Tipos de Firmas XML Signature <Signature> <Reference> <ElementoFirmado> Enveloping <ElementoEnvolvente> <Signature> <Reference> Enveloped <DocumentoXML> <Signature> <Reference> Detached <ElementoDestino>
  144. 145. Canonicalización <ul><li>c14n </li></ul><ul><li>Consenso común </li></ul><ul><li>XSLT </li></ul><OrdenDeCompra> <Productos> <CodProducto> SKU10023 </CodProducto> </Productos> </OrdenDeCompra> <OrdenDeCompra><Productos> <CodProducto>SKU10023</CodProducto></Productos></OrdenDeCompra>
  145. 146. Estructura XML Signature <Signature ID?> <SignedInfo> <CanonicalizationMethod/> <SignatureMethod/> (<Reference> (<Transforms>)? <DigestMethod> <DigestValue> </Reference>)+ </SignedInfo> <SignatureValue> (<KeyInfo>)? (<Object ID?>)* </Signature>
  146. 147. XML Signature: Enveloped <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>
  147. 148. XML Signature: Enveloping <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>
  148. 149. XML Signature: Detached <Signature xmlns=”http://www.w3.org/2000/09/xmldsig#”> <SignedInfo> <Reference URI=” http://www.jselman.com/imagen.jpg ”/> </SignedInfo> <SignatureValue>…</SignatureValue> <KeyInfo>…</KeyInfo> </Signature>
  149. 150. Recomendaciones Seguridad XML Signature <ul><li>Solamente lo firmado es seguro </li></ul><ul><ul><li>Especial cuidado con desechos ocurridos por transformaciones </li></ul></ul><ul><li>Solamente lo que se ve puede ser firmado </li></ul><ul><ul><li>Por ejemplo si un contrato fue presentado a un usuario mediante el uso de XML y una plantilla XSLT, ambos deben ser firmados (WYSIWYS) </li></ul></ul><ul><li>Ver lo que es firmado </li></ul><ul><ul><li>Especial cuidado con referencias a objetos que “deberían” contener cierto elemento. </li></ul></ul>
  150. 151. Ejemplo XML Signature
  151. 152. XML Encryption <ul><li>Posterior a XML Signature </li></ul><ul><li>La información cifrada es expresada en un formato común XML </li></ul><ul><li>Trozos de un documento XML pueden ser selectivamente cifrados </li></ul><ul><li>Utiliza algoritmos y técnicas de encriptación maduras </li></ul><ul><ul><li>Simétrica </li></ul></ul><ul><ul><li>Asimétrica </li></ul></ul><ul><ul><li>Híbrida (llave de sesión) </li></ul></ul><ul><li>Algunos Algoritmos </li></ul><ul><ul><li>DES </li></ul></ul><ul><ul><li>3DES </li></ul></ul><ul><ul><li>AES </li></ul></ul><ul><ul><li>… </li></ul></ul>
  152. 153. Estructura XML Encryption <EncryptedData Id? Type? MimeType? Encoding?> <EncryptionMethod/>? <ds:KeyInfo> <EncryptedKey>? <AgreementMethod>? <ds:KeyName>? <ds:RetrievalMethod>? <ds:*>? </ds:KeyInfo> <CipherData> <CipherValue>? <CipherReference URI?>? </CipherData> <EncryptionProperties>? </EncryptedData>
  153. 154. Ejemplo XML Encryption <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>
  154. 155. XKMS <ul><li>XML Key Management Specification </li></ul><ul><li>Infraestructura de llave pública (PKI) </li></ul><ul><ul><li>Repositorio de credenciales </li></ul></ul><ul><ul><li>Asociación a identidades </li></ul></ul><ul><li>Ventajas </li></ul><ul><ul><li>Complejidad reducida para los clientes </li></ul></ul><ul><ul><li>Facilita la codificación </li></ul></ul><ul><ul><li>Administración de la confianza centralizada </li></ul></ul><ul><ul><li>… </li></ul></ul>PKI Servicios Web XKMS Aplicaciones
  155. 156. SAML <ul><li>Security Assertion Markup Language </li></ul><ul><li>Especificación mantenida por OASIS </li></ul><ul><li>Transportador de identidades </li></ul><ul><li>“ Confianza Portable” </li></ul><ul><li>Requiere preestablecimiento de confianza entre los dominios </li></ul><ul><li>Potencial uso para herramientas de Single Sign-On </li></ul><ul><li>Aserciones en formato XML </li></ul><ul><ul><li>Autenticación </li></ul></ul><ul><ul><li>Atributos </li></ul></ul><ul><ul><li>Autorización </li></ul></ul><ul><li>¡Se pueden firmar con XML Signature! </li></ul>
  156. 157. Aserciones SAML <ul><li>Autenticación </li></ul><ul><ul><li>El Sujeto S fue identificado con el método M a la hora T . </li></ul></ul><ul><ul><li>Los métodos de autenticación soportados </li></ul></ul><ul><ul><ul><li>Contraseña </li></ul></ul></ul><ul><ul><ul><li>Ticket Kerberos </li></ul></ul></ul><ul><ul><ul><li>Contraseña Remota Segura (RSP) </li></ul></ul></ul><ul><ul><ul><li>Token de Hardware </li></ul></ul></ul><ul><ul><ul><li>Certificado de Cliente SSL </li></ul></ul></ul><ul><ul><ul><li>Llave Pública en un contenedor X.509 </li></ul></ul></ul><ul><ul><ul><li>Llave Pública PGP </li></ul></ul></ul><ul><ul><ul><li>Llave Pública SPKI </li></ul></ul></ul><ul><ul><ul><li>Llave Pública XKMS </li></ul></ul></ul><ul><ul><ul><li>Firma Digital XML Signature </li></ul></ul></ul><ul><li>Atributos </li></ul><ul><ul><li>El sujeto S posee los siguientes atributos: </li></ul></ul><ul><ul><ul><li>Atributo 1 : a </li></ul></ul></ul><ul><ul><ul><li>Atributo 2 : b </li></ul></ul></ul><ul><ul><ul><li>… </li></ul></ul></ul><ul><ul><ul><li>Atributo n : n </li></ul></ul></ul><ul><ul><li>Este tipo de información esta típicamente contenida en servidores LDAP. </li></ul></ul><ul><li>Autorización </li></ul><ul><ul><li>Al sujeto S se puede autorizar el acceso tipo A sobre el recurso R dada la evidencia E . </li></ul></ul>
  157. 158. Ejemplo Aserción de Autenticación <saml:Assertion MajorVersion=”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>
  158. 159. Arquitectura SAML SAML Aserción de Autenticación Aserción de Atributos Aserción de Autorización Autoridad de Autenticación Autoridad de Atributos Punto de Decisión de Políticas (PDP) Recolector de Credenciales Entidad de Sistema Punto de Hacer Valer Políticas (PEP) Requerimiento Aplicación Política Política Política
  159. 160. Ejemplo 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>
  160. 161. Token SAML <S:Envelope xmlns:S=&quot;...&quot;> <S:Header> <wsse:Security xmlns:wsse=&quot;...&quot;> <saml:Assertion MajorVersion=&quot;1&quot; MinorVersion=&quot;0&quot; AssertionID=&quot;SecurityToken-ef912422&quot; Issuer=&quot;jselman&quot; IssueInstant=&quot;2005-05-14T16:47:05.6228146-07:00&quot; xmlns:saml=&quot;urn:oasis:names:tc:SAML:1.0:assertion&quot;> ... </saml:Assertion> ... </wsse:Security> </S:Header> <S:Body> ... </S:Body> </S:Envelope>
  161. 162. Username 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>
  162. 163. Token eXtensible Rights Markup 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>
  163. 164. Token Certificado X509 <wsse:BinarySecurityToken ValueType=”wsse:X509v3” EncodingType=”wsse:Base64Binary”> NIFEPzCCA9CrAwIBAgIQEmtJZc0… </wsse:BinarySecurityToken>
  164. 165. Token XCBF <S:Envelope xmlns:S=&quot;...&quot;> <S:Header> <wsse:Security xmlns:wsse=&quot;...&quot;> <wsse:XCBFSecurityToken xmlns:wsse=&quot;http://schemas.xmlsoap.org/ws/2002/04/secext&quot; Id=&quot;XCBF-biometric-object&quot; ValueType=&quot;wsse:XCBFv1&quot; EncodingType=&quot;wsee:XER&quot;> <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>
  165. 166. WS-Security Timestamps <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>
  166. 167. Especificaciones WS-* <ul><li>WS-Policy: Define como expresar capacidades y restricciones de políticas de seguridad. </li></ul><ul><li>WS-Trust: Describe un modelo para establecer relaciones de confianza directa y a través de intermediarios. </li></ul><ul><li>WS-Privacy: Habilita a los usuarios para establecer sus preferencias de privacidad y a Web Services para establecer e implementar prácticas de privacidad. </li></ul><ul><li>WS-SecureConversation: Describe como administrar y autenticar intercambios de mensajes entre partes, incluyendo el intercambio de contextos de seguridad y el establecimiento y derivación de llaves de sesión. </li></ul><ul><li>WS-Federation: Describe la manera de administrar las relaciones de confianza en un ambiente federado heterogéneo, incluyendo soporte para identidades federadas. </li></ul><ul><li>WS-Authorization: Define como Web Services administran políticas e información de autorización. </li></ul>
  167. 168. Triángulo Seguridad Distribuida
  168. 169. Framework de Seguridad Web Services Especificaciones Base Web Services WS Security WS-Policy WS-Trust WS-Privacy WS-SecureConversation WS-Federation WS-Authorization HOY

×