charla web services
Post on 18-Nov-2014
9.767 Views
Preview:
DESCRIPTION
TRANSCRIPT
Arquitectura de Arquitectura de Servicios WebServicios Web
José Miguel Selman G.José Miguel Selman G.
jjose.selman@gmail.comose.selman@gmail.com
Conceptos, Aplicaciones, Buenas Prácticas, Actualidad y Tendencias
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……
PresentacionesPresentaciones
Cargo/RolCargo/Rol Empresa/AreaEmpresa/Area ExpectativasExpectativas
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
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
Pero ha evolucionado…Pero ha evolucionado…
WebWeb 2.0
¿Web 3.0?
?
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
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
EDI
RPCs
Corba
COM XML
SOAPWSDL
WS-Stack
RMI199719901970
2000
1980 (*)
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
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
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
Quienes aparecen Quienes aparecen siempre…siempre…
Y muchos otros…
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)
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
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
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
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
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í
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
Otras PreocupacionesOtras Preocupaciones
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.
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
¿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
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
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.
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
WSDLWSDL
Service
Port(e.g. http://host/svc)
Binding(e.g. SOAP)
Interfaz Abstracta
portType
operation(s)
inMesage outMessage
Port
Binding
WSDL ejemploWSDL ejemplo
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
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
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
Ejemplos SOAPEjemplos SOAP
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
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="<claim061400a.xml@claiming-it.com>"start="<claim061400a.xml@claiming-it.com>" 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: <claim061400a.xml@claiming-it.com>Content-ID: <claim061400a.xml@claiming-it.com>
<?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:claim061400a.tiff@claiming-it.com"/><theSignedForm href="cid:claim061400a.tiff@claiming-it.com"/> <theCrashPhoto href="cid:claim061400a.jpeg@claiming-it.com"/><theCrashPhoto href="cid:claim061400a.jpeg@claiming-it.com"/> <!-- ... 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: <claim061400a.tiff@claiming-it.com>Content-ID: <claim061400a.tiff@claiming-it.com>
...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: <claim061400a.jpeg@claiming-it.com>Content-ID: <claim061400a.jpeg@claiming-it.com>
...Raw JPEG image.....Raw JPEG image.. --MIME_boundary-- --MIME_boundary--
SOAPSOAP
SOAPSOAP
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
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)
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…)
Consultas UDDIConsultas UDDI
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.
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
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
……
Seguridad en Servicios Seguridad en Servicios WebWeb
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 ……
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
¿De qué debemos ¿De qué debemos proteger nuestras proteger nuestras aplicaciones?aplicaciones?
Violación de Confidencialidad Violación de Integridad
Ataque de Repetición
Ataques AplicacionesAtaques Aplicaciones
Ataque del Intermediario (conocido como “Man in the Middle”)
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 ……
Requerimientos de Requerimientos de SeguridadSeguridad AutenticaciónAutenticación AutorizaciónAutorización ConfidencialidadConfidencialidad IntegridadIntegridad No repudiaciónNo repudiación Alta DisponibilidadAlta Disponibilidad
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
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
…
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
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
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
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.
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>
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>
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
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.
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
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
Composición de Composición de Servicios WebServicios Web
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
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
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
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
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
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
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”
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
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
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
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 …
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
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
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>
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
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>
Ejemplo documento BPELEjemplo documento BPEL
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
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
¿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
WS-I Web Services WS-I Web Services InteroperabilityInteroperability
http://www.ws-i.org/
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
WS-I, Standards, and IndustryWS-I Web Services WS-I Web Services InteroperabilityInteroperability
• 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?
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?
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?
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…
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…
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
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
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
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
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
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
Manos a la obraManos a la obra……
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 ……
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
WS con NetBeansWS con NetBeans
Vista de DiseñoVista de Diseño
Probando nuestro Probando nuestro ServicioServicio
Recomendaciones y Recomendaciones y Buenas PrácticasBuenas Prácticas
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
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)
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
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
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
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
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
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 ……..
Aplicaciones y Aplicaciones y ExtensionesExtensiones
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??
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
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
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
OWL-S: Relación WSDLOWL-S: Relación WSDL
Más información: http://www.w3.org/Submission/2004/SUBM-OWL-S-20041122/
Discusión OWL-SDiscusión OWL-S
¿Aplicable hoy?¿Aplicable hoy?
Introducción a GridIntroducción a GridServicesServices
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
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
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”):
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/
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
Infraestructura Grid: Vista Infraestructura Grid: Vista ConceptualConceptual
Más Información: http://www.globus.org/ogsa/
Portales y WSRPPortales y WSRP
http://www.ibm.com/developerworks/webservices/library/ws-wsrp/
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
WSRP: Productores y WSRP: Productores y ConsumidoresConsumidores
Portal con WSRPPortal con WSRP
Rich Internet Rich Internet Applications: Applications:
Ajax, REST y másAjax, REST y más……
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
Aplicaciones RIAAplicaciones RIA
Modelo SíncronoModelo Síncrono
Actividad de Usuario Actividad de Usuario Actividad de Usuario
Procesamiento en Servidor
Procesamiento en Servidor
Modelo AsíncronoModelo Asíncrono
Browser
Motor AJAX
InputUsuario 1
InputUsuario 2
RenderRespuesta 1
RenderRespuesta 2
Procesamiento en Servidor
Procesamiento en Servidor
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…
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
JSONJSON
JJavaavaSScript cript OObject bject NNotationotation
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…
PreguntasPreguntas
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
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
Tipos de Firmas XML Tipos de Firmas XML SignatureSignature
<Signature> <Reference>
<ElementoFirmado>
Enveloping
<ElementoEnvolvente>
<Signature> <Reference>
Enveloped
<DocumentoXML>
<Signature> <Reference>
Detached
<ElementoDestino>
CanonicalizaciónCanonicalización
<OrdenDeCompra>
<Productos>
<CodProducto>
SKU10023
</CodProducto>
</Productos>
</OrdenDeCompra>
<OrdenDeCompra><Productos><CodProducto>SKU10023</CodProducto></Productos></OrdenDeCompra>
• c14n• Consenso común• XSLT
Estructura XML Estructura XML SignatureSignature
<Signature ID?>
<SignedInfo>
<CanonicalizationMethod/>
<SignatureMethod/>
(<Reference>
(<Transforms>)?
<DigestMethod>
<DigestValue>
</Reference>)+
</SignedInfo>
<SignatureValue>
(<KeyInfo>)?
(<Object ID?>)*
</Signature>
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>
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>
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>
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.
Ejemplo XML SignatureEjemplo XML Signature
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– ……
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>
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>
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
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!
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. .
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>
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
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>
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>
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>
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>
164164
Token Certificado X509Token Certificado X509
<wsse:BinarySecurityToken ValueType=”wsse:X509v3” EncodingType=”wsse:Base64Binary”>
NIFEPzCCA9CrAwIBAgIQEmtJZc0…
</wsse:BinarySecurityToken>
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>
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>
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.
168168
Triángulo Seguridad Triángulo Seguridad DistribuidaDistribuida
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
top related