Upload
wso2
View
452
Download
6
Embed Size (px)
Citation preview
Last Updated: Apr 2015
WSO2 API Manager y ESB la plataforma perfecta para evolucionar los servicios
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.
SanjivaWeerawarana
Hola? Somos
MMVenture Capital$30
3
4
Una plataforma completa para crear negócios conectados
4
Mountain View,
California, USA
BloomingtonIndiana, USA
London,United
Kingdom
Colombo,Sri Lanka
São Paulo,Brazil
Oficinas
5
Equipo500+
6
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 estudiosdel Mercado
7
+ de 250 Clientes
8
9
• "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
Introducción
Jack A. RiderPrincipal Software Architect & Consultant
Integration, Open Source, BPM, ECM, Portals
jack.rider [at] chakray.com
España +34 667770067
UK +44 (0) 7474742263
11
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
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 desistemas 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
Exponiendo Servicios del ESB en un API REST
• Breve Ejemplo de cómo exponer servicios
14
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
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
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
PublisherPublica APIs
Çheck Access Token
Crea Apps & Subscribe a APIs
Publish APIs
Resources
Publish APIs
Desarrollador
Aplicación cliente
17
OAuth 2.0, implementación en API Manager
PublisherPublishes APIs
Desarrolador1.- Logarse al Publisher:
2.- Añadir API.
18
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
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
OAuth 2.0, implementación en API Manager
Servidor de Autorizaciones
Store y Key
Manager
AplicaciónCliente
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 C8ygxh9d3qtTaaW2fhyAobWazY2ZCNEcyVXBOUFhUaHNpUExXbmowaUZkdjh3YTpDOHlneGg5ZDNxdFRhYVcyZmh5QW9iV2F6dElh
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
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
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
OAuth 2.0, implementación en API Manager
Servidor de Autorización
AplicaciónCliente
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","access_token":"c13e34f5acda279e862f4f6c7151f058"}
25
OAuth 2.0, implementación en API Manager
Servidor de Autorización
Store y Key
Manager
AplicaciónCliente
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
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
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
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
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
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
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 quepermite 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
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
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
Velocidad y escalamiento / alta disponibilidad
•Resultados
•Tiempos bajos de respuesta sostenidos
• Insignificantes tiempos de latencia entre API M. y ESB
35
Preguntas y Respuestas
Contact us !
Connect the World