WSO2 API Manager 4.0.0

Gregory EVE
Smile with WSO2
Published in
11 min readMay 6, 2021

Une plateforme unique pour gérer vos APIs, Intégrer vos applications, et traiter vos évènements.

Après 2,5 ans, la version 3 de WSO2 API Manger tire sa révérence pour laisser la place à la version 4. Et le moins que l’on puisse dire c’est que l’éditeur n’a pas chômé! C’est du lourd, du très lourd! Lisez bien jusqu’à la fin ;)

Si l’on devait résumer les points marquant de cette version:

  • Fusion de WSO2 API Manager avec WSO2 Enterprise Integrator
  • Exposition d’APIs de streaming avec le support du standard AsyncAPI
  • Ajout d’un système de révision des configurations d’API
  • Support du multi-domaine pour les gateway
  • Fusion de certains profils de déploiement pour le mode distribué
  • Changement technologique pour les Microgateway
  • WSO2 API Analytics remonté dans le cloud

De l’exposition à l’intégration de vos APIs

Architecture de WSO2 API Manager 4.0.0

Absorption de WSO2 Enterprise Integrator

Le premier changement majeur concerne le périmètre du produit. WSO2 souhaite développer sous la marque WSO2 API Manager l’ensemble de sa stack technologique d’intégration. Exit, donc, WSO2 Enterprise Integrator. WSO2 Micro Integrator (ESB) et WSO2 Streaming Integrator (DS/CEP) seront maintenant distribués à travers le produit WSO2 API Manager.

Architecture fonctionnelle de WSO2 API Manager 4.0.0

Catalogue de services

Pour faciliter la gouvernance de l’ensemble, WSO2 ajoute une fonctionnalité de catalogue de service. A chaque fois que vous déployez un flux, sur WSO2 Micro Integrator ou WSO2 Streaming Integrator, celui-ci pourra être automatiquement déclaré au sein du catalogue de service. Et à partir du catalogue vous pourrez d’un simple clique exposer celui-ci à travers une API sur l’API Gateway.

Catalogue de services de WSO2 API Manager 4.0.0

Architecture de l’API Manager

Profils

Les profils de lancement du produit évoluent. Exit key-manager, publisher, devportal et traffic manager.

Composants de WSO2 API Manager 4.0.0

Il n’y aura maintenant plus que 4 profils possibles :

  • default: tous les composants
  • gateway-worker: uniquement la gateway
  • controle-plane: tous les composants sauf la gateway (traffic-manager désactivable par configuration)
  • traffic-manager: traffic manager seul
Architecture de déploiement distribuée de référence de WSO2 API Manager 4.0.0

WSO2 a pensé aux installations existantes en ne supprimant pas de manière abrupte les anciens profils mais en les dépréciant. Vous pouvez les utiliser en ajoutant *-deprecated à la fin des noms des anciens profils.

Déploiement des APIs par évènement

Introduit en 3.2.0, la publication des APIs est maintenant réalisée par défaut sur un modèle évènementiel. Plus concrètement, à chaque fois que vous publiez une API, un évènement est envoyé dans une file du broker de message embarqué. Les différentes gateway, abonnées à cette file, liront l’évènement et iront charger la nouvelle configuration d’API au sein de la base de données.

Processus technique de publication d’une API depuis WSO2 API Manager 3.2.0

Le premier intérêt de ce modèle est de pouvoir se passer d’un NFS pour synchroniser vos différentes gateway. Et les équipes WSO2, ayant pensé à tout, ils ont ajouté une étape de synchronisation des configurations avec la base de donnée au démarrage de chaque instance.

Le deuxième intérêt c’est que WSO2 en a profité, pour n’utiliser que des tokens JWT depuis la 3.2.0, et pour remonter la gestion du contrôle d’accès aux apis directement au sein de la gateway. Résultat, en dehors de requêtes d’introspection des tokens, il n’y a plus de requêtes entre gateway et key manager ce qui permet de faire sauter le ratio de 2 gateway pour un key manager qui existait depuis le début du produit. D’où la révision de la liste des profils réalisées par l’éditeur.

Synchronisation des politiques de quota

De même il est à noter que la gestion des politiques de quota est elle aussi remonté en base de données ce qui permet également de se passer de NFS dans ce contexte. Il ne restera plus que la problématique des User Stores secondaires à traiter! ;)

