Comment fonctionnent les API ?

Les API permettent aux applications d'échanger des informations en envoyant et en recevant des appels API.

Objectifs d’apprentissage

Cet article s'articule autour des points suivants :

  • Décrire le fonctionnement des API
  • Faire la différence entre un point de terminaison d'API et un client
  • Comparer différents protocoles d'API

Contenu associé


Vous souhaitez continuer à enrichir vos connaissances ?

Abonnez-vous à theNET, le récapitulatif mensuel de Cloudflare des idées les plus populaires concernant Internet !

Consultez la politique de confidentialité de Cloudflare pour en savoir plus sur la manière dont nous collectons et traitons vos données personnelles.

Copier le lien de l'article

Comment fonctionnent les API ?

Les interfaces de programmation d'applications (API) permettent aux programmes logiciels de communiquer entre eux en envoyant et en recevant des appels API, ou des demandes d'informations. Ces appels sont engagés par un client d'API et acceptés par un point de terminaison de l'API.

Afin d'échanger des informations entre les API, les développeurs doivent fournir une documentation d'API qui décrit les types d'appels qu'une API peut accepter, les cas d'utilisation qu'elle peut prendre en charge et toute autre condition (par ex. protocoles, schémas et exigences en matière de sécurité) que les tiers sont tenus de respecter.

Les appels d'API permettent aux API de partager des fonctionnalités sans exiger des développeurs qu'ils réécrivent intégralement des fonctions pour chaque application individuelle. Sans elles, les développeurs ne seraient pas en mesure de reproduire facilement des fonctions dans plusieurs applications ou de demander des données à d'autres applications, services et fournisseurs.

Qu’est-ce qu’une API ?

Une API est une interface qui permet aux logiciels de partager des données et des fonctions. Cette méthode de communication enrichit les fonctionnalités de la plupart des applications web modernes.

Imaginons par exemple qu'Alice développe une application qui personnalise les listes de lecture de musique classique en fonction de l'humeur des auditeurs. Au lieu de saisir manuellement des milliers de titres pour alimenter ces listes de lecture, elle peut utiliser une API qui se connecte à un référentiel musical externe, ce qui lui fait économiser du temps et de l'argent et simplifie les éventuelles difficultés de développement.

Les cas d'utilisation des API sont pratiquement illimités. Ils connectent les services cloud, interrogent des bases de données, mettent automatiquement à jour les applications mobiles, diffusent du contenu sur de multiples appareils, regroupent les prix des vols et les options de livraison de repas, et bien d'autres choses encore.

Qu'est-ce qu'un client d'API ?

Un client d'API, parfois appelé « utilisateur », est le logiciel qui lance un appel d'API.

Avant de pouvoir interagir avec un point de terminaison d'API, un client d'API doit vérifier son identité. Le but est d'empêcher les attaquants de servir des API pour procéder à des attaques par déni de service distribué (DDoS) ou à d'autres actions malveillantes.

En règle générale, l'authentification est réalisée à l'aide de l'une des quatre méthodes suivantes : une chaîne de caractères unique (clé API), une combinaison de nom d'utilisateur et de mot de passe, un jeton OAuth, ou mutual TLS. Le recours à une méthode d'authentification forte est l'un des moyens dont disposent les développeurs pour protéger les API contre les attaques. (Pour en savoir plus sur la sécurité des API.)

Qu'est-ce qu'un point de terminaison d'API ?

Un point de terminaison d'API accepte l'appel d'API et renvoie les informations demandées.

Les clients d'API et les points de terminaison correspondent à des programmes logiciels hébergés sur des serveurs plutôt qu'à des dispositifs matériels autonomes. Les serveurs d'API peuvent héberger plusieurs points de terminaison ; chacun d'entre eux se voit attribuer un Uniform Resource Identifier (URI) grâce auquel un client d'API peut le localiser. Dans la plupart des cas, cet URI est une Uniform Resource Locator (URL), qui pointe vers des sites Internet (par exemple, un site Web).

Qu'est-ce qu'un schéma d'API ?

Un schéma d'API est une métadonnée qui définit les spécifications auxquelles une demande d'API doit répondre pour être considérée comme valide. Ces spécifications peuvent inclure des détails tels que le point de terminaison cible, la méthode HTTP et d'autres exigences établies par les développeurs.

Lorsqu'un appel d'API est envoyé par un client, il doit remplir les conditions décrites dans le schéma. Ce n'est qu'ensuite qu'un point de terminaison d'API peut renvoyer les informations demandées. Pour mettre les choses en perspective, imaginons que Bob organise une fête. Sur l'invitation, il précise que seuls les invités qui apporteront des marguerites jaunes recevront une carte de remerciement après la fête. Si Carole décide toutefois d'apporter des roses rouges à la fête, elle ne recevra pas de carte de remerciement par la suite.

