To view recording of this webinar please use the below URL:
http://wso2.com/library/webinars/2015/04/wso2-api-manager-y-esb-la-plataforma-perfecta-para-evolucionar-los-servicios/
En nuestra presentación vamos realizar una breve introducción a estas herramientas y abordar temas relacionados con lo mencionado anteriormente, realizando ejemplos y comentando buenas prácticas. Algunos de los tópicos que mostraremos son:
Exponiendo Servicios Complejos del ESB en un API Rest
Veremos un ejemplo y hablaremos del patrón de fachada API
OAuth 2.0, su implementación en API Manager
Veremos su implementación y hablaremos de seguridad API
Los 5 secretos mejor guardados del API Manager y que deberías conocer
Relacionaremos 5 peculiaridades muy interesantes y poco conocidas
Velocidad y escalamiento / alta disponibilidad
Realizaremos alguna prueba en directo de velocidad y mostraremos diferentes patrones de clusterización
En el webinar aprenderemos como exponer servicios del ESB desde el API Manager, cual es seguridad que subyace en esta exposición, varias formas de sacar mejor partido de la herramienta y sus posibilidades de crecimiento.
[API Word 2021] - Quantum Duality of “API as a Business and a Technology”
WSO2 API Manager y ESB la plataforma perfecta para evolucionar los servicios
1. Last Updated: Apr 2015
WSO2 API Manager y ESB la
plataforma perfecta para
evolucionar los servicios
2. 2
AGENDA
• Introducción
• WSO2, Chakray
• Exponiendo Servicios Complejos del ESB en un API REST
• Veremos un ejemplo y hablaremos del patrón de fachada API
• OAuth 2.0, su implementación en API Manager
• Veremos su implementación y hablaremos de seguridad API
• Los 5 secretos mejor guardados del API Manager, que deberías conocer.
• Relacionaremos 5 peculiaridades muy interesantes y poco conocidas.
• Velocidad y escalamiento / alta disponibilidad
• Realizaremos alguna prueba en directo de velocidad.
• Preguntas y Respuestas.
7. Publication Category WSO2 Year
Gartner Magic Quadrant for Enterprise Application Platform as a Service Visionary 2014
Gartner Magic Quadrant for Application Services Governance Visionary 2013
Gartner Magic Quadrant for On-Premises Application Integration Suites Visionary 2013
Gartner Magic Quadrant for On-Premises Application Platforms Visionary 2013
The Forrester Wave API Management Platforms, Q1 Leader 2013
Gartner Magic Quadrant for Systematic SOA Application Projects Visionary 2012
Gartner Magic Quadrant for Systematic Application Integration Projects Visionary 2012
Gartner Magic Quadrant for SOA Infrastructure Projects Visionary 2012
The Forrester Wave Integrated SOA Governance, Q1 Strong Performer 2012
The Forrester Wave SOA Service Life-Cycle Management, Q1 Strong Performer 2012
The Forrester Wave Standalone SOA Management Solutions, Q4 Strong Performer 2011
Gartner Magic Quadrant for SOA Governance Technologies Visionary 2011
The Forrester Wave Enterprise Service Bus, Q2 Leader 2011
Presencia en estudios
del Mercado
7
10. • "Enfoque brillante, amor a la modularidad, lo que permite una gran
flexibilidad. Estamos muy contentos de estar trabajando con WSO2 "
- Jim Crabbe, Senior Product Manager, Boeing
• "La extrema capacidad de soporte, es lo que nos cautivó con WSO2"
- Prakash Iyer, Vicepresidente del Software Arquitectura y Estrategia, CIO,
Trimble.
• “Con el uso de WSO2 ESB, habíamos sido capaces de proporcionar a los
clientes y nuestors socios la calidad y experiencia que esperan de eBay" -
Abhinav Kumar, Gerente senior de Ingeniería de Sistemas en eBay.
¿Y los clientes, que dicen?
10
11. Introducción
Jack A. Rider
Principal Software Architect & Consultant
Integration, Open Source, BPM, ECM, Portals
jack.rider [at] chakray.com
España +34 667770067
UK +44 (0) 7474742263
11
12. Introducción
• Grupo de consultores sénior enfocados en integración con WSO2
• Preferred Partner con presencia en Europa y Sudamérica.
• Especializado en servicios a integradoras.
• Suministra Training oficial on-line y presencial.
12
13. Introducción
CHAKRAY : “Palabra Quechua que describe el buen uso que en el mundo Andino se le ha dado a la
Tecnología para el trabajo con la tierra.”
Aportar la excelencia en la planificación, implantación , soporte y formación de
sistemas críticos WSO2
Misión:
Visión: • Ser una empresa de alta especialización sobre sistemas críticos WSO2.
• Sabemos que el principal activo es nuestro equipo.
• Sabemos colaborar con todos los “Stakeholders“ del proyecto dando soporte de
muy alta calidad a los negocios de sus clientes, gestionando y evolucionando
sus Sistemas de Información.
13
15. Exponiendo Servicios del ESB en un API REST
• Patrón de Fachada
• Las fachadas nos protegen de la complejidad de las implementaciones internas
• Nos proveen de interfaces mas simples
• Proporcionan una coherente y superior experiencia de usuario.
• En nuestro caso además libera al desarrollador de preocupaciones como
• Gestionar la autorización a los consumidores
• Controlar su monitorización, monetización.
• Control en la limitación de uso (throttling)
• Simplifica la gestión del versionado
• Etc. Etc.
Wikimedia Commons
WSO2 Blogs : A pragmatic approach to the API facade-patternWSO2 Blogs : implementing an api façade with the wso2 API management platform
15
16. OAuth 2.0, implementación en API Manager
• La API es creada y publicada
• Se crea la Aplicación
• Se generan los Tokens
• Las APIs son subscritas en la Aplicación
• El consumidor obtiene el “Authorizacion Grant”
• El consumidor obtiene el “Access Token”
• El consumidor accede al recurso
OAuth (Open Authorization)
es un protocolo abierto,
propuesto por Blaine
Cook y Chris Messina, que
permite autorización segura
de una API de modo
estándar y simple para
aplicaciones de escritorio,
móviles y web.
Aplicación
cliente
Dueño del Recurso
Servidor de
Autorizaciones
Servidor de Recursos
Authorization Request
Authorization Grant
Authorization Grant
Access Token
Access Token
Resource
https://tools.ietf.org/html/rfc6749 http://es.wikipedia.org/wiki/OAuth
16
17. OAuth 2.0, implementación en API Manager
Dueño del Recurso
Servidor de
Autorizaciones
Servidor de Recursos
Authorization Request
Authorization Grant
Authorization Grant
Access Token
Access Token
Resource
Store y Key
Manager
API
Gateway
Publisher
Publica APIs
Çheck Access Token
Crea Apps & Subscribe a APIs
Publish APIs
Resources
Publish APIs
Desarrollador
Aplicación
cliente
17
18. OAuth 2.0, implementación en API Manager
Publisher
Publishes APIs
Desarrolador
1.- Logarse al Publisher:
2.- Añadir API.
18
19. 19
OAuth 2.0, implementación en API Manager
Dueño del
recurso Store y
Key
Manager
Aplicación
Cliente
Creates Apps & Subscribes
to APIs
1.- Logarse al Store
2.- Añadir/Crear Aplicación
3.- Generar Subscription Keys
20. 20
OAuth 2.0, implementación en API Manager
Dueño del
Recurso Store y
Key
Manager
Aplicación
Cliente
Creates Apps & Subscribes
to APIs
1.- Seleccionar API
2.- Seleccionar Application
3.- Pulsar “Subscribe”
21. 21
OAuth 2.0, implementación en API Manager
Servidor de
Autorizaciones
Store y
Key
Manager
Aplicación
Cliente
Authorization Grant
Authorization Token
1.- Codificar B64 “Consumer key : Secret”
2.- Enviar Solicitud de Autorizacion
Consumer Key Consumer Secret B64 Encoded (Consumer key:Consumer Secret)
cfB4G2UpNPXThsiPLWnj0iFdv8wa C8ygxh9d3qtTaaW2fhyAobWaz
Y2ZCNEcyVXBOUFhUaHNpUExXbmowaUZkdjh3YTpDOHlneGg5ZDNxdFRhYVcyZmh5
QW9iV2F6dElh
Request:
curl -k -v -d "grant_type=password&username=admin&password=admin" -H "Authorization: Basic
Y2ZCNEcyVXBOUFhUaHNpUExXbmowaUZkdjh3YTpDOHlneGg5ZDNxdFRhYVcyZmh5QW9iV2F6dElh, Content-Type:
application/x-www-form-urlencoded" https://localhost:8243/token
Response:
{"scope":"default","token_type":"Bearer","expires_in":3299,"refresh_token":"35328bcc6b129e7c0d88b46fba0d7cd","
access_token":"e6c0981142da2d806a8d397f9534a52"}
22. 22
OAuth 2.0, implementación en API Manager
1.- Enviar petición con Bearer Header
Access Token
C8ygxh9d3qtTaaW2fhyAobWaz
Request: curl -v -X GET -H "Authorization: Bearer e6c0981142da2d806a8d397f9534a52" "http://localhost:8280/return_json/red"
Response: { "color_response": { "name": "red" }}
Servidor de
Recursos
API
Gateway
Aplicación
Cliente
Authorization
Request
Authorization Grant
Key
Manager
Resources
23. 23
OAuth 2.0, implementación en API Manager
1.- Enviar petición con Bearer Header
Access Token
C8ygxh9d3qtTaaW2fhyAobWaz
Request: curl -v -X GET -H "Authorization: Bearer e6c0981142da2d806a8d397f9534a52" "http://localhost:8280/return_json/red"
Response: HTTP/1.1 401 Unauthorized <ams:message>Access Token Expired</ams:message>
Servidor de
Recursos
API
Gateway
Aplicación
Cliente
Authorization
Request
Authorization Grant
Key
Manager
24. 24
OAuth 2.0, implementación en API Manager
Servidor de
Autorización
Aplicación
Cliente
Store y
Key
Manager
Authorization
Refresh
Authorization Token
New Refresh Token New Access Token
7b32865471a287a2a3ba8fd2220b1 c13e34f5acda279e862f4f6c7151f058
1.- Codificar B64 “Consumer key : Secret”
2.- Enviar petición Authorization Refresh.
Refresh Token B64 Encoded (Consumer key:Consumer Secret)
35328bcc6b129e7c0d88b46fba0d7cd Y2ZCNEcyVXBOUFhUaHNpUExXbmowaUZkdjh3YTpDOHlneGg5ZDNxdFRhYVcyZmh5QW9iV2F6dElh
Request:
curl -k -v -d "grant_type=refresh_token&refresh_token=35328bcc6b129e7c0d88b46fba0d7cd" -H "Authorization:
Basic Y2ZCNEcyVXBOUFhUaHNpUExXbmowaUZkdjh3YTpDOHlneGg5ZDNxdFRhYVcyZmh5QW9iV2F6dElh, Content-
Type: application/x-www-form-urlencoded" https://localhost:8243/token
Response:
{"scope":"default","token_type":"Bearer","expires_in":3600,"refresh_token":"7b32865471a287a2a3ba8fd2220b1","ac
cess_token":"c13e34f5acda279e862f4f6c7151f058"}
25. 25
OAuth 2.0, implementación en API Manager
Servidor de
Autorización
Store y
Key
Manager
Aplicación
Cliente
Authorization
Refresh
Authorization Token
1.- Codificar B64 “Consumer key : Secret”
2.- Enviar Petición “Token revoke”
Refreshed Access Token B64 Encoded (Consumer key:Consumer Secret)
c13e34f5acda279e862f4f6c7151f058 Y2ZCNEcyVXBOUFhUaHNpUExXbmowaUZkdjh3YTpDOHlneGg5ZDNxdFRhYVcyZmh5QW9iV2F6dElh
Request:
curl -k -d "token=c13e34f5acda279e862f4f6c7151f058" -H "Authorization: Basic
Y2ZCNEcyVXBOUFhUaHNpUExXbmowaUZkdjh3YTpDOHlneGg5ZDNxdFRhYVcyZmh5QW9iV2F6dElh"
https://localhost:8243/revoke
Response: NO RESPONSE
26. 26
Los 5 secretos mejor guardados del API Manager
• Templates
• Los templates son las plantillas Velocity que se encargan de generar el código Synapse desde nuestras
definiciones en el Publisher.
• Respuesta Javascript
• Podemos definir APIs que directamente ejecuten código javascript en vez de llamar a un EP.
• Los builders y los formatters
• Esto son clases que se ejecutaran en el proceso de entrada y salida del mensaje dependiendo del
“contenType”. Sirven por ejemplo para validar el contenido de los mensajes antes de procesarlo.
• Servicios web nativos que expone el API Manager
• Al igual que otros productos de WSO2, API Manager expone servicios web que pueden ser utilizados
desde herramientas externas. Por ejemplo podemos con “cURL” o “SoapUI” publicar un API.
• SoapUI Plugin
• http://smartbear.com/news/news-releases/wso2-as-api-integration-partner/
27. 27
Los Templates
• Los Templates son las plantillas Velocity que se encargan de
generar el código Synapse desde nuestras definiciones en el
Publisher.
• Velocity (https://velocity.apache.org) es un sencillo motor de plantillas basado en Java
• Mediante su edición podemos automatizar la customización de nuestras APIs.
• Podemos añadir nuevos handlers.
• modificar comportamientos por defecto.
• En resumen tener control sobre la generación de nuevas APIs desde el Publisher.
• Veamos un template. [API-HOME]/repository/resources/api-templates
28. 28
Respuesta Javascript
• El API Publisher permite definir “in-line” una respuesta
Javascript a las peticiones recibidas.
• Es una solución rápida, sencilla y elegante a funcionalidades básicas.
• Ejemplo de Javascript por defecto:
mc.setProperty('CONTENT_TYPE', 'application/json');
var body = mc.getProperty('uri.var.body');
mc.setPayloadJSON('{ "data" : "sample JSON"}');
29. 29
Los builders y los formatters
•Clases que se ejecutaran en el proceso de entrada y salida del
mensaje dependiendo del “contentType”.
• Nos permite validar los payload de entrada y formatear los de salida, dependiendo del
“contentType” del mensaje.
• Son funcionalidades provistas por el motor de web services de AXIS2 que nos van
proporcionar control sobre los tipos de payload que recibimos y emitimos.
• Ver:
• https://docs.wso2.com/display/ESB480/Working+with+Message+Builders+and+
Formatters
• http://axis.apache.org
• Veamos como esta definido por defecto [AM-HOME]/repository/conf/axis2/axis2.xml
30. 30
Servicios web nativos del API Manager
•API Manager expone servicios web que pueden ser utilizados
desde herramientas externas.
• Por ejemplo podemos con “cURL” o “SoapUI” publicar un API
• La plataforma Carbon, básicamente permite hacer cualquier operación que podamos
realizar con la consola, a través de servicios web.
• Cambiar a “false” en carbon.xml el valor de “<HideAdminServiceWSDLs>”
• Acceder a: https://localhost:9443/services/UserAdmin?wsdl
• Y 15 servicios mas: ServerAdmin, LoginStatisticsAdmin, etc.
• En el caso del API Manager, además podemos acceder a los servicios que proporciona
Jaggery (http://jaggeryjs.org), con los que están construidos el Publisher y el Store.
• Los ejemplos por excelencia, podemos encontrarlos en el paquete por defecto que nos
descargamos de WSO2.
• [AM-HOME]/samples/YoutubeFeeds.jag
31. 31
API Plugin
•Smartbear, la compañía creadora de SoapUI, es desde marzo
del 2015, WSO2 API Integration Partner.
•La compañia a desarrollado un Nuevo plugin que
permite a los usuarios importer APIs desde el WSO2
API Manager a su familia de productos, Ready! API.
• http://smartbear.com/news/news-releases/wso2-as-api-integration-partner/
• http://smartbear.com/product/ready-api-family/overview/
32. 32
Velocidad y escalamiento / alta disponibilidad
•Un mensaje en formato JSON/REST puede llegar al API Manager,
ser despachado al ESB, transformarse en XML/SOAP y ser
devuelto en ¡¡menos de 4 milisegundos!!. (en mi portátil)
33. 33
Velocidad y escalamiento / alta disponibilidad
•Demostración.
• 2 Maquinas virtuales
• CentOS 6.5 Desktop 64 bit, RAM 3296m. 1 CPU
• 192.168.43.102 API Manager y Jmeter
• 192.168.43.101 ESB
34. 34
Velocidad y escalamiento / alta disponibilidad
•Resultados
•Tiempos bajos de respuesta sostenidos
•Insignificantes tiempos de latencia entre API M. y ESB