Suppression du proxy Oauth2 au sein du composant gateway

Depuis toujours nous avions l’habitude de requéter l’endpoint Oauth2, pour générer nos tokens, à travers la Gateway. La gateway, en réalité, ne faisait que passe plat vers le Key Manager. Avec la possibilité d’utiliser plusieurs Key Manager externes, depuis la 3.2.0, ce fonctionnement devenait étrange. WSO2 a donc fait le choix de supprimer ce proxy. Il vous faudra dorénavant directement interroger le Key Manager.

Nouveaux endpoints oauth 2.0 de WSO2 API Manager 4.0.0

APIs évènementielles

Standards de streaming

WSO2 API Manager étend ses capacités d’exposition en intégrant le support des APIs de streaming.

Pattern d’architecture d’exposition d’APIs de streaming avec WSO2 API Manager 4.0.0

Websocket

Il gérait déjà le Websocket vous me direz?! Oui, mais de manière très limitée, il ne faisait que du proxy. Maintenant vous allez pouvoir gérer les différents canaux, les mapper aux backends et gérer leurs droits de manière individuelle.

Contrat AsyncAPI d’une API Websocket avec possibilité de définir différents canaux

WebSub/WebHook

Le standard WebSup (anciennement PubSubHubbub) permettra à une application tierce d’enregistrer un endpoint pour être notifié d’évènements via des requêtes réalisées en POST par l’API Manager.

Echanges de messages avec le standard WebSub

Server-Sent Events (SSE)

Le standard SSE permettra à une application tierce de recevoir des évènements à travers une connexion HTTP déjà existante. WSO2 API Manager sera en capacité de renvoyer, sur demande, les messages non reçus par le client après une erreur de transport.

Echanges de messages avec le standard SSE

Standard de définition AsyncAPI

AsyncAPI, ou A2S pour les intimes c’est un nouveau standard de définition d’interface pour les APIs Asynchrones (créé en 2017 par la société Hitch). Sa spécification est fortement inspirée, et en partie compatible, avec la spécification OpenAPI.

logo du standard AsyncAPI

Ce standard vise à remplir un manque de standardisation et de définition des messages échangés criant actuellement dans ce domaine. Contrairement à OpenAPI qui décrit uniquement des interfaces HTTP, AsyncAPI reflète l’hétérogénéité du domaine en permettant la description multi-protocolaire (MQTT, Kafka, Websockets, etc.)

WSO2 API Manager intègre maintenant nativement ce standard pour définir les points d’API évènementielles avec bien sûr tout son outillage.

Ecran d’édition d’un contrat AsynAPI au sein de WSO2 API Manager 4.0.0

Gestion des révisions d’API

WSO2 API Manager gère depuis ses débuts le versionnement des APIs. Quand on parle de version d’une API on se réfère à une évolution de son contrat d’interface. Mais qu’en est-il quand on souhaite uniquement faire évoluer ses métadonnées ou sa documentation par exemple? Jusqu’à présent on écrasait les précédentes données à chaque édition et celles-ci étaient disponibles immédiatement.

Pour répondre à ce biais WSO2 vient d’ajouter la notion de révision sur une version d’API. Chaque fois que vous le jugez nécessaire vous pouvez enregistrer l’état actuel de l’API. Vous pouvez déployer explicitement une révision donnée de cette API et si elle ne vous plait pas vous pouvez restaurer la révision précédente. (WSO2 a limité à 5 révisions par API cette fonctionnalité)

Ecran de gestion des révisions d’API au sein de WSO2 API Manager 4.0.0

Microgateway, Choreo Connect

Les microgateway change de base technologique, elles ne seront plus basées sur le langage Ballerina mais sur le proxy Envoy.

Architecture de la Microgateway Choreo Connect de WSO2 API Manager 4.0.0

Elles pourront être utilisées en mode autonome, comme actuellement.

Elles pourront en plus être pilotées à distance par l’outil en ligne de commande API Controler ou le Publisher de l’API Manager pour déployer à chaud des APIs.

Il sera également possible de lui demander de réaliser de la découverte de service auprès de Consul.

Découverte de services par Choreo Connect avec Consul

L’éditeur s’est engagé à travailler sur les fonctionnalités manquantes dans les prochaines versions. À savoir : support des APIs de streaming, support des APIs GraphQL, support des API Products, authentification mutuelle/basique/clé d’api, médiation des messages et quota de bande passante.

