API Keys / Tokens
Utilisés parfois de manière interchangeable, les termes API Key (clé d'API)
et token (jeton) font référence à deux usages bien distincts. La définition en est la suivante :
- API Key : Une valeur fournie par code (dans le sens développement)
qui permet d'appeler une API (Application Programming Interface) pour identifier et autoriser
l'appelant à interagir avec le site qui fournit l'API. Son objectif est donc d'être
utilisée dans un programme et est composée généralement d'une longue série de
chiffres et de lettres.
- Token : Le jeton est une donnée qui représente une session utilisateur et
accorde certains privilèges. Son usage est généralement limité dans le temps et le jeton doit être renouvelé
pour garder sa validité.
La génération d'une clé d'API et d'un token ne se présente pas de la même façon non plus :
- API Key : La clé d'API est créée une seule fois, généralement à travers une interface utilisateur,
et reste identique jusqu'à rotation ou changement de cette clé. C'est optionnel et cette modification
peut survenir après un certain temps défini par le programme de l'éditeur de l'API. La clé
reste généralement la même très (trop ?) longtemps.
- Token : Le jeton est généré dynamiquement à la suite d'une authentification correcte
auprès d'un service. Il dispose d'un temps d'usage généralement assez court, entre quelques minutes
et plusieurs heures.
La sécurité est à considérer dans le sens où, si votre clé d'API
ou votre jeton sont compromis, quel peut être le danger potentiel :
- API Key : Fixée par programme pour donner des accès au niveau
de l'application, quiconque possède cette clé peut accéder aux ressources. Les
clés d'API étant généralement données pour de très longues périodes (jamais changée en fait)
une clé compromise peut mener à de graves problèmes. Il n'y a pas d'autre moyen que de
révoquer la clé d'API pour résoudre le problème. Il n'est pas toujours aisé de
surveiller l'usage des clés d'API.
- Token : Les jetons sont limités à des utilisateurs ou des
données spécifiques. Les notions de rôles affectés sont au coeur de leur fonctionnement.
Les jetons sont conçus pour être les plus sécurisés possibles avec des durées de vie
courte. Un jeton compromis ne donnera accès qu'à une partie accessible à l'utilisateur
et l'expiration sera automatique.
A la suite de toutes ces considérations, il y a des cas d'usage spécifiques
pour chaque type d'objet :
- API Key : Orientée pour les communications de serveur à serveur,
qu'ils soient publics ou privés (météo, systèmes tiers type ERP, ...).
- Token : Le jeton est dédié à l'authentification utilisateur et
permet l'application de droits et restrictions sur les accès temporaires donnés
à l'utilisateur connecté avec ce jeton.