Qu’est-ce qu’une clé API ?
Les clés API sont utilisées pour identifier et autoriser l’application ou le service appelant. Elles sont généralement de longue durée et statiques jusqu’à leur rotation et ont souvent un ensemble fixe de permissions. Elles sont principalement utilisées pour les communications de serveur à serveur ou l’accès à des données publiques, ces jetons ne représentent généralement pas un utilisateur spécifique.
Comment fonctionne une clé API ?
Une clé API est une longue chaîne de caractères générée par le fournisseur d’API et partagée avec les utilisateurs autorisés. Cette clé doit être incluse dans l’en-tête de la requête lors de l’accès à l’API. Les clés API sont simples et efficaces pour les besoins de sécurité de base. Par exemple, des services populaires comme Google Maps API et AWS fournissent des clés API pour contrôler l’accès et surveiller l’utilisation.
curl -GET https://api.example.com/endpoint -H "Authorization: api-key YOUR_API_KEY"
Les clés API ne sont pas aussi efficaces que d’autres formes d’authentification API, telles que OAuth 2.0 et JSON Web Token (JWT) , mais elles jouent toujours un rôle important en aidant les producteurs d’API à surveiller l’utilisation, car c’est la méthode la plus simple et la plus largement utilisée pour sécuriser les APIs.
Quels sont ses avantages et inconvénients ?
Avantages
- Simple à mettre en œuvre : Les clés API sont faciles à mettre en œuvre et à utiliser. Elles impliquent d’attacher une clé à l’en-tête de la requête, ce qui en fait une méthode simple pour les développeurs et les clients à comprendre et à employer.
- Facile à surveiller : Les clés API sont faciles à surveiller. Vous pouvez suivre l’utilisation de chaque clé et les révoquer si nécessaire.
- Limitation de débit efficace : Les clés API sont efficaces pour la limitation de débit. Vous pouvez définir une limite sur le nombre de requêtes par clé pour prévenir les abus.
- Adapté aux données non sensibles : Les clés API conviennent aux données non sensibles ou aux APIs publiquement disponibles, où les exigences de sécurité sont moindres.
Inconvénients
- Sécurité limitée : Les clés API ne sont pas suffisamment sécurisées pour les données sensibles, surtout pour les applications côté client. Elles sont souvent utilisées dans les communications de machine à machine.
- Pas adapté à l’authentification des utilisateurs : Les clés API sont liées aux applications ou systèmes, pas aux utilisateurs individuels, ce qui rend difficile l’identification des utilisateurs spécifiques ou le suivi de leurs actions.
- Pas d’expiration de jeton : Les clés API sont généralement statiques et n’expirent pas. Si une clé est compromise, elle pourrait être utilisée indéfiniment à moins d’être régénérée manuellement.
Quels sont les cas d’utilisation des clés API ?
- Communication de service à service : Les clés API conviennent aux scénarios où les applications doivent communiquer directement avec les APIs via des CLI. Par exemple, appeler les APIs OpenAI.
- APIs publiques : Lors de l’exposition d’APIs au public, les clés API fournissent une méthode simple de contrôle d’accès.
- Configuration simplifiée : Pour des besoins d’authentification rapides et simples, surtout en phase de développement. Contrairement à l’authentification de machine à machine, les clés API ne nécessitent pas d’enregistrement préalable du client, et n’ont pas besoin d’être échangées contre un access token. Il suffit de passer votre clé API en tant que paramètre dans votre requête et cela fonctionne simplement.
Dans des scénarios réels, l’objectif le plus courant lors de la création de produits est l’intégration de produits. Voici un cas d’utilisation typique :
Exemple : Intégration avec Stripe
Stripe utilise des clés API pour une intégration sécurisée avec différentes plateformes et applications. Vous pouvez créer, visualiser, supprimer et gérer ces clés via le tableau de bord des développeurs. En utilisant des clés API, vous pouvez intégrer les fonctionnalités de paiement et de facturation de Stripe dans votre produit.
Quelle est la différence entre les jetons d’accès personnel (PAT) et la communication de machine à machine (M2M) ?
Lorsqu’on parle de clés API, les jetons d’accès personnel et Machine-to-machine peuvent également être mentionnés ensemble puisqu’ils peuvent tous accéder aux ressources API de manière programmatique via des commandes CLI, ou établir une communication entre les services backend.
Jetons d’accès personnel (PAT)
Un jeton d’accès personnel est également une chaîne mais représente l’identité et les permissions d’un utilisateur spécifique, est généré dynamiquement lors d’une authentification ou connexion réussie, et a généralement une durée de vie limitée mais peut être rafraîchi. Il fournit un contrôle d’accès granulaire aux données et capacités spécifiques à l’utilisateur et est couramment utilisé pour les outils CLI, les scripts ou l’accès personnel aux APIs. La principale différence est qu’il est plus spécifique et utilisé pour des actions spécifiques à l’utilisateur.
Machine-to-Machine (M2M)
La communication M2M est lorsque les appareils échangent automatiquement des données sans intervention humaine dans un sens plus large.
Dans le contexte de OpenID Connect (OIDC) (ou OAuth 2.0 ), les applications M2M utilisent le Flux d'informations d'identification client (Client credentials flow) , tel que défini dans le protocole OAuth 2.0 RFC 6749 , qui prend en charge des protocoles standard similaires. Cela implique généralement qu’une application cliente (une machine ou un service) accède aux ressources soit par elle-même, soit au nom d’un utilisateur. C’est idéal pour les situations où seuls les clients de confiance peuvent accéder aux services backend.