APIs et Architecture Événementielle : Le Duo Gagnant

Introduction

À l’ère où les systèmes d’information doivent être performants dans la réception et le traitement des données, plusieurs approches sont développées pour répondre à ce besoin croissant de performance. Les avancées en matière de données, avec les technologies d’intelligence artificielle (IA) et d’apprentissage automatique, ont poussé les limites de nos architectures et de nos méthodologies.

Aujourd’hui, plus de 87 % du trafic Internet est axé sur les API (Interfaces de Programmation d’Applications) liées aux données. Les APIs jouent un rôle central dans cette transformation, mais elles présentent également certaines limites, notamment en ce qui concerne la communication asynchrone ou non bloquante.

Quelques rappels & Définitions

Un bref rappel sur les APIs : une API est une interface de programmation informatique permettant à des applications ou à des systèmes informatiques d’échanger des données. Parmi les types d’API, on trouve REST (Representational State Transfer), SOAP (Simple Object Access Protocol), gRPC, GraphQL, et bien d’autres. Actuellement, REST, basé sur le protocole HTTP, est le type d’API le plus couramment utilisé pour sa simplicité et sa compatibilité.

Les communications sont traditionnellement basées sur le modèle client-serveur, où le client émet une requête et attend que le serveur fournisse une réponse avant de poursuivre ses traitements. Cette approche présente des limites pour certains besoins, notamment la synchronisation de données dans une architecture orientée microservices.

C’est quoi l’Event Driven Architecture

C’est dans ce contexte que l’architecture orientée événements (Event-Driven Architecture, EDA) entre en jeu. L’EDA repose sur le principe de la diffusion d’événements et de la réaction des systèmes à ces événements. Il est important de noter que l’EDA n’est pas un type d’API, car elle sert à diffuser des événements et à permettre aux systèmes de réagir à ces derniers.

Un événement est défini comme tout changement d’état dans un système. Par exemple, la création d’un utilisateur constitue un événement (l’émetteur) qui déclenche un processus métier. D’autres systèmes peuvent souhaiter réagir à cet événement (les consommateurs). Dans une approche orientée événements, il incombe au serveur d’informer les clients qu’un événement a eu lieu, plutôt que de laisser les clients interroger le serveur pour savoir si un changement a été effectué.

L’architecture orientée événements repose sur trois acteurs principaux :

  • L’émetteur d’événements (Producer) : Il génère des événements en réponse à des actions ou des changements d’état. Ces événements sont ensuite diffusés à des consommateurs potentiels.
  • Le consommateur d’événements (Consumer) : Il écoute et réagit aux événements qui l’intéressent. Les consommateurs peuvent être des applications, des services ou des systèmes autonomes.
  • Le gestionnaire d’événements (Broker) : Il joue un rôle de médiateur entre les producteurs et les consommateurs. Il s’assure que les événements sont correctement acheminés aux consommateurs appropriés.

L’architecture orientée événements offre plusieurs avantages, notamment une meilleure réactivité, une évolutivité accrue, un découplage des composants et une gestion simplifiée des erreurs. Elle est particulièrement adaptée aux cas d’utilisation nécessitant une communication asynchrone et la diffusion en temps réel d’informations.

Plusieurs technologies existent pour mettre en place l’architecture Event Driven au sein d’un , les plus populaires sont RabbitMQ , ActieMQ , Kafka , Solace ,etc…

Apport de l’Event Driven Architecture

L’architecture orientée événements (Event-Driven Architecture, EDA) se révèle cruciale pour résoudre des problèmes de performance dans les systèmes informatiques. En effet, la performance d’un système peut être grandement impactée lorsqu’il doit réagir à des événements tels que l’ajout d’un utilisateur en attendant une action explicite du client. Cependant, l’EDA permet au système de réagir instantanément à ces événements ou d’informer d’autres serveurs nécessitant cette information. Un élément clé de l’EDA est la communication asynchrone, où chaque composant est libre de traiter un événement comme il le souhaite, sans attendre de manière synchrone, ce qui améliore considérablement la réactivité.

Il est essentiel de noter que l’Event-Driven Architecture n’est pas en soi un type d’API, mais elle peut parfaitement s’harmoniser avec les API pour renforcer les systèmes d’information. Comment l’EDA et les API peuvent-elles collaborer pour améliorer un système SI ?

Implication de APIs dans Event Driven Architecture

Déclenchement d’événements via les API : Les API peuvent être utilisées pour initier des événements. Par exemple, un composant peut exposer une API pour créer une ressource, et lorsqu’une nouvelle ressource est créée, un événement est automatiquement déclenché pour informer d’autres composants. Cette méthode garantit la systématisation des événements et permet une réaction cohérente du système.