Gestion de noms de domaine virtuelle

WSO2 API Manager permettait jusqu’à présent de créer des grappes de gateway, ou Gateway environnement, qui exposaient des APIs (de production, de sandbox ou hybride) sur un même nom de domaine.

WSO2 vient d’ajouter un nouveau niveau d’abstraction pour permettre d’ajouter des vHosts. C’est-à-dire qu’une même gateway peut exposer des APIs avec plusieurs base URL différentes (nom de domaine + path). Ainsi vous pourrez exposer à travers une même gateway 2 APIs : la première sur un domaine vhost1.com et la deuxième sur le domaine vhost2.com.

Ecran de publication sur des Hôtes virtuelles au sein de WSO2 API Manager 4.0.0

API Analytics dans le cloud

La partie anaytics du produit fait peau neuve et … migre sur le cloud! De nombreux utilisateurs avaient du mal à gérer la volumétrie d’évènement, et WSO2 souhaitait pouvoir mieux gérer l’évolution de ce composant.

Ecran de statistiques fourni pas le nouveau WSO2 API Analytics au sein de la plateforme Choreo

C’est sur la nouvelle plateforme Choreo, de l’éditeur, qu’elle est hébergée. Celle-ci est redondée, régionalisée et garantit la confidentialité des données transmises.

Nouvelle architecture de WSO2 API Analytics

Autres Améliorations relatives à l’exposition d’API

OAuth2 Mutual TLS

WSO2 API Manager implémente maintenant la RFC 8705. Ce sous standard OAuth2 permet à une application de s’authentifier par certificat plutôt que par secret. Il renforce également la sécurité en liant les access tokens générés à ce même certificat. À chaque appel d’API le consommateur devra fournir un access token et son certificat rendant le vol d’access token presque impossible.

Authentification grâce au standard OAuth 2.0 Mutual TLS

Connecteurs vers de nouveaux Key Manager externes

Depuis l’apparition de la fonctionnalité de Key Manager externe, dans la version 3.2.0, WSO2 travaille d’arrache pieds pour fournir des connecteurs avec les serveurs d’autorisation les plus standards sur le marché. A sa sortie WSO2 API Manager intégrait des connecteurs pour WSO2 Identity Server, Keycloak et Okta. Il a ajouté progressivement depuis des connecteurs pour Forgerock, Ping Federate et Auth0.

WSO2 API Manager — Key Managers externes supportées

Génération de Collection Postman

Conversion de contrats OpenAPI et GraphQL en collection Postman

Beaucoup de développeurs utilisent Postman dans leurs tâches quotidiennes. Pour faciliter leur travail WSO2 génère maintenant automatiquement un fichier de définition de collection Postman téléchargeable pour les API RESTful et GraphQL.

Ecran de téléchargement de la définition d’une collection Postman au sein du DevPortal de WSO2 API Manager 4.0.0

Gestion des commentaires

La gestion de commentaire s’enrichit enfin de 2 fonctionnalités majeures :

  • la possibilité de répondre à un commentaire
  • la possibilité de les modérer directement depuis le publisher
Ecran de réponse à des commentaires au sein de WSO2 API Manager 4.0.0

Liens communautaires

Partage d’une API à travers un réseau social
Le partage d’API via les réseaux sociaux, supprimé en version 3.0.0 est ré-introduit dans cette nouvelle version avec des liens de partage Facebook, Twitter, et Reddit.

Boutons de partage vers les réseaux sociaux d’une API

Exposition des liens communautaires liés à une API
Si vous souhaitez mettre un lien vers le dépôt Github de votre API ou un canal de support Slack c’est maintenant possible.

Boutons vers la communauté liée à une API

Autres Améliorations relatives à l’intégration

Ré-écriture du connecteur de fichier

WSO2 a changé complètement l’implémentation de son connecteur de fichier. Toujours basé sur Apache Commons VFS il bénéficie d’une configuration plus simple, de messages d’erreurs plus clairs et de performances améliorées par l’usage de cache. Il permet également en plus des fonctionnalités pré-existantes le verrouillage de fichier, la lecture d’une section précise d’un fichier (ex: ligne 10 à ligne 50) et l’écriture à la suite du contenu existant.

Intégration avec Hashicorp Vault

