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

Un point de terminaison d'API désigne l'extrémité d'une connexion API, c'est-à-dire l'endroit qui reçoit les appels d'API.

Objectifs d’apprentissage

Cet article s'articule autour des points suivants :

  • Définir un point de terminaison d'API.
  • Comprendre pourquoi les points de terminaison d'API utilisent des URL.
  • Saisir l'importance de l'authentification pour les points de terminaison d'API.

Copier le lien de l'article

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

Une interface de programmation d'application (API, Application Programming Interface) constitue un moyen pour une application donnée de demander un service à une autre application. Les API évitent aux développeurs de devoir rebâtir les fonctionnalités qui existent déjà au sein d'une application. Le point de terminaison d'API désigne l'endroit où ces requêtes (connues sous le nom d'appels d'API) sont satisfaites.

Ainsi, si Alice et Bob dialoguent au téléphone, les paroles d'Alice circulent vers Bob et vice versa. Alice adresse alors ses paroles vers le « point de terminaison » de la conversation, c'est-à-dire Bob.

Alice : « Bonjour, Bob » ----------> Bob

Sur un schéma similaire, une intégration d'API ressemble à une conversation, si ce n'est qu'au lieu de dire « Bonjour », un client d'API envoie un énoncé du type « J'ai besoin de données » au serveur de l'API, en effectuant ainsi un appel d'API. Le point de terminaison du serveur d'API annonce alors « Voilà les données », selon un processus que l'on nomme « réponse d'API ». En outre, les points de terminaison d'API ne sont pas des entités physiques, comme Alice et Bob : ils existent sous forme logicielle, pas matérielle.

Serveurs d'API et clients d'API

Les API sont hébergées sur un ou plusieurs serveurs, c'est-à-dire des ordinateurs spécialisés qui stockent les données et exécutent des programmes informatiques. Chaque serveur « sert » (transmet) les données, le contenu et les fonctionnalités logicielles à d'autres appareils situés sur Internet. Le point de terminaison d'API est presque toujours hébergé sur un serveur.

L'autre extrémité d'une connexion d'API est constituée par le client d'API, c'est-à-dire l'entité qui demande des services à l'API. Certains appellent ce client « l'utilisateur » de l'API, bien que la plus grande partie des appels d'API soient automatisés.

Comment un client d'API parvient-il à connaître le point de terminaison d'un serveur ?

Pour être utilisable, une API doit disposer d'une documentation. Entre autres informations, cette documentation indique les types de requêtes acceptés par l'API, ce que l'API peut accomplir, la manière dont l'API formate ses réponses, ainsi que la localisation de ses points de terminaison. Les développeurs peuvent étudier la documentation d'une API et intégrer directement ces informations pendant le processus de développement de leurs applications.

À titre d'exemple, vous trouverez la documentation de l'API de Cloudflare (indiquant notamment la localisation de ses points de terminaison) à cette adresse : https://api.cloudflare.com/.

Comment les API utilisent-elles les URL ?

Les « Uniform Resource Locators » (URL, localisateurs uniformes de ressources) sont utilisés à plusieurs fins sur Internet, notamment la localisation des pages web. Pour prendre un exemple, l'URL de la version française de cette page web est https://www.cloudflare.com/fr-fr/learning/security/api/what-is-api-endpoint/. Lorsqu'un utilisateur saisit cette URL dans son navigateur, ce dernier sait à quel endroit trouver cette page web et la charger.

Les URL indiquent également les points de terminaison d'API. Quand Alice et Bob parlent au téléphone, Alice appelle Bob en composant le numéro de téléphone de ce dernier. De manière similaire, l'URL d'un point de terminaison d'API se comporte comme un numéro de téléphone pour ce qui est des appels d'API.

Comme un serveur d'API peut héberger un ou plusieurs points de terminaison d'API, il acceptera et traitera donc les appels adressés aux URL de ces derniers. Les clients d'API ont également besoin d'avoir une URL afin que le serveur d'API sache à quel endroit envoyer ses réponses, tout comme Bob et Alice ont tous deux besoin d'un numéro de téléphone pour que la liaison téléphonique puisse fonctionner. Les développeurs définissent cette URL lors du développement de leurs applications.

Une URL inclut toujours le protocole de couche applicative (par exemple, HTTP) utilisé pour l'atteindre. La plus grande partie des API web s'appuient sur le HTTP. Ce protocole est donc inclus dans l'URL des points de terminaison d'API.

Comment les points de terminaison et les clients d'API s'authentifient-ils ?

Une API correctement conçue n'accepte pas d'appels d'API de la part de n'importe qui. Ce mode opératoire laisserait le serveur d'API ouvert à l'envoi de données nuisibles par les acteurs malveillants. En outre, l'utilisation d'une API coûte souvent de l'argent. Aussi, dans ce type de cas, le serveur d'API doit donc vérifier que l'appel d'API provient d'un client payant.

Pour toutes ces raisons, le serveur d'API doit s'assurer que le client d'API à l'origine de l'appel est bien connu et de confiance. Il y parvient par le biais de l'authentification.

L'authentification désigne le processus suivi pour vérifier une identité. Tout comme un utilisateur humain peut s'authentifier sur un système de plusieurs façons, les points de terminaison d'API disposent de quatre moyens principaux pour assurer l'authentification :

  1. Clé d'API : le client d'API se voit attribuer une clé, c'est-à-dire une chaîne unique de caractères connue uniquement de ce dernier et du service de l'API. Lorsque le client d'API adresse un appel d'API au point de terminaison du serveur, il y intègre la clé afin que le serveur puisse savoir d'où l'appel provient.
  2. Authentification de base (nom d'utilisateur et mot de passe) : de manière similaire à l'approche avec clé, le client d'API définit un nom d'utilisateur et un mot de passe auprès du service d'API, avant d'inclure ces identifiants dans les appels d'API.
  3. Jeton OAuth : plutôt que de demander une authentification au client, un serveur d'API peut obtenir un jeton d'authentification auprès d'un serveur d'authentification utilisant le protocole OAuth.
  4. TLS à authentification réciproque : le protocole TLS permet d'établir une connexion authentifiée entre le client et le serveur lors du chargement des pages web. Il permet également d'authentifier les deux parties d'une intégration d'API.

Dans de nombreux cas, la méthode TLS à authentification réciproque se révèle la plus efficace. En premier lieu, elle authentifie à la fois le point de terminaison et le client (pas uniquement le client donc), afin que les deux parties puissent être sûres qu'elles reçoivent des données d'une source légitime. Elle met également en œuvre des clés privées, qui ne sont jamais partagées entre les points de terminaison et ne peuvent donc être interceptées pendant le transit. En second lieu, les clés d'API, les mots de passe et les jetons peuvent faire l'objet d'une duplication ou d'un vol.

La solution API Shield de Cloudflare s'appuie sur la méthode TLS à authentification réciproque pour authentifier les points de terminaison et les clients d'API, afin d'aider à protéger les deux parties contre les attaques. Le service API Shield propose également plusieurs autres fonctionnalités de sécurité des API, comme la limitation du débit et la prévention des pertes de données (DLP). Vous trouverez plus d'informations sur la solution API Shield ici.

Service commercial