Abonnement aux événements via les API : Les API peuvent également être utilisées pour décrire comment d’autres composants peuvent s’abonner à des événements spécifiques. Par exemple, un composant peut fournir une API permettant aux autres composants de s’abonner à des notifications en cas de modification d’une ressource particulière. Cette approche simplifie la création de flux d’informations réactifs au sein du système.

Définition du traitement des événements via les API : Les API peuvent servir à spécifier comment les composants réagissent après avoir émis ou reçu un événement. Par exemple, une API peut déterminer comment une autre application doit réagir à un événement donné en effectuant une action précise. Cela facilite l’orchestration des actions entre différents composants du système. En combinant l’EDA avec les API, les systèmes informatiques deviennent plus agiles, réactifs, robustes, évolutifs et résilients. Cette combinaison améliore la gestion des événements, la réduction des goulots d’étranglement potentiels et l’optimisation des performances, ce qui est essentiel dans un environnement numérique en constante évolution.

Conclusion

Dans les configurations globales de nos SI , plusieurs technologies concepts se heurtent pour pouvoir pallier aux problématiques de scalabilité et de fiabilité de données .
Les APIs sont une part très importantes des infrastructures informatiques ,cependant elles sont souvent couplées à d’autre concept tel que l’Event Driven Architecture qui offre une flexibilité avec les communications asynchrones .

Kong: la relève API management est assurée

Introduction

Pour la deuxième année consécutive et malgré son jeune âge, Kong est nommé leader et visionnaire par le Magic Quadrant du Gartner sur les API management.

Cette ascension fulgurante attise naturellement notre curiosité, je vous propose donc dans cet article de découvrir ensemble la solution d’API Management Kong.

Cet article s’adresse à un public familier avec les notions d’API et d’API Management.
Si ce n’est pas votre cas, je vous invite à explorer les liens ci-dessous :

     https://accetal.fr/glossaire-api-management/
     https://accetal.fr/introuduction-api-management/
     https://accetal.fr/webinar-quels-criteres-pour-bien-choisir-sa-solution-dapi-management/

Vous pouvez également si vous le souhaitez, suivre la formation complète sur les API :
     https://accetal.fr/formations/reussir-lapisation-de-son-si/

Kong, qu’est ce que c’est au juste ?

Kong, c’est d’abord Kong Gateway, une passerelle d’API Open Source et Cloud-native, qui adresse aussi bien des API, que des microservices.

Compatible avec différents systèmes d’exploitation, elle peut également être déployée via Docker ou Kubernetes.

Elle se dit légère, rapide mais aussi flexible notamment grâce à son système de plugins et de modules. Elle est ainsi proposée sous différents formats allant :

  • de la simple passerelle d’api pour le mode OPEN SOURCE,
  • à une solution complète d’API management pour le mode ENTERPRISE avec :
    • l’interface Kong Manager : un portail de gestion/publication Api
    • l’interface Kong Developer : un portail développeur
    • le module Kong Vitals : un outil de monitoring (logs, métriques, performance…)
    • le module Kong Immunity : un outil d’analyse de logs (maching learning, alertes…)
    • une gestion des contrôles d’accès de type RBAC (Role-based Access Contrôle)
    • ainsi qu’un ensemble de plugins.
Kong Modes
Credits image : Kong

En janvier 2021, Kong va encore plus loin et lance Kong Connect (Konnect), une plateforme d’administration en mode SaaS. Cette plateforme comporte un nouveau module « Runtime Manager » dont l’objet est la gestion de plusieurs nœuds Kong Gateway, tout en s’affranchissant de base de données.

Ci-dessous, la liste des modules Konnect en modes SaaS :

  • ServiceHub (équivalent de Kong Manager, pour gérer les services)
  • RuntimeManager (facilite le déploiement des runtimes de Kong Gateway)
  • Portal Developper
  • Vitals

La petite histoire : naissance de la bête

Tout commence par Mashape, une société née avec le succès montant des API dans les années 2010.

Mashape avait pour ambition de créer la première marketplace dédiée aux API, une sorte de Airbnb mais pour de la location d’API. Les fournisseurs y publiaient leurs API (description, spécification, tarification). Les développeurs accédaient alors à un catalogue d’API, qu’ils pouvaient directement tester, souscrire et surtout consommer via la plateforme Mashape.

C’est-à-dire que toutes les requêtes d’API devaient passer par une API gateway assez puissante et robuste pour gérer une telle volumétrie de transactions.

En 2015, Mashape donne un nom à cette Api Gateway et décide de la rendre open Source : c’est la naissance de Kong.

La version Enterprise fera son apparition en 2018 et en 2021 Kong donne naissance à un petit dernier très prometteur, Konnect. Celui-ci fournit le portail Konnect et la plupart de ses modules en mode SaaS, tandis que l’hébergement des runtimes restent à la charge des clients.

