Clés API

Apprenez à gérer l'authentification pour CLI et accès API dans TeamDay.

Table des matières

Méthodes d'authentification

TeamDay prend en charge deux méthodes d'authentification :

MéthodeCas d'usageExpirationMeilleur pour
OAuth 2.1Utilisation interactive CLI15 min (jeton d'accès)
90 jours (jeton de rafraîchissement)
Utilisateurs humains, développement
Jeton d'accès personnel (PAT)Automation APIRévocation manuelle uniquementCI/CD, scripts, automation

OAuth vs PAT

Utilisez OAuth quand :

  • Travailler interactivement avec CLI
  • Vous êtes un utilisateur humain
  • Vous voulez un rafraîchissement de token automatique
  • L'accès à court terme est préféré

Utilisez PAT quand :

  • Automatiser avec des scripts ou CI/CD
  • Exécuter des jobs en arrière-plan
  • Besoin d'accès long terme
  • Voulez une authentification simple bearer token

Jetons d'accès personnel

Les jetons d'accès personnels (PATs) sont des identifiants à longue durée de vie pour l'accès programmatique.

Créer un PAT

Via l'interface :

Étape 1 : Naviguer vers les paramètres

Cliquez sur votre icône de profil → Paramètres

Étape 2 : Aller aux clés API

Cliquez sur "Clés API" dans la barre latérale gauche

Étape 3 : Cliquez sur "Créer le token"

Cliquez sur le bouton "+ Nouveau token d'accès personnel"

Étape 4 : Configurer le token

  • Nom (Obligatoire)
    • Nom descriptif pour ce token
    • Exemples : "Pipeline CI/CD", "Scripts d'automation", "Production Bot"
  • Expiration (Optionnel)
    • Par défaut : Pas d'expiration
    • Options : 30 jours, 90 jours, 1 an, personnalisé, jamais
    • Recommandation : Définir une expiration pour la sécurité
  • Scopes (À venir)
    • Actuellement : Accès complet
    • Futur : Permissions fine-grained (agents:read, tasks:write, etc.)

Étape 5 : Copier le token

⚠️ IMPORTANT : Token affiché une seule fois !

td_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
  • Copier immédiatement et stocker de manière sécurisée
  • Si perdu, vous devez révoquer et créer un nouveau token
  • Ne jamais commit sur git ou partager publiquement

Étape 6 : Enregistrer le token de manière sécurisée

Stocker dans un gestionnaire de mots de passe ou une variable d'environnement sécurisée :

# .bashrc ou .zshrc
export TEAMDAY_API_TOKEN="td_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"

Utiliser les PATs

Avec CLI :

# Méthode 1 : Définir via la commande
teamday auth set-key "td_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"

# Méthode 2 : Variable d'environnement
export TEAMDAY_API_TOKEN="td_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"
teamday agents list

# Méthode 3 : Inline
TEAMDAY_API_TOKEN="td_xxx" teamday agents list

Avec API :

curl -X GET https://cc.teamday.ai/api/v1/agents \
  -H "Authorization: Bearer td_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"

Avec JavaScript :

const TEAMDAY_TOKEN = process.env.TEAMDAY_API_TOKEN;

const response = await fetch('https://cc.teamday.ai/api/v1/agents', {
  headers: {
    'Authorization': `Bearer ${TEAMDAY_TOKEN}`,
    'Content-Type': 'application/json'
  }
});

const agents = await response.json();

Avec Python :

import os
import requests

TEAMDAY_TOKEN = os.environ['TEAMDAY_API_TOKEN']

response = requests.get(
    'https://cc.teamday.ai/api/v1/agents',
    headers={
        'Authorization': f'Bearer {TEAMDAY_TOKEN}',
        'Content-Type': 'application/json'
    }
)

agents = response.json()

Gérer les PATs

Afficher les tokens actifs :

Via l'interface :

  1. Paramètres → Clés API
  2. Voir la liste des tokens actifs avec :
    • Nom
    • Date de création
    • Date de dernière utilisation
    • Expiration (si définie)

Les tokens sont hashés - Vous ne pouvez pas afficher la valeur du token après la création.

Via CLI :

teamday auth tokens list

Sortie :

ID          Name                    Created      Last Used    Expires
---------------------------------------------------------------------------
token_123   CI/CD Pipeline          2024-12-01   2025-01-15   2025-06-01
token_456   Production Bot          2024-10-15   2025-01-14   Never
token_789   Local Development       2025-01-10   2025-01-15   2025-02-10

Révoquer les PATs

Via l'interface :

  1. Paramètres → Clés API
  2. Trouver le token dans la liste
  3. Cliquez sur "⋯" → "Révoquer"
  4. Confirmez

Via CLI :

teamday auth tokens revoke token_123

Effet :

  • Le token cesse immédiatement de fonctionner
  • Toutes les requêtes avec ce token renvoient 401 Unauthorized
  • Impossible à annuler - vous devez créer un nouveau token

Quand révoquer :

  • Token potentiellement compromis
  • Un employé quitte l'équipe
  • Basculer vers un nouveau token
  • Token n'est plus nécessaire

Rotation des tokens

Meilleure pratique : Rotation des tokens régulièrement

Stratégie :

  1. Créer un nouveau token
  2. Mettre à jour les systèmes pour utiliser le nouveau token
  3. Vérifier que le nouveau token fonctionne
  4. Révoquer l'ancien token

Script exemple :

#!/bin/bash
# rotate-token.sh

# Créer un nouveau token (via UI, copier la valeur)
NEW_TOKEN="td_new_token_here"

# Mettre à jour dans CI/CD (exemple : GitHub Actions)
gh secret set TEAMDAY_API_TOKEN --body "$NEW_TOKEN"

# Mettre à jour dans l'environnement de production
kubectl create secret generic teamday-token \
  --from-literal=token="$NEW_TOKEN" \
  --dry-run=client -o yaml | kubectl apply -f -

# Tester le nouveau token
TEAMDAY_API_TOKEN="$NEW_TOKEN" teamday agents list

# Si réussi, révoquer l'ancien token
teamday auth tokens revoke token_old_id

OAuth pour CLI

OAuth fournit un accès sécurisé et à courte durée de vie pour les utilisateurs CLI.

Comment fonctionne OAuth

sequenceDiagram
    participant CLI
    participant Browser
    participant TeamDay

    CLI->>TeamDay: 1. Initier l'auth
    TeamDay->>CLI: 2. Retourner le code auth + URL
    CLI->>Browser: 3. Ouvrir l'URL d'auth
    Browser->>TeamDay: 4. L'utilisateur se connecte
    TeamDay->>Browser: 5. Succès de l'autorisation
    CLI->>TeamDay: 6. Sonder les tokens
    TeamDay->>CLI: 7. Retourner les tokens d'accès + rafraîchissement
    CLI->>TeamDay: 8. Faire des requêtes API
    Note over CLI,TeamDay: Le token d'accès expire dans 15 min
    CLI->>TeamDay: 9. Rafraîchir le token
    TeamDay->>CLI: 10. Nouveau token d'accès

Se connecter avec OAuth

Étape 1 : Exécuter la commande de connexion

teamday auth login

Étape 2 : CLI initie l'auth

Initialiser l'authentification...

Veuillez ouvrir cette URL dans votre navigateur :
https://cc.teamday.ai/cli-auth?code=abc123xyz

En attente d'autorisation...

Étape 3 : Navigateur s'ouvre automatiquement

  • Si le navigateur ne s'ouvre pas, copier/coller l'URL manuellement
  • Vous verrez la page de connexion TeamDay

Étape 4 : Se connecter à TeamDay

  • Entrer l'email/mot de passe
  • Ou utiliser le fournisseur OAuth (Google, GitHub)

Étape 5 : Autoriser CLI

La page affiche :

Autoriser CLI TeamDay

TeamDay CLI demande l'accès à votre compte.

Cela permettra :
✓ Gérer les agents
✓ Exécuter les agents
✓ Accéder aux espaces
✓ Créer des tâches

[Autoriser] [Annuler]

Cliquez sur "Autoriser"

Étape 6 : Succès

Le navigateur affiche :

✓ Autorisation réussie !

Vous pouvez fermer cette fenêtre et revenir à votre terminal.

CLI affiche :

✓ Authentification réussie !

Vous êtes maintenant connecté en tant que : [email protected]
Organisation : Acme Corp

Stockage des tokens

Les tokens OAuth sont stockés localement :

Localisation :

  • macOS : ~/.teamday/config.json
  • Linux : ~/.teamday/config.json
  • Windows : %USERPROFILE%\.teamday\config.json

Contenu :

{
  "accessToken": "ey...",
  "refreshToken": "ey...",
  "expiresAt": "2025-01-15T11:00:00Z",
  "user": {
    "email": "[email protected]",
    "organizationId": "org_abc123"
  }
}

Sécurité :

  • Le fichier a des permissions strictes (600 sur Unix)
  • Les tokens sont chiffrés au repos (sur certains systèmes)
  • Rafraîchissement automatique avant l'expiration

Rafraîchissement automatique du token

CLI rafraîchit automatiquement les tokens d'accès :

# Première commande : Token valide
teamday agents list
# Fonctionne immédiatement

# ... 15 minutes plus tard, token expiré ...

# Commande suivante : Token auto-rafraîchi
teamday agents exec char_123 "message"
# CLI détecte l'expiration, rafraîchit le token, puis exécute

Rafraîchissement manuel :

teamday auth refresh

Vérifier le statut de l'authentification

teamday auth status

Sortie :

✓ Authentifié

Utilisateur : [email protected]
Organisation : Acme Corp
Méthode : OAuth
Token d'accès : Valide (expire dans 12 min)
Token de rafraîchissement : Valide (expire dans 85 jours)

Se déconnecter

teamday auth logout

Cela :

  • Supprime les tokens locaux
  • Révoque le token d'accès sur le serveur
  • Nécessite une ré-authentification pour la prochaine commande

Meilleures pratiques de sécurité

1. Ne jamais commit les tokens sur Git

Utilisez .gitignore :

# .gitignore
.env
.env.local
.teamday/
config.json
*_token.txt

Vérifier avant commit :

git diff --cached | grep -i "td_"

2. Utilisez les variables d'environnement

Pour les PATs :

# .env (NE PAS COMMIT)
TEAMDAY_API_TOKEN=td_xxx

# Charger dans les scripts
export $(cat .env | xargs)

En CI/CD :

  • GitHub Actions : Repository Secrets
  • GitLab CI : Variables CI/CD
  • CircleCI : Project Settings → Environment Variables

3. Principe du moindre privilège

Créer des tokens séparés pour différents objectifs :

✓ Bien :
- "CI/CD Deploy" - Utilisé uniquement dans le pipeline de déploiement
- "Daily Reports" - Utilisé uniquement pour les rapports automatisés
- "Development" - Utilisé localement, rotation fréquente

✗ Mal :
- "Master Token" - Utilisé partout (si compromis, accès complet)

4. Définir les dates d'expiration

Pour les tokens d'automation :

Projets à courte durée de vie : 30 jours
CI/CD à long terme : 90 jours
Examen trimestriel : 1 an

Examiner avant l'expiration :

  • Définir des rappels calendrier
  • Automatiser les notifications d'expiration
  • Rotation proactive

5. Surveiller l'utilisation du token

Via l'interface : Paramètres → Clés API → Afficher "Dernière utilisation"

Drapeaux rouges :

  • Les tokens ne sont jamais utilisés (supprimez-les)
  • Temps d'utilisation inattendu (enquêter)
  • Grand volume de requêtes (abus potentiel)

6. Stockage sécurisé des tokens

Développement local :

# Utilisez un gestionnaire de mots de passe
# Exemple : 1Password, LastPass, Bitwarden

# Ou fichier chiffré
gpg --encrypt --recipient [email protected] token.txt
# Déchiffrer quand nécessaire
gpg --decrypt token.txt.gpg

Production :

# Utilisez la gestion des secrets
# AWS : Secrets Manager
# GCP : Secret Manager
# Azure : Key Vault
# Kubernetes : Secrets

7. Rotation régulière

Calendrier recommandé :

  • Tokens de développement : Mensuellement
  • Tokens CI/CD : Trimestriellement
  • Tokens de production : Tous les 6 mois
  • Sur changements d'équipe : Immédiatement

8. Audit d'accès

Audit mensuel :

# Lister tous les tokens
teamday auth tokens list

# Vérifier chacun :
# - Encore nécessaire ?
# - Le propriétaire est-il toujours dans l'équipe ?
# - Utilisé récemment ?
# - Expiration appropriée ?

# Révoquer les tokens inutiles
teamday auth tokens revoke token_old_id

9. Réponse aux incidents

Si token compromis :

Étape 1 : Révoquer immédiatement

teamday auth tokens revoke token_compromised_id

Étape 2 : Examiner les logs d'audit

teamday audit --token token_compromised_id --since "1 week ago"

Étape 3 : Évaluer les dégâts

  • Quels agents ont été consultés ?
  • Quelles données ont été exposées ?
  • Des actions destructrices ont-elles été prises ?

Étape 4 : Rotation de tous les tokens

  • Ne sais pas lequel était compromis ? Rotationner tous

Étape 5 : Mettre à jour la documentation

  • Comment a-t-il été compromis ?
  • Comment prévenir à l'avenir ?

10. Limitation du débit

Être conscient des limites de taux :

  • Avec PAT : 1000 requêtes/heure
  • Avec OAuth : 500 requêtes/heure

Éviter :

# Mauvais : Sondage dans une boucle serrée
while true; do
  teamday agents list
  sleep 1
done

Faire :

# Bon : Sondage raisonnable
while true; do
  teamday agents list
  sleep 60  # Vérifier chaque minute
done

Dépannage

Erreur de token invalide

Symptômes :

Erreur : Token invalide ou expiré
Statut : 401 Non autorisé

Solutions :

Pour PAT :

# Vérifier que le token est correct
echo $TEAMDAY_API_TOKEN

# Vérifier si le token est actif
teamday auth tokens list

# Créer un nouveau token si nécessaire
# (via l'interface : Paramètres → Clés API → Nouveau token)

Pour OAuth :

# Le token a expiré, rafraîchir
teamday auth refresh

# Ou se reconnecter
teamday auth logout
teamday auth login

Accès refusé

Symptômes :

Erreur : Vous n'avez pas la permission de effectuer cette action
Statut : 403 Interdit

Causes :

  • Le token a des scopes insuffisants (fonctionnalité future)
  • Le rôle utilisateur ne permet pas l'action
  • La ressource appartient à une autre organisation

Solutions :

# Vérifier le statut d'authentification
teamday auth status

# Vérifier l'organisation
teamday config get organization

# Changer d'organisation (si membre de plusieurs)
teamday config set organization org_different_id

Token non trouvé

Symptômes :

Erreur : Aucun token d'authentification trouvé

Solutions :

# Vérifier si connecté
teamday auth status

# Si non, se connecter
teamday auth login

# Ou définir le PAT
teamday auth set-key "td_xxx"

# Ou utiliser la variable d'environnement
export TEAMDAY_API_TOKEN="td_xxx"

Flux OAuth se bloque

Symptômes : Le navigateur n'affiche jamais la page de succès

Solutions :

1. Vérifier la console du navigateur pour les erreurs

2. Exécution manuelle :

# Annuler le flux bloqué
Ctrl+C

# Réessayer avec saisie manuelle de code
teamday auth login --manual

3. Utiliser PAT à la place :

# Générer le PAT via l'interface
# Puis définir dans CLI
teamday auth set-key "td_xxx"

Dépassement de la limite de débit

Symptômes :

Erreur : Limite de débit dépassée
Statut : 429 Trop de requêtes
Retry-After : 3600

Solutions :

# Attendre la réinitialisation du limite de débit (1 heure)

# Ou implémenter l'exponentielle backoff
#!/bin/bash
retry=0
max_retries=5
while [ $retry -lt $max_retries ]; do
  if teamday agents list; then
    exit 0
  fi
  wait=$((2 ** retry))
  echo "Réessayer dans ${wait}s..."
  sleep $wait
  retry=$((retry + 1))
done

Prochaines étapes