Authentification API
Deux methodes d'authentification pour l'API : cookies de session pour le navigateur et cles API pour l'acces programmatique.
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.
Authentification par cookie de session
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 :
| Limite | Seuil | Fenetre |
|---|---|---|
| API generale | 120 requetes | par minute |
| Echecs d'auth par cle API | 10 tentatives | par 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
| Statut | Signification |
|---|---|
401 Unauthorized | Aucun cookie de session ou cle API valide fourni |
403 Forbidden | Authentifie, mais vous n'avez pas acces a cette ressource |
429 Too Many Requests | Limite 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