Skip to content

Jeton dauthentification dans lapi rest

Guide d’authentification de l’API REST

L’authentification API sécurise une API REST en veillant à ce que seuls les utilisateurs authentifiés puissent accéder à ses ressources.

Mais comment fonctionne exactement l’authentification API ? Nous répondrons à cette question en décomposant les méthodes d'authentification populaires et la façon dont certaines API REST bien connues implémentent l'authentification API.

Qu’est-ce que l’authentification par API REST ?

Il s'agit du processus qui consiste à vérifier l'identité d'un utilisateur ou d'une application avant de lui accorder l'accès aux ressources de votre API REST.

L’authentification par API REST fonctionne différemment de l’authentification Web traditionnelle, où les utilisateurs se connectent généralement avec un nom d’utilisateur et un mot de passe et où une session est créée pour eux. Contrairement à la fonctionnalité « Se souvenir de moi » sur la page de connexion de votre site Web préféré, l'authentification REST, par défaut, ne conserve pas les informations de session. Chaque demande agit de manière indépendante, en se vérifiant sans s’appuyer sur les interactions passées. Cette approche sans état rend les API REST évolutives et robustes.

De plus, REST permet à ses clients de choisir leur méthode d’authentification préférée à partir d’une liste d’options standardisées, telles que les clés API, les jetons ou OAuth. Cette flexibilité favorise l’interopérabilité entre les différents services.

À lire également : Qu’est-ce que l’intégration de l’API REST ?

Authentification API REST vs autorisation

Il est également important de faire la différence entre l'authentification et l'autorisation. L’authentification confirme votre identité, tandis que l’autorisation détermine ce que vous pouvez faire.

Par exemple, l'authentification API peut vérifier l'identité de votre application, mais l'autorisation détermine alors si votre application est autorisée à modifier les données ou à accéder aux ressources sensibles. Même après avoir été authentifié, il se peut qu'un utilisateur n'ait pas accès à toutes les ressources ou fonctionnalités de l'API.

L’authentification de l’API REST constitue une bonne première ligne de sécurité pour les API REST. Il peut ensuite être associé à une autorisation pour s’assurer que les constructions de sécurité telles que le principe du moindre privilège (PoLP) sont correctement implémentées dans votre API.

Méthodes d’authentification courantes de l’API REST

Il existe plusieurs méthodes pour implémenter l’authentification dans l’API REST. Il est important de connaître les avantages et les inconvénients de chacun afin de pouvoir choisir le plus adapté en fonction des exigences, des cas d'utilisation et des contraintes de votre API.

L’authentification de base

est une méthode simple et rapide d’authentification HTTP. Pour accéder au point de terminaison d’API, l’utilisateur doit envoyer un nom d’utilisateur et un mot de passe au fournisseur d’API dans l’en-tête d’authentification de la demande. L’API Le fournisseur vérifie les informations d’identification et, en cas de succès, accorde l’accès à l’utilisateur.

Voyons comment vous implémenteriez l'authentification de base en Python. Cet exemple montre comment vous pouvez encoder des informations d’identification avec la bibliothèque base64, puis les ajouter à l’en-tête Authorization avec le préfixe Basic. Vous pouvez ensuite utiliser cet en-tête pour accéder au point de terminaison de l’API avec la méthode requests.get() :

L’authentification de base est simple à mettre en œuvre et nécessite une très faible surcharge de traitement sur le serveur. Cependant, les informations d’identification envoyées dans le cadre d’une telle demande voyagent non chiffrées (éventuellement uniquement codées), ce qui les rend vulnérables à l’interception. De plus, étant donné que l’authentification de base est assez simple et directe, vous ne disposez pas d’un contrôle avancé, tel que le provisionnement et la révocation d’accès granulaires.

Il serait logique d’utiliser l’authentification de base lors de la création d’API internes, à des fins de test ou lorsque vous traitez avec des clients de confiance dans des environnements sécurisés. Toutefois, si vous traitez des données sensibles dans des API publiques ou si votre cas d'utilisation nécessite un contrôle d'accès précis, vous devriez examiner certaines des alternatives les plus sécurisées de cette liste.

À lire également : Ce que vous devez savoir sur les limites de débit de l’API REST

Authentification par clé API

Dans l’authentification par clé API, le fournisseur d’API attribue une clé unique à chaque client accédant à l’API. Le client doit inclure sa clé API dans le cadre de la demande d’authentification. La clé API peut être incluse n’importe où dans la requête, comme l’en-tête, le corps ou les paramètres de requête. En fin de compte, cela dépend de la conception de l'API et est communiqué aux développeurs via la documentation de l'API.

L’exemple suivant montre comment s’authentifier auprès d’une API REST qui utilise des clés API en Python à l’aide de la bibliothèque de requêtes. Il ajoute une chaîne qui contient la clé API dans l’en-tête d’autorisation avec le préfixe api-key et utilise cet en-tête lors de l’envoi d’une requête à l’API.