Avec ces nouveaux produits, Kong s’impose aux côtés d’autres géants de l’API management, et prend place dans la case Leaders du Gartner magic-quadrant-api-management de 2020 et 2021 : https://accetal.fr/magic-quadrant-api-management-2021/.

Kong dans le Gartner Magic Quadrant Api Management 2021
Gartner Magic Quadrant Api Management 2021

Dissection du gorille : qu’a-t-il dans le ventre ?

Dans le mode Enterprise, on retrouve bien tous les composants d’une plateforme de gestion d’API.

Une API gateway : « Kong Gateway »

Celle-ci se compose des éléments ci-dessous :

Kong Gateway
Kong Gateway

Un reverse proxy

Kong Gateway repose sur la plateforme web OpenResty, qui est une surcouche de Nginx combinée à un moteur LuaJIT.

  • Nginx est un serveur web et reverse proxy. Léger et rapide, il est réputé pour ses hautes performances.
  • Lua est un langage de script dont les threads peuvent se greffer à un programme existant afin d’en étendre les fonctionnalités. C’est sur ce mécanisme que repose le système de plugins de Kong Gateway.

Des plugins

Ce qu’on appelle plugins chez Kong, c’est l’équivalent des policies, c’est-à-dire des règles et actions qui sont appliquées aux requêtes et réponses qui transitent sur la Gateway (authentification, autorisations, quotas, cache…).