Vous utilisez Hashicorp? Bonne nouvelle pour vous il est maintenant possible d’utiliser Hashicorp Vault en remplacement du vault embarqué, WSO2 Secured Vault.

Moteur de template FreeMarker

le médiateur PayloadFactory supporte maintenant le moteur de template FreeMarker vous permettant de définir facilement des structures complexes.

<payloadFactory media-type="json" template-type="freemarker">
<format>
<![CDATA[{
"Name": "${payload.user.first_name} ${payload.user.last_name}",
"Age": ${payload.user.age},
"Address": "${payload.user.location.city},${payload.user.location.state.@code}" }]]>
</format>
<args/>
</payloadFactory>

Connexion à un Endpoint protégé par OAuth2

Jusqu’à présent pour intégrer un service protégé par OAuth2 vous deviez réaliser une pré-séquence qui allait récupérer un access token pour ensuite pouvoir l’utiliser. C’est maintenant terminé. WSO2 a ajouté le support du standard OAuth2 au sein même de la définition d’un endpoint.

<endpoint name="FoodEP" xmlns="http://ws.apache.org/ns/synapse">
<http method="get" uri-template="http://localhost:9192/service/foodservice">
<authentication>
<oauth>
<clientCredentials>
<clientId>K2RbnGP7VS</clientId> <clientSecret>9zLrZAYR5b</clientSecret> <tokenUrl>http://localhost:8678/token</tokenUrl>
</clientCredentials>
</oauth>
</authentication>
</http>
</endpoint>

Call depuis et vers une Property

Il est maintenant possible de dire au mediateur Call d’utiliser une requête définie dans une propriété et d’écrire la réponse de l’appel à un endpoint dans une autre propriété.

<inSequence>
<property name= "SOURCE" expression="$body//INCOMING" type="OM"/>
<log level="custom">
<property name="log" expression="$ctx:SOURCE"/>
</log>
<property name="REST_URL_POSTFIX" scope="axis2" action="remove"/>
<call>
<endpoint name="Sample">
<address uri="BACKEND_URL"></address>
</endpoint>
<source contentType="application/xml" type="property">SOURCE</source>
<target type="property">TARGET</target>
</call>
<log level="custom">
<property name="TARGET PAYLOAD" expression="$ctx:TARGET"/> </log>
<respond/>
</inSequence>

Data source Cassandra

En plus des traditionnelles bases de données JDBC, des fichiers CSV et de MongoDB il est maintenant possible d’exposer sous forme de service les données en provenance d’une base Cassandra.

Autres Améliorations relatives au streaming

Support du standard Server-Side-Events (SSE)

Pour permettre une intégration de bout en bout WSO2 à ajouter le support du standard SSE à WSO2 Streaming Integrator.

Génération de contrat AsyncAPI

WSO2 Streaming Integrator est maintenant en capacité de générer automatiquement un contrat AsyncAPI pour les protocoles Websocket, WebSub et SSE. Et bien sûr, il est capable de réaliser son enregistrement au sein du nouveau catalogue de service.

Formulaire de génération d’un contrat AsyncAPI au sein de WSO2 Streaming Integrator 4.0.0

Change Data Capture d’opérations multiple

Jusqu’à présent il n’était possible de capturer qu’un type d’opération quand vous écoutiez votre serveur de base de données. Cette limite est maintenant tombée.

Choreo

Mais au fait c’est quoi Choreo!? C’est le plus gros spoiler de WSO2 depuis longtemps pardi!

https://choreo.dev

Depuis plusieurs mois WSO2 travaille sur la mise en place d’une solution IPaaS. Ouverte en bêta privé en février et en bêta public aujourd’hui elle va vous permettre d’intégrer vos applications et d’exposer vos APIs dans une offre As-A-Service.

IDE Ballerina en ligne de la plateforme Choreo

Technologiquement cette plateforme est hébergée sur Microsoft Azure, repose sur Ballerina Swan Lake et permet de déployer des conteneurs à la volée.

Vidéo de présentation de la plateforme Choreo

Choreo remplacera courant 2022 les offres SaaS actuelles ,WSO2 API Cloud et WSO2 Integration Cloud, hébergées sur Amazon AWS.

--

--

Gregory EVE
Smile with WSO2

Solution Architect at Smile, french lover and open source supporter. Integrate, Search, Leverage and Secure your data what else?