Compagnon· Aide

SSO TrackDéchets — fonctionnement détaillé

Cycle de vie des tokens, refresh automatique, révocation côté TD, distinction cookie de session et token OAuth.

Mis à jour le 26 avril 2026

L'authentification web admin de Compagnon repose exclusivement sur le SSO TrackDéchets (OAuth 2.0). Cet article va plus loin que le guide de connexion : il décrit le cycle de vie des tokens, ce qui se passe quand TrackDéchets révoque l'accès, et la différence entre le cookie de session Compagnon et le token OAuth TrackDéchets.

Les deux objets distincts

ObjetStocké oùDuréeSert à
Cookie de session CompagnonCookie navigateur (HttpOnly)30 jours (TTL configurable)Identifier l'utilisateur sur Compagnon
Token OAuth TrackDéchetsBase Compagnon, chiffré AES-256Court (1h type) + refreshAppeler l'API TrackDéchets (BSDs, profil)

Le cookie de session est ce qui maintient votre login Compagnon : il survit aux fermetures de navigateur et glisse à chaque visite (sliding TTL, mise à jour 1×/jour max).

Le token OAuth est utilisé en interne par Compagnon pour parler à TrackDéchets — vous ne le voyez jamais. Il est renouvelé automatiquement 60 secondes avant expiration via le refresh_token.

Cycle de vie complet

1. Première connexion

  1. Vous cliquez Se connecter avec TrackDéchets sur Compagnon
  2. Redirection vers le portail TrackDéchets (page officielle Ministère)
  3. Vous saisissez vos identifiants TD et autorisez Compagnon
  4. TD redirige vers /auth/trackdechets/callback?code=...&state=...
  5. Compagnon échange le code contre un access_token + refresh_token
  6. Compagnon provisionne votre compte : crée/met à jour users, trackdechets_identities, et un tenant_users par SIRET de votre profil TD
  7. Compagnon stocke les tokens chiffrés et crée un cookie de session 30 jours

2. Sessions suivantes

Tant que votre cookie est valide :

  • Vous restez connecté à Compagnon sans repasser par TD
  • Chaque action qui touche TD (création BSD, lecture profil) déclenche getValidAccessToken() qui :
    • Lit le token chiffré en base, le déchiffre
    • Si expiré (ou expire dans < 60 s) : appelle refresh_token et stocke la nouvelle paire
    • Renvoie un access token utilisable

3. Refresh automatique

Le buffer de refresh est 60 secondes (REFRESH_BUFFER_MS). Concrètement :

  • Si TD émet un access_token de 3600 s, Compagnon le rafraîchit à T+3540 s
  • Le refresh est transparent pour l'utilisateur — pas de redirection, pas de toast
  • Si le refresh échoue (TD a révoqué le refresh_token), une 401 remonte et l'UI vous renvoie vers la page de connexion TD

4. Révocation côté TrackDéchets

Plusieurs événements côté TD peuvent invalider votre refresh_token :

Événement TDConséquence sur Compagnon
Changement de mot de passe TDRefresh token révoqué — prochaine action TD échoue avec 401
Retrait d'agrément SIRETtenant_users supprimé à la prochaine connexion (cf. multi-SIRET)
Révocation manuelle dans le portail TDRefresh token révoqué — déconnexion forcée à la prochaine action
Compte TD suppriméToutes les actions TD échouent — accès Compagnon en lecture seule

Quand un refresh échoue, Compagnon garde votre cookie de session (vous restez logué) — mais bloque toute action qui nécessite TD jusqu'à ce que vous vous reconnectiez via TD.

5. Déconnexion explicite

Deux niveaux possibles :

ActionEndpointEffet
Logout CompagnonPOST /auth/logoutSupprime le cookie de session — vous restez logué TD
Déconnecter TDPOST /auth/trackdechets/disconnectSupprime votre oauth_tokens row — actions TD bloquées

Le disconnect est idempotent : il renvoie 204 même si vous n'avez plus de tokens. Vous ne perdez pas votre cookie de session par ce biais — mais la prochaine action BSD vous forcera à passer par le SSO TD à nouveau.

Multi-SIRET — un compte TD, N SIRETs Compagnon

Votre profil TD peut couvrir plusieurs SIRETs. Compagnon respecte cette structure :

  • Pour chaque company.siret du profil TD, Compagnon crée un tenants row
  • Et un tenant_users row qui projette les permissions TD (Admin, Member) en RBAC Compagnon
  • Le scope d'accès (allowedSirets) est l'union de tous vos SIRETs autorisés

À chaque nouvelle connexion SSO, Compagnon re-synchronise les SIRETs :

  • Les nouveaux SIRETs TD ajoutés depuis la dernière connexion sont provisionnés
  • Les SIRETs retirés côté TD sont supprimés de vos tenant_users (perte d'accès immédiate au prochain login)

Cas typique : un consultant QHSE a accès à 5 entreprises clientes dans son profil TD. Il se connecte à Compagnon une fois et voit les 5 SIRETs disponibles dans le sélecteur de tenant.

Stockage et sécurité des tokens

Les tokens TD sont toujours chiffrés au repos :

  • Algorithme : AES-256-GCM avec clé dérivée d'une variable d'env serveur
  • Stockage : colonne oauth_tokens.access_token_encrypted / oauth_tokens.refresh_token_encrypted
  • En mémoire : déchiffrés uniquement le temps de l'appel TD, jamais loggés
  • Rotation : à chaque refresh, l'ancienne paire est écrasée (upsert)

Aucun secret n'est exposé côté front — l'API client web n'a jamais accès aux tokens bruts, elle s'appuie sur le cookie de session pour authentifier ses requêtes vers Compagnon.

Et la connexion mobile alors ?

L'authentification mobile (chauffeur, technicien) ne passe pas par TrackDéchets :

ActeurAuth mobile
Web adminSSO TrackDéchets uniquement
Chauffeur mobileEmail + PIN 6 chiffres (TTL 30 j) + SecureStore
Technicien mobileEmail + PIN 6 chiffres (TTL 30 j) + SecureStore

Les chauffeurs et techniciens n'ont pas besoin d'un compte TrackDéchets — c'est l'admin producteur ou transporteur qui leur crée un compte mobile dans Compagnon.

Bonnes pratiques

  • Auditez régulièrement les permissions accordées à Compagnon depuis votre profil TrackDéchets (section "Applications connectées")
  • Révoquez Compagnon depuis TD si un compte n'est plus actif — la révocation est effective immédiatement côté Compagnon dès la prochaine action TD
  • Pour vos collègues, créez-leur un compte TrackDéchets dédié : chacun se connectera avec son SSO et héritera de ses propres permissions TD
  • Ne partagez jamais votre cookie de session ou vos tokens TD — ils donnent accès à tout votre périmètre

Et après ?

Vous êtes bloqué ? Écrivez-nous à support@trdc.cloud — engagement Standard : réponse sous 4h ouvrées (lun-ven 9h-18h CET). Enterprise : sous 1h ouvrées (8h-20h CET).