L’authentification par clé API est particulièrement simple à mettre en œuvre. Vous pouvez même attribuer des ensembles d’autorisations dédiés à des clés API individuelles, ce qui en fait un choix populaire pour les scénarios où un niveau de sécurité modéré est suffisant. Un autre avantage est qu’il vous permet de mettre en œuvre la révocation de la clé API. Si une clé est compromise, le serveur peut la révoquer afin que le client puisse en demander une nouvelle.

Cependant, cette méthode n’est que modérément sûre. Si le réseau API est vulnérable, les attaquants peuvent intercepter la clé API et l’utiliser à des fins malveillantes jusqu’à ce qu’elle expire ou soit désactivée manuellement. Par conséquent, évitez d’utiliser cette méthode lorsque vous manipulez des données hautement sensibles ou lorsque vous devez suivre l’activité des utilisateurs à des fins de journalisation ou d’audit.

Relatif : Quoi est une clé API ?

L'

authentification basée sur un jeton, également appelée authentification du porteur, est une méthode d'authentification populaire qui utilise un jeton d'accès pour vérifier l'identité d'un utilisateur.

Alors que les clés API sont utilisées pour identifier les clients, c’est-à-dire le site ou l’application qui effectue un appel, les jetons sont utilisés pour identifier les utilisateurs car ils contiennent des informations supplémentaires sur l’utilisateur. Contrairement aux autres méthodes décrites jusqu’à présent, les jetons peuvent être dynamiques, ce qui signifie que vous pouvez générer des jetons à la volée à l’aide d’un flux de génération de jetons dédié intégré à l’API. Cela permet de générer des jetons uniques et de courte durée en fonction du cas d’utilisation immédiat des utilisateurs.

Les jetons peuvent être personnalisés pour être spécifiques à l’appareil ou à l’utilisateur. Cela signifie que vous pouvez également (dans une certaine mesure) vérifier l’authenticité d’un jeton sur votre serveur avant de traiter une demande. Cela renforce encore la sécurité de votre API.

Prenons un exemple d'authentification avec une API REST qui nécessite un jeton de porteur. Pour accéder au point de terminaison de l’API, il suffit d’ajouter un jeton avec le préfixe « Bearer » à l’en-tête d’autorisation de la demande :

l’authentification basée sur le jeton est l’une des méthodes les plus sécurisées d’authentification des API REST. Ils minimisent le risque d’interception car ils peuvent être cryptés et sont généralement de courte durée, et ils peuvent offrir un contrôle d’accès granulaire.

Cependant, les jetons nécessitent une conception et une infrastructure minutieuses. Elles sont, en général, plus complexes à mettre en œuvre par rapport aux autres méthodes, et le processus de génération de jetons peut ajouter une certaine surcharge de traitement au serveur.

L’utilisation de l’authentification basée sur les jetons est la plus logique lorsqu’il s’agit de gérer des données sensibles dans des API publiques ou de créer des écosystèmes d’API complexes et évolutifs. Si la simplicité et l’efficacité des ressources sont votre priorité préoccupations, il est préférable d’utiliser une méthode plus simple.

Pour

mieux comprendre comment les différentes méthodes d'authentification API REST fonctionnent en pratique, voyons comment certains produits bien connus implémentent l'authentification pour leurs API REST.

BambooHR

, un système d’information sur les ressources humaines (SIRH) populaire, fournit une API REST à intégrer à des applications tierces.

L'API REST de BambooHR utilise une clé API pour l'authentification. La clé API est envoyée via l’authentification HTTP de base en tant que nom d’utilisateur, et le mot de passe peut être n’importe quelle chaîne aléatoire.

Pour accéder à ses points de terminaison d’API, vous devez ajouter des informations d’identification au format « {utilisateur} :{mot de passe} » dans l’en-tête d’autorisation avec le préfixe Basic. Vous devez ensuite passer la clé API en tant qu’utilisateur et une chaîne aléatoire en tant que mot de passe.

Greenhouse

Greenhouse est un système de suivi des candidats (ATS) populaire qui propose cinq API différentes.

L’un d’entre eux, Harvest, qui vous permet de gérer les offres d’emploi ouvertes, les données des candidats, etc., utilise l’authentification de base. Pour accéder à l’API Harvest, vous devez passer la clé API comme nom d’utilisateur et laisser le mot de passe vide.

Par exemple, si la valeur de l’en-tête d’autorisation ressemble à « {user} », où l’utilisateur est la clé API, le code d’authentification peut ressembler à ce qui suit :

Box

Box est une plate-forme cloud qui fournit des outils pour la gestion de contenu, la collaboration, la signature numérique et d’autres opérations commerciales. Il garantit la sécurité de l’API avec une authentification basée sur des jetons. En fonction des fonctions de l'API dans l'application, celle-ci utilise différentes méthodes pour obtenir le jeton : OAuth 2.0, JWT ou l'octroi des informations d'identification du client.

Voici à quoi peut ressembler le code d'authentification :

À lire également : Guide pour tester les intégrations d'API Meilleures

