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
| Objet | Stocké où | Durée | Sert à |
|---|---|---|---|
| Cookie de session Compagnon | Cookie navigateur (HttpOnly) | 30 jours (TTL configurable) | Identifier l'utilisateur sur Compagnon |
| Token OAuth TrackDéchets | Base Compagnon, chiffré AES-256 | Court (1h type) + refresh | Appeler 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
- Vous cliquez Se connecter avec TrackDéchets sur Compagnon
- Redirection vers le portail TrackDéchets (page officielle Ministère)
- Vous saisissez vos identifiants TD et autorisez Compagnon
- TD redirige vers
/auth/trackdechets/callback?code=...&state=... - Compagnon échange le
codecontre unaccess_token+refresh_token - Compagnon provisionne votre compte : crée/met à jour
users,trackdechets_identities, et untenant_userspar SIRET de votre profil TD - 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_tokenet 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 TD | Conséquence sur Compagnon |
|---|---|
| Changement de mot de passe TD | Refresh token révoqué — prochaine action TD échoue avec 401 |
| Retrait d'agrément SIRET | tenant_users supprimé à la prochaine connexion (cf. multi-SIRET) |
| Révocation manuelle dans le portail TD | Refresh 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 :
| Action | Endpoint | Effet |
|---|---|---|
| Logout Compagnon | POST /auth/logout | Supprime le cookie de session — vous restez logué TD |
| Déconnecter TD | POST /auth/trackdechets/disconnect | Supprime 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.siretdu profil TD, Compagnon crée untenantsrow - Et un
tenant_usersrow 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 :
| Acteur | Auth mobile |
|---|---|
| Web admin | SSO TrackDéchets uniquement |
| Chauffeur mobile | Email + PIN 6 chiffres (TTL 30 j) + SecureStore |
| Technicien mobile | Email + 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 ?
- Connecter mon compte TrackDéchets
- Hébergement et conformité RGPD
- Engagements opérationnels et incidents
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).