Authentification API

Deux methodes d'authentification pour l'API : cookies de session pour le navigateur et cles API pour l'acces programmatique.

3 min de lecture

Deux methodes d'authentification

Le Bureau supporte deux methodes d'authentification pour les requetes API :

Cookies de session -- utilises automatiquement lorsque vous etes connecte au tableau de bord. Votre navigateur envoie le cookie de session avec chaque requete. Aucune configuration supplementaire necessaire.

Cles API -- utilisees pour l'acces programmatique depuis des scripts, pipelines CI/CD ou integrations tierces. Vous passez la cle dans le header HTTP x-api-key.

Les deux methodes vous donnent un acces complet a l'API. La difference reside dans la maniere dont vous obtenez et gerez les identifiants.

Lorsque vous vous connectez via Google ou GitHub OAuth, Le Bureau cree une session geree par NextAuth.js. Le cookie de session est defini automatiquement dans votre navigateur et envoye avec chaque requete vers lebureau.talentai.fr.

Vous n'avez rien de special a faire -- si vous etes connecte, les appels API depuis le navigateur fonctionnent directement. C'est ainsi que le tableau de bord communique avec l'API.

Les cookies de session sont httpOnly, secure et limites au domaine Le Bureau. Ils ne sont pas accessibles depuis JavaScript et ne conviennent pas pour une utilisation hors du navigateur.

Authentification par cle API

Pour l'acces programmatique, creez une cle API et passez-la dans le header x-api-key :

curl https://lebureau.talentai.fr/api/desktops \
  -H "x-api-key: lb_k_abc123..."

Les cles API sont :

  • Prefixees avec lb_k_ pour une identification facile
  • Stockees sous forme de hash bcrypt -- la cle en clair n'est affichee qu'une seule fois a la creation
  • Liees a votre compte -- tous les bureaux et ressources que vous possedez sont accessibles
  • Revocables a tout moment depuis le tableau de bord

Voir Cles API pour la creation et gestion des cles.

Limitation de debit

Limites de debit par endpoint :

LimiteSeuilFenetre
API generale120 requetespar minute
Echecs d'auth par cle API10 tentativespar 60 secondes par IP

Si vous depassez la limite generale, vous recevez une reponse 429 Too Many Requests. Attendez et reessayez.

Si vous envoyez 10 cles API invalides en 60 secondes depuis la meme IP, cette IP est temporairement bloquee pour l'authentification par cle API. Cela previent les attaques par force brute sur les valeurs des cles.

Erreurs d'authentification

StatutSignification
401 UnauthorizedAucun cookie de session ou cle API valide fourni
403 ForbiddenAuthentifie, mais vous n'avez pas acces a cette ressource
429 Too Many RequestsLimite de debit depassee -- ralentissez

Endpoints SSE et cles API

L'API EventSource du navigateur ne supporte pas les headers personnalises. Si vous devez consommer des endpoints SSE (comme le flux d'activite) avec une cle API, passez la cle en parametre de requete :

const eventSource = new EventSource(
  '/api/mission-control/activity/stream?apiKey=lb_k_abc123...'
);

C'est le seul cas ou la cle API devrait apparaitre dans une URL. Pour toutes les autres requetes, utilisez le header x-api-key.

Pratiques de securite

  • Ne partagez jamais les cles API dans des depots publics, des logs ou du code cote client
  • Effectuez une rotation des cles periodiquement -- revoquez l'ancienne cle et creez-en une nouvelle
  • Utilisez une cle par integration pour pouvoir revoquer l'acces de maniere granulaire
  • Surveillez le tableau de bord pour detecter toute utilisation inattendue des cles API