Aller au contenu

Authentification

Chaque requête porte une clé API secrète dans l’en-tête Authorization, sous forme de jeton bearer. Les clés appartiennent à un projet de votre organisation, et chacune est limitée à ce que permettent ses portées.

curl
curl https://api.kennmarq.com/v1/usage \
  -H "Authorization: Bearer $KENNMARQ_API_KEY"

Format des clés

Une clé se compose de sk_live_ ou sk_test_ suivi de 43 lettres et chiffres (256 bits aléatoires). Le préfixe indique, à vous comme à nous, dans quel environnement elle fonctionne. Le tableau de bord affiche les premiers caractères et les quatre derniers de chaque clé : vous pouvez ainsi distinguer vos clés sans le secret.

Garder les clés secrètes

  • N’utilisez les clés que depuis vos serveurs : jamais dans un navigateur, une application mobile ou un dépôt public.
  • Nous conservons l’empreinte SHA-256 de chaque clé et n’affichons la clé qu’une seule fois, à sa création. Nous ne pouvons pas l’afficher à nouveau.
  • Pour faire une rotation, créez la nouvelle clé, déployez-la, puis révoquez l’ancienne dans le tableau de bord. Une clé révoquée cesse aussitôt de fonctionner.
  • Limitez les clés de production aux adresses de vos serveurs avec une liste d’IP autorisées.
  • Chaque création, modification ou révocation de clé est consignée dans le journal d’audit de votre organisation.

Clés dans les URL

Un seul endpoint reçoit sa clé dans l’URL : POST /v1/tsa/{key}, car la bibliothèque C2PA qui l’appelle ne peut pas envoyer d’en-têtes. Une URL finit dans des journaux : cet endpoint n’accepte donc que les clés dont l’unique portée est tsa, et refuse toute autre clé avec 403 key_not_allowed_in_url. Si cela se produit, faites une rotation de la clé envoyée.

Erreurs d’authentification

Erreurs d’authentification
StatutCodeSignification
401missing_api_keyAucun en-tête Authorization: Bearer ….
401invalid_api_keyLa clé n’est pas l’une des nôtres, ou elle est mal formée.
401api_key_revokedLa clé a été révoquée, ou son projet supprimé.
403insufficient_scopeLa clé n’a pas la portée qu’exige cet endpoint.
403ip_not_allowedLa requête provient d’une adresse absente de la liste d’IP autorisées de la clé.
403key_not_allowed_in_urlUne clé dotée d’autres portées que tsa a été envoyée dans une URL.