pratiques pour l'authentification d'API

Le respect des bonnes pratiques peut protéger votre API contre le piratage et les accès non autorisés. Nous en examinerons quelques-uns des plus importants ci-dessous.

Pour

une authentification de base, il est important d'utiliser des mots de passe forts, car ils sont difficiles à deviner pour les attaquants.

Utilisez la validation de mot de passe pour exiger des utilisateurs qu’ils créent des mots de passe forts en appliquant une politique de mot de passe robuste :

  • Longueur minimale : Appliquez une longueur de mot de passe minimale de douze caractères, de préférence plus longue.
  • Complexité : Nécessite une combinaison de lettres majuscules et minuscules, chiffres et caractères spéciaux.
  • Unicité : encouragez l’utilisation de mots de passe uniques pour chaque compte API, en éliminant la réutilisation d’un mot de passe dans plusieurs services.
  • Mises à jour régulières : Exigez des changements de mot de passe réguliers, idéalement tous les trois à six mois, pour limiter la fenêtre de vulnérabilité.

De plus, stocker les mots de passe en texte brut est une invitation au désastre. Mettez en place des algorithmes de hachage de mots de passe comme Argon2 ou bcrypt avant de stocker les mots de passe dans votre base de données. Ces algorithmes transforment les mots de passe en chaînes irréversibles, les rendant inutilisables même s’ils sont interceptés.

Mettre en œuvre la révocation du jeton pour l’authentification basée sur le jeton

La révocation du jeton est le processus d’invalidation d’un jeton avant son expiration.

Si un jeton est compromis, la révocation du jeton vous permet de révoquer le jeton pour empêcher d’accéder à des informations sensibles. De plus, lorsque vous modifiez les droits d'accès ou les autorisations d'un utilisateur, la révocation du jeton et l'émission d'un nouveau jeton garantissent que les autorisations mises à jour sont appliquées.

Dans OAuth 2.0, le mécanisme de révocation de jeton est implémenté à l’aide d’un point de terminaison de révocation de jeton. Pour révoquer un jeton, les clients doivent envoyer une demande à ce point de terminaison, en indiquant quel jeton doit être révoqué. D’autres protocoles d’authentification peuvent avoir différentes façons d’effectuer la révocation de jeton.

La

durée de la session est le temps qu’un utilisateur passe sur un site Web au cours d’une session. Dans le contexte des API, vous pouvez limiter la durée de la session à l'aide de l'expiration du jeton.

Lors de la configuration de l'expiration du jeton pour une API, il est important de trouver un équilibre entre la sécurité et l'expérience utilisateur. La définition d’une expiration trop courte peut obliger les clients à Réauthentifiez-vous trop fréquemment, tandis qu’une définition trop longue peut entraîner un risque de sécurité. Tenez compte de la sensibilité des données et des opérations fournies par votre API lors de la détermination de l’expiration du jeton.

Implémenter des listes de contrôle d'accès

Une liste de contrôle d'accès (ACL) est un ensemble de règles qui déterminent quels utilisateurs et systèmes sont autorisés à accéder à certaines ressources API et quelles actions ils sont autorisés à effectuer.

Les listes de contrôle d’accès sont utilisées avec les méthodes d’authentification API courantes pour vérifier si l’utilisateur authentifié est autorisé à accéder à la ressource cible. Cela ajoute une couche de sécurité supplémentaire par rapport à vos constructions de contrôle d’accès habituelles basées sur un jeton ou OpenID. Si vous créez des API publiques très sensibles qui permettent d'accéder à plusieurs types de données via une interface commune, il est préférable d'utiliser des listes de contrôle d'accès pour renforcer votre sécurité.

Relatif : 7 Intégration API Construisez

des intégrations sécurisées à grande échelle avec Merge

Si vous cherchez à intégrer votre produit aux applications tierces utilisées par vos clients et prospects, le processus d'adaptation à l'approche d'authentification de chaque API peut rapidement submerger vos ingénieurs.

Vous pouvez contourner complètement cela en créant simplement l'API unifiée de Merge.

En vous appuyant sur notre API unifiée, vous pourrez également accéder à des centaines d'intégrations dans des catégories de logiciels populaires, du SIRH au CRM en passant par ATS, et recevoir l'assistance à la maintenance et les outils de gestion dont vous avez besoin pour fournir des intégrations fiables et performantes.

Vous pouvez en savoir plus sur Merge en programmant une démo avec l’un de nos experts en intégration.

À propos de l’auteur

Nataliia Fedchenko

À propos de l'auteur

Nataliia Fedchenko

Jon Gitlin est le rédacteur en chef du blog de Merge. Il possède plusieurs années d’expérience dans le domaine de l’intégration et de l’automatisation ; avant Merge, il a travaillé chez Workato, une solution de plateforme d'intégration en tant que service (iPaaS), où il gérait également le blog de l'entreprise. Pendant son temps libre, il aime regarder des matchs de football, faire de longues courses dans les parcs et explorer les restaurants locaux.