Kong propose aujourd’hui plus de 60 plugins, et il est possible de créer ses propres plugins en langage Lua, GO, JS et Python (liste des plugins : https://docs.konghq.com/hub/).

Une base de données

Pour la persistance des données (enregistrement des configurations des API, des déclarations d’applications …), Kong gateway donne le choix entre Cassandra et PostgreSQL, mais supporte également un mode DB-less.

Des outils d’administration

L’Api Gateway est fournie avec deux outils d’administration :

curl -X POST http://127.0.0.1:8001/services --data name=demo-api --data url=http://mockbin.org
curl -X POST http://127.0.0.1:8001/services/demo-api/routes --data paths[]=/demo-api
deck dump
deck sync

Un portail fournisseur : « Kong Manager » ou « Konnect » pour la version SaaS

« Kong manager » est une interface web d’administration de Kong Gateway. On y publie les API, gère leurs cycles de vie puis on les surveille grâce au module « Vitals ».

Il permet également de gérer et personnaliser le portail développeur.

Quant au module complémentaire de machine learning « Kong Immunity », il facilite la détection des comportements anormaux en analysant les logs en temps réels.

Portail Kong Manager
Portail Kong Manager
Portail Konnect
Portail Konnect

Un portail développeur : « Kong Developers » ou « Konnect Developers »

Le portail développeur est dédié aux consommateurs des API.

Il présente un catalogue d’API classées par catégories et est entièrement personnalisable pour correspondre à la chartre graphique d’une entreprise par exemple.

En quelques clics, les consommateurs d’API (les développeurs) sont capables de tester ces API, d’y souscrire, et de suivre leurs consommations directement depuis ce portail.

Portail Kong Developers
Portail Kong Developers
Portail Konnect Developers
Portail Konnect Developers

Place à la pratique : apprivoisons Konnect

Créer un compte

Pour commencer avec Konnect, il faut se créer un compte puis se connecter via le portail https://konnect.konghq.com/ :

Création d'un compte Konnect
Création d’un compte Konnect

Préparer une instance du runtime Kong Gateway

Une fois le compte créé, nous aurons besoins d’installer un runtime. Pour cela, cliquez sur le menu runtime sur le panneau gauche, puis sur le bouton « Configure Runtime ».

Ensuite, laissez-vous guider en suivant les instructions selon le mode de déploiement que vous souhaitez (container docker, Linux ou Kubernetes).

Le runtime configuré apparaitra sur le portail Konnect.

Runtime Manager
Runtime Manager

Publier une API

Pour notre exemple, nous allons publier l’api Petstore mise à disposition par Smartbear, très souvent utilisée pour les démos et les exemples : https://petstore.swagger.io/.

  1. Sur le portail Konnect, nous allons déclarer ce service, pour cela cliquez sur le menu « Services » du panel gauche, puis sur le bouton « Add New Service », et renseignez le formulaire avant de le soumettre.
Création d'un service
Création d’un service
  1. Cliquez sur la version déclarée (1.0.5 dans cet exemple), puis cliquez sur « New Implementation ».
Sélection de la version d'un service
Sélection de la version d’un service
  1. Configurer l’upstream service (il s’agit du service backend) comme suit :
Configuration d'un upstream
Configuration d’un upstream
  1. Configurez ensuite la route en renseignant le nom le chemin (path) qui exposera le service via la gateway :
Configuration d'une route
Configuration d’une route
  1. Cliquez sur le bouton « Create » puis tester sur la machine dans laquelle est installée le runtime de notre test : la requête ci-dessous doit retourner un code statut http 200 OK.
curl http://127.0.0.1:8000/petstores/store/inventory

A ce stade, nous avons publié notre API (dans cet exemple l’api petstore) sur notre gateway.
Cette dernière redirige les appels commençant par « http://127.0.0.1:8000/petstores… » vers http://petstore.swagger.io/v2…
Ainsi, notre appel de test a été redirigé par notre gateway vers « http://petstore.swagger.io/v2/store/inventory« .

Ajouter un plugin

Kong est extensible grâce à des plugins qui peuvent être ajoutés à différents niveaux (service, global …). Nous allons ici ajouter un plugin au niveau de notre service, celui-ci sécurisera l’accès à notre API à l’aide d’une APIKey.

  1. Dans le menu « Services », sélectionnez l’API Petstore, sélectionnez la version « 1.0.5 » puis cliquez sur « New Plugin ».
Ajout d'un plugin
Ajout d’un plugin
  1. Activez le plugin « Key Authentication » (laisser les paramètres par défaut, puis cliquez sur « Create »).
Plugin Key Authentication
Plugin Key Authentication
  1. Testez de nouveau l’api :
curl http://127.0.0.1:8000/petstores/store/inventory

Cette fois-ci un code erreur 401 est retournée car aucune apikey n’a été fournie lors de l’appel. Ce contrôle est effectué par le plugin « Key Authentication » que nous avons activé pour le service.

Créer un consommateur pour interroger l’API

Désormais, notre API nécessite une clé de souscription pour être consommée. Nous allons donc devoir déclarer un consommateur et lui attribuer une clé.

  1. Dans le menu « Shared Config/Consumers », créez un consommateur en cliquant sur le bouton « New consumer ».
Création d'un consommateur
Création d’un consommateur
  1. Sélectionnez le consumer nouvellement créé, et générez une apikey dans l’onglet « Credentials » via le bouton « new Key Auth Credentials ».
Nouveau KeyAuth
Nouveau KeyAuthNouveau KeyAuth
  1. Enfin, cliquez sur « Create » sans rien renseigner pour générer une clé automatiquement.
Création KeyAuth
Création KeyAuth
  1. Copiez la clé et envoyez la dans la requête au niveau de l’entête « apikey ».
curl --header apikey: http://127.0.0.1:8000/petstores/store/inventory

L’api-key étant renseignée, vous devriez obtenir un code statut http 200 OK.

Pour aller plus loin

Maintenant que vous savez comment publier une API sur Kong Gateway via le portail Konnect et la sécuriser à l’aide d’ApiKey, vous pouvez aller plus loin en testant d’autres plugins et en manipulant les différents modules.

Vous trouverez toute la documentation Kong disponible à cette adresse : https://docs.konghq.com/.

Je vous recommande par ailleurs de vous inscrire à Kong Academy, une plateforme d’apprentissage générant des environnements Kong éphémères au début de chaque cours.

Enfin, pour les plus curieux d’entre vous, les sources de Kong Gateway OSS sont disponibles dans le repository : https://github.com/Mashape/kong.


Vous avez des questions ? Vous souhaitez être accompagnés ? Contactez-nous !


    Accetal utilise les informations que vous fournissez afin de vous proposer des informations et du contenu personnalisé sur nos produits et services. Vous pouvez vous désinscrire de nos communications à tout moment. Pour plus d'informations, consultez notre politique de confidentialité.

    Comment être un bon API Designer ?

    Dans cet article, nous analysons ton rôle d’API Designer et les règles à suivre lors de la conception d’une ou plusieurs API mais aussi  les compétences à développer pour mener à bien tes projets, tes différentes qualités et, pour finir, tes potentiels obstacles.

    Avant d’expliciter ce qu’est un bon API designer, il nous faut définir ce qu’est le design (aussi appelé conception) d’API.

    Il s’agit du processus de définition du périmètre, des ressources nécessaires et des entrées/sorties d’une API permettant aux développeurs et/ou utilisateurs d’avoir à disposition les données et les fonctionnalités d’applications. De nos jours, les interfaces de programmation d’application font partie intégrante du fonctionnement des entreprises. Elles apportent une étendue de potentiel à plusieurs niveaux :  exploitation, produits, services, stratégies de partenariat. Même si ces API semblent être une solution idéale pour moderniser les systèmes des entreprises, il n’est pas toujours évident de savoir comment les adopter. C’est là qu’intervient ton rôle d’API Designer.

    Léonard De Vinci, à travers son œuvre intitulée « L’homme de Vitruve », montre la perfection du corps humain. Vitruve disait « Pour qu’un bâtiment soit beau, il doit posséder une symétrie et des proportions parfaites comme celles que l’on trouve dans la nature. ».

    Alors, d’après les principes vitruviens, une architecture ou un design parfait devrait se baser sur les 3 critères de la figure ci-dessous :

    La version informatique de ces 3 critères vitruviens se traduit par « Fonctionnalité, Convivialité et Expérience ».


    Afin de concevoir une API idéale, il faut donc travailler sur ces 3 axes et te poser les bonnes questions en évaluant en amont les différentes fonctionnalités que devra avoir le produit, c’est-à-dire à quelle(s) problématique(s) il répondra mais aussi en déterminant quelles seront ses interactions avec l’utilisateur. Voici quelques-unes des questions à te poser :

    • Fonctionnalité
      • L’API me permettra-t-elle d’accéder aux informations dont j’ai besoin ?
      • Est-ce que l’API fonctionnera lorsque j’en aurai besoin ?
      • Serais-je en mesure de m’y connecter ?
    • Convivialité
      • Combien de temps devrai-je me former pour débuter avec l’API ?
      • Sera-t-il pénible de comprendre son fonctionnement ?
      • Pourrais-je facilement résoudre mes erreurs moi-même ?
    • Expérience (aspect émotionnel)
      • Comment l’API me fait-elle me sentir ?

    Ce que tu dois faire

    Tu es en charge du design fonctionnel et technique d’API.

    Tu dois être capable de :

    • Bien comprendre la vision de l’entreprise et les fonctionnalités principales que l’API doit avoir.
    • Traduire cette vision en une conception API idéale (il est important d’avoir une compréhension claire de la vision métier et de ses fonctions). Réciproquement, un API designer doit être en mesure d’expliquer de manière fluide des interactions techniques en les illustrant avec des exemples réels afin d’être compris par un public non-technique.
    • Recueillir et Formaliser des spécifications fonctionnelles en se mettant dans la peau du consommateur. Tu devras resserrer la boucle de rétroaction avec les consommateurs cibles durant tout le processus.
    • Définir une offre de service adaptée à l’entreprise en intégrant des outils/pratiques de design d’API modernes
    • Etablir les livrables nécessaires pour assurer une bonne documentation pour les développeurs/utilisateurs.
    • Contribuer aux autres livrables nécessaires comme les didacticiels, bibliothèques de code et exemples de code.
    • Faire la conduite du changement.

    Ce que tu ne dois pas sous-estimer : l’expérience développeur

    L’ expérience utilisateur est souvent mise de côté lors de la conception d’APIs mais c’est une erreur. En effet, une bonne DX permet :

    • Que ton API soit utilisée par davantage de développeurs
    • Que des applications soient mises sur le marché plus facilement

    Elle se résume par :

    • Les interactions entre les développeurs et le(s) API Designer(s)
    • L’impact émotif de l’usage de l’API sur le développeur

    Les considérations essentielles de la DX sont :

    • L’Education à l’aide de documentation, de démonstrations, d’annotations, d’exemple de code, des SDKs et d’engagement auprès de la communauté des développeurs.
    • Les Interventions/Dépannages permettant de gérer les messages d’erreurs, le suivi des défauts, le temps de réparation et la documentation des erreurs.
    • La Visibilité avec le traçage des transactions, des fonctions de recherche intuitive et l’accessibilité aux applications.
    • La Gestion du changement grâce à l’historique et la gestion des versions de l’API, la rétrocompatibilité et en mettant en place un processus de mise à niveau ou de migration.
    • La Confiance à travers la stabilité de l’API, une communication honnête et transparente ainsi que l’assurance d’une sécurité fiable.

    Les obstacles que tu pourrais rencontrer

    Il arrive souvent que des problèmes surviennent lors du design d’une API. Pour les contrer au mieux, il te faut les identifier et les prévoir.

    • Des coûts supplémentaires

    Lors de la création d’un système de gestion d’API, si l’approche de l’infrastructure n’est pas adapté aux espérances des utilisateurs, des coûts lourds et inutiles peuvent être réquisitionnés.

    Faire attention à bien identifier clairement la vision de l’entreprise et du développeur avant de concevoir réellement la solution. 

    • Une sécurité capricieuse 

    Il peut arriver un moment qu’un utilisateur ait accès à l’API alors que son statut ne le lui autorisait pas. Cela pourrait mener à des actes malicieux.

    On utilise une approche à plusieurs volets comprenant l’utilisation d’une passerelle API. Celle-ci doit être en mesure de valider, autoriser et contrôler facilement l’accès des consommateurs légitimes.

    • Une perspective biaisée 

    Lors du développement d’une API, un API designer ne possède que sa propre perspective et construit tout le système selon elle. Le problème est que sa façon de voir les choses  est biaisée et elle n’est du coup, pas toujours partagée avec les utilisateurs du futur système. Cela peut provoquer des difficultés à l’utilisation de celui-ci.

    Il est alors primordial de définir un modèle d’utilisation simple et de rédiger une documentation détaillée. Pour cela, on introduit l’opinion utilisateur (les développeurs) sur toute la durée (boucle de rétroaction) du processus de développement du design d’API.

    • Des suppositions erronées

    Par ailleurs, un API designer fait souvent des hypothèses quant à l’utilisation de leur futur solution par les développeurs. Il arrive souvent que ces hypothèses soient incorrects.

    Pour parer à cette possibilité, le mieux est de concevoir une solution avec un design simple, familier et sécurisé.

    De plus, aborder l’évolutivité de l’API tôt dans le processus t’offre la possibilité d’aider à définir le succès futur et la durée de vie de ton API.

    Tes qualités

    • Avoir une appétence pour le fonctionnel (compréhension du besoin consommateur) et la technique (recherche de la meilleure solution)
    • Maîtriser des principes fondamentaux des SI et de l’écosystème digital actuel
    • Connaître les meilleurs pratiques/modèles de design d’API modernes ainsi que celles pour l’expérience utilisateur.
    • Avoir des compétences en conduite et pilotage de projets

    Les conseils à te donner

    • Se rappeler que les interfaces de programmation applicatives fondent le modèle d’affaire des entreprises digitales.
    • Saisir tous les enjeux, imbrications et conséquences de l’exposition de ses services à des tiers.
    • S’assurer que le client (développeur ou utilisateur) les a, lui aussi, correctement compris.
    • Se remémorer que les choix faits sont pris pour longtemps puisque la durée de vie d’une API est particulièrement longue.
    • Privilégier une conception d’API simple et conviviale et une bonne expérience utilisateur plutôt qu’une cohérence centralisée.

    Envie de te former ?

    Oreilly. (s.d). Formation sur l’API designer roles and responsabilities. Disponible ici : https://www.oreilly.com/library/view/hands-on-restful-api/9781788992664/1389e6f8-8f46-4a6f-81de-20015c403321.xhtml

    API academy. (s.d.). Formation sur l’API Designer. Disponible ici : https://apiacademy.learnupon.com/users/sign_in

    Gartner Magic quadrant API Management 2021, les vainqueurs et les vaincus !

    Dans cet article, nous analysons l’étude Gartner des solutions API Management. Nous nous intéressons aux évolutions du classement entre 2020 et 2021.

    Pour l’année 2021, Axway et Mulesoft prospèrent en tant que leaders et parmi les nombreux gladiateurs présents dans l’Arène, Apigee est couronnée de  lauriers !

    Les critères de l’étude et le système de classification Gartner ont très peu changé d’une année sur l’autre. Vous trouverez ces critères dans notre article 2020, nous ne reviendrons pas sur ces éléments.

    Evolution du Gartner Magic Quadrant entre 2020 et 2021

    Nous analysons et illustrons seulement les changements en reprenant le quadrant 2020 en vert et en marquant le positionnement 2021 en rouge.

    Les vaincus

    Dans la suite de leur régression dans l’édition 2020, les éditeurs visionnaires Sensedia et Torry Harris sont manquants à l’appel.

    Les nouveaux entrants de l’année 2020, Perforce avec sa solution Akana et F5 avec sa solution NGINX, jugées trop peu matures, ont quant à leurs éditeurs respectifs, complètement disparu du quadrant magique.

    Les tiros[1]

    L’éditeur indien Postman fait son apparition dans le magic quadrant et se place déjà dans les solutions visionnaires de l’année 2021.

    Parallèlement, l’éditeur américain SmartBear réintègre le magic quadrant 2020 après en avoir disparu l’année passée.

    Les ascensions notables

    Boomi, grâce à sa solution AtomSphere , toujours joueur de niche, progresse dans le magic quadrant en frôlant celles des éditeurs challengers. AtomSphere remporte le prix de la plus belle progression 2021. Il est récompensé pour :

    • Sa solution d’intégration iPaaS avec des capacités MDM et low-code
    • Sa capacité de déploiement hybride et multicloud
    • Sa présence internationale avec plus de 320 partenaires mondiaux et régionaux

    SAP, frôle lui aussi, de très près, l’espace des éditeurs challengers. Ses points forts sont :

    • Sa solution accessible via plusieurs fournisseurs de cloud en combinaison avec les offres de produits plus larges de SAP dans son BTP
    • Son ensemble de modèles de règles à télécharger pour améliorer l’expérience client
    • Ses nombreuses solutions d’intégrations exploitables à l’international,  dans de nombreux secteurs différents

    Les samnites[2]

    Microsoft, avec sa solution Azure API management, demeure cette année encore dans la case prestigieuse du cadran magique. Ses points forts sont :

    • Sa simplicité de gestion du cycle de vie des API
    • Sa présence à l’international et son portail disponible en 18 langues
    • Ses bonnes performances

    Kong, avec sa solution d’API Management Kong Konnect, prospère dans la catégorie des leaders. Ses points forts sont :

    • Sa compréhension du marché proposant du support pour la gestion d’écosystèmes et marketplaces
    • Ses capacités avancés pour la gestion du cycle de vie des API et l’intégration des outils DevOps
    • Ses bonnes performances

    Software AG propose une plateforme de gestion d’API appelée webMethods. Ses points forts sont :

    • Sa compréhension du marché proposant de nombreux services notamment les écosystèmes B2B et la modernisation des applications grâce aux microservices
    • Ses nombreuses fonctionnalités
    • Son offre de personnalisation du portail des développeurs pour les utilisateurs

    Axway, seul éditeur français positionné parmi les fournisseurs les mieux placés depuis des années, progresse encore. Les points forts de sa solution Amplify sont :

    • Sa capacité à s’intégrer et s’exécuter dans les conditions réelles et la diversité de son offre
    • Sa vision multicloud permettant aux entreprises d’opérer sur un maximum d’environnements
    • Ses partenariats avec des intégrateurs et revendeurs

    IBM API Connect reste positionné parmi les leaders du marché. Ses points forts sont :

    • Sa stratégie produit avec une bonne vision la gouvernance des interfaces non-REST
    • Ses solides capacités de sécurité
    • Sa capacité de déploiement hybride et multicloud

    Salesforce avec sa solution Mulesoft combat au coude à coude avec la solution API de google, mais sans succès cette année. Les points forts de MuleSoft sont :

    • Sa compréhension du marché avec une bonne gestion des communautés développeurs
    • Sa mise en place des Centers for Enablement (C4E) pour travailler avec des partenaires
    • Sa stratégie marketing avec de nombreux évènements et publications (livres blancs, articles, …)

    Apigee, la solution API de Google, est la grande vainqueresse du magic quadrant 2021. Son ultime coup d’épée lui a permis de prendre l’avantage son adversaire, Mulesoft, dans ce munus[3]. Les points forts de notre héroïne sont :

    • Sa compréhension des enjeux métiers avec une vision convaincante des transformations digitales
    • Son expérience utilisateur permettant aux acteurs métiers d’être embarqués dans la transformation
    • Son produit plug-and-play facile d’utilisation

    Où trouver l’article complet de Gartner ?

    Magic Quadrant for Full Life Cycle API Management. Disponible ici : https://www.gartner.com/doc/reprints?id=1-27K0VHDH&ct=210929&st=sb


    [1] Terme latin pour désigner un gladiateur novice

    [2] Terme latin pour désigner les plus anciens -redoutables- gladiateurs

    [3] Terme latin pour désigner un affrontement entre gladiateurs

    Sécuriser les API avec OAuth2

    Les API donnent accès aux applications et aux données des entreprises. Ces accès sont précieux pour les employés, les partenaires, les clients mais aussi les hackers ! Cet article vous explique comment sécuriser vos API avec OAuth2.

    La sécurité des API passe par le contrôle des accès. Chaque utilisateur, logiciel ou application est identifié pour être autorisé à consommer les ressources des API. Les méthodes d’authentification les mieux adaptés aux API REST sont OAuth2 & OpenId Connect.

    Qu’est-ce que OAuth2 ?

    Pour définir le concept : « OAuth est un protocole libre, créé par Blaine Cook et Chris Messina, qui permet d’autoriser un site web, un logiciel ou une application (dite « consommateur ») à utiliser l’API sécurisée d’un autre site web (dit « fournisseur ») pour le compte d’un utilisateur. OAuth n’est pas un protocole d’authentification, mais de « délégation d’autorisation ».

    OAuth2 permet de mettre en place une délégation d’autorisation pour accorder à une application tierce (client application) avec un accès limité sur une ressource (ressource server), avec le consentement du propriétaire de celle-ci (ressource owner).

    Les rôles OAuth2

    OAuth2 définit 4 rôles distincts :

    • Resource Owner : L’utilisateur qui a les privilèges sur les données (ex : votre compte bancaire)
    • Resource Server : Le serveur qui stocke les données d’une manière sécurisée (ex : le serveur de votre banque)
    • Client Application : L’application consommatrice de la ressource (ex : application mobile)
    • Authorization Server : Le serveur qui délivre les access token à l’application cliente.

    L’utilisation de OAuth2

    Le fonctionnement général d’une ressource ou API sécurisée par OAuth2 est le suivant :

    1. Authentification :
      • L’application cliente demande au serveur d’autorisation un jeton (= Access Token) en échange de son identifiant (clientId) et éventuellement son secret (clientSecret). C’est aussi à cette étape que l’utilisateur peut être authentifié
      • Le serveur d’autorisation vérifie les données de l’application (et de l’utilisateur s’il y en a un)
      • Il délivre à l’application cliente un Access Token qui servira de preuve d’authentification
    2. Consommation de la ressource (une fois que l’application cliente a obtenu son Access Token)
      • Dans une autre requête, l’application transmet l’Access Token au serveur de ressources
      • Le serveur de ressources vérifie que l’Access Token est valide et que ses privilèges sont suffisants pour accéder à la ressource
      • Le serveur de ressources envoie les données de la ressource à l’application cliente

    Pour éviter de demander régulièrement à l’utilisateur de saisir son login et mot de passe, OAuth2 prévoit le renouvellement de l’Access Token à l’aide d’un Refresh Token. OAuth2 prévoie aussi la révocation du Token (à utiliser par exemple à la déconnexion de l’utilisateur).

    OAuth2 a défini 4 cinématiques pour répondre à différents cas d’usage. Nous allons expliquer le fonctionnement de chacune.

    Authorization Code Grant

    L’Authorization Code Grant permet une authentification de l’utilisateur final (ou Ressource Owner) et de l’application consommatrice (ou Client), sans communiquer les identifiants (compte utilisateur et mot de passe) de l’utilisateur final.

    Ce mode d’authentification est le plus sécurisé. Il nécessite d’avoir une mire d’authentification et permet de bloquer un utilisateur en cas d’accès frauduleux.Il est à privilégier pour l’autorisation des clients tiers en capacité de conserver un « client_secret », par exemple les applications web exécutées sur le serveur.

    Diagramme de séquence « OAuth2 Authorization code Grant »

    Implicit Grant

    L’Implicit Grant permet une authentification de l’utilisateur final (ou Ressource Owner) et de l’application consommatrice, sans communiquer les identifiants (login et mot de passe) de l’utilisateur final.

    Ce mode d’authentification est moins sécurisé que le l’Authorization Code Grant car il n’utilise pas de mire d’authentification. Il est à privilégier pour les applications qui ne peuvent pas stocker un client_secret, par exemple les applications Javascript.

    Diagramme de séquence « OAuth2 Implicit Grant » 

    Password Grant

    Le Resource Owner Password Grant permet une authentification de l’utilisateur final (ou Ressource Owner) et de l’application consommatrice (ou Client). Cependant, le Client connait les identifiants de l’utilisateur final.

    Ce mode d’authentification est conçu pour les applications consommatrices de confiance en mesure de stocker un secret. Il est donc adapté aux applications web exécutées sur un serveur interne ou par un partenaire de confiance. Il peut être utilisé afin de réduction du nombre d’appels nécessitant l’Authorization Code Grant.

    Diagramme de séquence « OAuth2 Password Credentials Grant »

    Client Credentials Grant

    Le Client Credential Grant permet une authentification de l’application consommatrice (ou Client). L’identité de l’utilisateur final n’est pas connue.

    Ce mode d’authentification est conçu pour les applications consommatrices de confiance en mesure de stocker un secret. Il est donc adapté aux applications web exécutées sur un serveur tant que l’authentification se fait au niveau de l’application et pas de l’utilisateur final.

    Diagramme de séquence « OAuth2 Client Credentials Grant »

    Qu’est-ce que OpenId Connect ?

    OpenId Connect (ou OIDC) consiste en une simple couche d’identification basée sur OAuth 2.0. Ce protocole permet de vérifier l’identité d’un utilisateur auprès d’un serveur d’autorisation afin d’obtenir des informations sur cet utilisateur. Les opérations sont réalisées via des web services REST et les données sont échangées au format JSON. OpenID Connect a été conçu pour répondre aux limites de OAuth2 dans le domaine de l’authentification forte. L’objectif est de permettre à des sites tiers d’obtenir une identité de façon plus sécurisée que ne peut le faire OAuth2.

    Un accès via un token OAuth2 est mis en place quand un contexte utilisateur est nécessaire. Par exemple, dans les applications mobiles où l’utilisateur et l’application peuvent accéder à un ensemble de ressources prédéfinies telles que des informations personnelles de l’utilisateur ou autres données en provenance du Système d’Information.

    Maintenant que vous savez comment sécuriser vos API, il ne vous reste plus qu’à les exposer en tout sécurité!

    Vous avez des question sur OAuth2 ou comment sécuriser vos API ? Vous souhaitez être accompagnés ? Contactez-nous