De la même façon, un appel d'API qui ne répond pas aux exigences fixées par le schéma de l'API ne recevra pas de réponse.

Qu’est-ce qu’une API ?

À l'instar des API elles-mêmes, les appels d'API varient en fonction des spécifications décrites dans la documentation de l'API. En règle générale, un appel d'API se fait selon trois étapes de base :

  1. Le client d'API lance l'appel d'API ou la demande d'informations. Le client de l'API doit formater la demande conformément au protocole et au schéma fournis par le point de terminaison de l'API.
  2. Le point de terminaison d'API reçoit la demande. Le point de terminaison d'API authentifie ensuite le client de l'API et valide le schéma d'API. Cela permet de vérifier que a) l'appel provient d'une source vérifiée et que b) les conditions de la demande ont été remplies.
  3. Le point de terminaison d'API renvoie les informations demandées au client d'API. Le schéma d'API détermine le type de réponses qui peuvent être renvoyées au client.

Pour une explication plus en détail des appels d'API, consultez la section Qu'est-ce qu'un appel d'API ?

Quels sont les protocoles et les architectures utilisés par les API ?

Les API sont prises en charge par plusieurs protocoles différents. Un protocole est une méthode de communication sur un réseau ; il indique à l'API sous quel format présenter les demandes et les réponses. Le type de protocole API utilisé dépend de l'objectif pour lequel l'API a été développée, des cas d'utilisation qu'elle sert et des restrictions qu'elle comporte.

Les deux protocoles API les plus courants sont SOAP (Simple object access protocol) et RPC (Remote procedural call). REST (Representational state transfer) est une architecture logicielle qui est souvent comparée à ces protocoles.

SOAP fournit une méthode normalisée d'envoi et de réception des appels entre API qui utilise des systèmes d'exploitation et des architectures différents. Il est également compatible avec HTTP (Hypertext transfer protocol), FTP (File transfer protocol), SMTP (Simple mail transfer protocol), et d'autres protocoles de la couche application. Il ne peut renvoyer des données aux clients d'API qu'avec le langage XML (extensible markup language).

RPC est l'une des méthodes les plus simples et les plus anciennes qui existe la communication entre API. Elle consiste à lancer un appel de procédure à distance, au cours duquel un client demande une fonction à un serveur distant. La principale différence entre RPC et SOAP/REST réside dans le fait que RPC permet d'effectuer des actions (ou fonctions) spécifiques, tandis que SOAP/REST est utilisé pour récupérer des ressources (ou données).

REST fait référence à une architecture REST, qui dicte en partie la manière dont les appels API sont formatés. Pour simplifier, REST permet à un client de demander des ressources à un serveur, qui renvoie l'information au client dans son état actuel. Les API REST appliquent souvent le protocole HTTP pour formater les demandes et les réponses, mais elles sont également compatibles avec les protocoles FTP, SMTP et autres. Elles peuvent renvoyer des données aux clients d'API dans plusieurs formats différents, notamment XML, JavaScript object notation (JSON) et hypertext markup language (HTML).

Les API sont-elles vulnérables aux risques de sécurité ?

Comme tout ce qui est connecté à un réseau, les API sont vulnérables à l'exploitation et aux abus. Les attaques courantes contre l'API sont les suivantes :

  • Attaques basées sur l'authentification : l'authentification est essentielle pour garantir que les appels d'API sont envoyés et reçus de sources légitimes. Cependant, les attaquants peuvent toujours contourner ces mesures pour lancer des attaques, en interceptant des jetons d'authentification, en volant des clés API ou à l'aide d'autres tactiques qui permettent d'obtenir des identifications.
  • Exploitation des vulnérabilités : les vulnérabilités des API telles que Broken object level authorization (Violation de l'autorisation au niveau de l'objet), Excessive Data Exposure (Exposition excessive de données), et d'autres figurant dans le Top 10 de l'OWASP en matière de sécurité des API correspondent à des failles dans une API dont les attaquants profitent pour gagner un accès sans autorisation. En exploitant ces failles, les attaquants peuvent procéder à des violations de données ou utiliser les API pour lancer des attaques plus complexes.
  • Attaques DDoS : les attaquants peuvent inonder les API d'un trafic volumétrique dans le but d'interrompre (ou d'arrêter complètement) le service fourni par les API.

Cloudflare API Gateway permet d'atténuer ces attaques par une authentification forte, une analyse des charges utiles à la recherche de données sensibles, la validation des schémas d'API et la détection et la prévention des abus d'API. En savoir plus sur Cloudflare API Gateway.