Capacité

Protection de session

De la génération du session ID à la sécurité des cookies, du contrôle de bind IP+UA à la gestion des idle et absolute timeouts, protégez la session sous un seul policy graph.

La protection de session de TR7 gère le véritable processus de sécurité qui commence après la connexion de l'utilisateur. La session est traitée non pas seulement comme une valeur de cookie, mais conjointement avec le format du session ID, les flags de sécurité des cookies, le contexte client, la politique de timeout et la limite de sessions concurrentes. TR7 WAAP/AAM construit la gestion de session en quatre couches principales : la session affinity et la génération de cookie avec SAM, la détection du changement de contexte après la connexion avec le session binding, l'atténuation du tampering/rejeu avec le chiffrement de cookie AES-256-CBC optionnel et la gestion des idle / absolute timeouts avec le session refresh atomique basé sur Redis. Les presets de politique intégrés apportent prêts à l'emploi différents profils d'usage : usage par défaut d'entreprise, profil bancaire strict, sessions SaaS de longue durée et scénarios d'appareil unique. L'opérateur gère dans le même modèle le mode de binding IP, IP+UA, composite ou none ; les valeurs d'idle et d'absolute timeout ; la politique de sessions concurrentes maximales. Résultat : TR7 sort la sécurité de session des réglages dispersés dans le code applicatif ; il la transforme, au niveau de la couche WAAP/AAM, en un modèle de gouvernance de session centralisé, traçable et adaptable selon le type d'application.

4
Presets de politique intégrés : default, strict, relaxed, singleDevice
AES-256-CBC
Chiffrement de cookie — bind IP+UA, salt de 8 octets par cookie, opt-in
1
Redis round-trip — session refresh Lua atomique, SPOE non-blocking

Lorsqu'une session est volée, vérifier le token ne suffit pas ; il faut aussi vérifier le contexte de la session.

Le session hijacking est un problème classique mais toujours critique. Lorsque le cookie de session de l'utilisateur est dérobé, l'attaquant tente de prendre le contrôle de la session avec le même token. Si le système ne regarde que la présence du token, il ne contrôle pas dans quel contexte d'IP, d'appareil, de navigateur ou d'utilisateur ce token a été généré. Dans ce cas, l'identifiant de session devient à lui seul la frontière de sécurité.

L'oubli des flags de sécurité des cookies est aussi une faiblesse répandue. Sans HttpOnly, les scripts côté client peuvent accéder au cookie ; sans Secure, la couche de transport s'affaiblit ; sans SameSite, les requêtes cross-site deviennent plus risquées. Attendre que ces réglages soient appliqués de manière cohérente par chaque équipe applicative n'est pas réaliste dans les grandes organisations.

La gestion des timeouts est elle aussi souvent mal mise en place. L'idle timeout détermine combien de temps la session reste ouverte après la dernière activité ; l'absolute timeout limite la durée de vie maximale depuis le moment de la connexion, même si l'utilisateur est actif. Notamment dans les portails de la finance, de la santé et de l'entreprise, ces deux limites doivent être gérées séparément.

Le contrôle des sessions concurrentes ne se résout pas spontanément avec un système de cookie standard. Combien d'appareils un utilisateur peut-il utiliser pour se connecter, une nouvelle connexion doit-elle faire tomber l'ancienne session ou la nouvelle connexion doit-elle être refusée — de telles décisions nécessitent un session store central et un suivi des sessions actives. Dans les structures multi-nœuds, cela devient encore plus critique.

La protection de session de TR7 réunit ce besoin sous un seul policy graph : la génération du session ID, les flags de sécurité des cookies, le binding IP / IP+UA / composite, les idle et absolute timeouts, le maximum de sessions concurrentes et le chiffrement de cookie optionnel convergent dans le même modèle de gestion.

Notre approche

TR7 applique la protection de session non pas comme un simple réglage de cookie, mais comme une politique multi-couche allant de la génération à la vérification, et du renouvellement à la terminaison.

La couche SAM gère la génération du cookie et du session ID

SAM gère conjointement la session affinity, le nom du cookie, la source du cookie, le format de session et les flags de sécurité. TR7 peut générer le session ID ou fonctionner avec le cookie généré par le backend ; les options de format UUID, IP+timestamp+random, IP+random ou custom peuvent être utilisées.

Le session binding capture le changement de contexte après la connexion

Après l'ouverture de la session, l'un des modes de binding IP, IP+UA, composite ou none peut être appliqué. Lorsqu'un changement de contexte est détecté, un session mismatch est signalé et l'application peut demander une nouvelle authentification ou un contrôle supplémentaire.

Le chiffrement de cookie optionnel réduit le risque de tampering et de rejeu

Lorsque le chiffrement de cookie basé sur AES-256-CBC est activé, les cookies sélectionnés deviennent illisibles côté client. Grâce au binding supplémentaire dérivé du contexte IP+UA, la réutilisation du token sur un autre client est rendue plus difficile.

Le session refresh atomique basé sur Redis gère les timeouts en toute sécurité

L'opération de session refresh est exécutée de manière atomique avec des fonctions Lua de Redis. L'idle timeout peut être renouvelé à chaque activité ; l'absolute timeout reste lié au moment de la connexion. Le contrôle des sessions concurrentes maximales peut aussi être appliqué via le session state central.

Capacités

La protection de session offre des profils prêts à l'emploi, des options de binding, une gestion des timeouts et une sécurité des cookies pour différents besoins de sécurité et d'expérience utilisateur.

Quatre presets de politique intégrés fournissent différents profils de sécurité de session

Le profil default est conçu pour un usage standard d'entreprise avec un binding IP, un idle timeout de 8 heures et un absolute timeout de 7 jours. Le profil session_strict offre une sécurité plus stricte avec un binding IP+UA, 30 minutes d'idle, 8 heures d'absolute timeout et une seule session concurrente. Le profil session_relaxed convient aux sessions SaaS de longue durée, sans binding, avec 7 jours d'idle et 90 jours d'absolute timeout. Le profil session_singleDevice s'utilise dans les applications nécessitant une restriction de licence ou d'appareil, avec un binding IP et une politique de session concurrente unique.

Le format du session ID est choisi selon le besoin applicatif et de sécurité

TR7 n'impose pas le format du session ID à un seul modèle fixe. Le format ipTimestampRandom fournit le format fort par défaut avec une combinaison d'IP, de temps et de valeur aléatoire ; le format uuid produit une valeur opaque ne contenant pas d'IP. Le format ipRandom utilise une IP et une valeur aléatoire ; le format custom permet à l'opérateur de créer une clé de session à partir de headers, de cookies ou de variables personnalisées. Cette flexibilité s'adapte à différentes architectures applicatives.

Les cookie security flags sont appliqués et standardisés de manière centralisée

Au niveau de la couche SAM, HttpOnly peut être configuré comme flag de sécurité minimal. Des flags supplémentaires comme Secure, SameSite=Strict ou SameSite=Lax peuvent aussi être ajoutés au niveau de la politique. La valeur Max-Age du cookie peut être associée à l'absolute timeout. Ainsi, on n'attend pas de chaque équipe applicative qu'elle effectue séparément et sans erreur ses réglages de sécurité de cookie.

La source du cookie peut être choisie comme TR7 ou comme backend

Lorsque la valeur samCookieSource est TR7, le cookie de session est généré au niveau de la couche ADC. Si le backend doit continuer à générer son propre cookie, le cookie issu du backend peut être utilisé. Dans le modèle hybride, si le cookie du backend existe on continue avec cette valeur, sinon TR7 peut créer une nouvelle valeur de session. Cette approche s'adapte aussi bien aux nouvelles applications qu'aux anciens systèmes.

Quatre modes de binding établissent différents équilibres entre sécurité et mobilité

Le binding ip préserve le contexte d'IP source où l'utilisateur s'est connecté ; il est fort dans les scénarios de bureau d'entreprise ou de VPN. Le binding ip+ua évalue conjointement la paire IP et User-Agent pour un contrôle plus strict. Le binding composite peut être étendu avec des composantes supplémentaires comme Accept-Language, un header personnalisé ou un TLS fingerprint. Le mode none se comporte de manière plus flexible dans un usage SaaS à session longue et à changements de réseau fréquents.

Le chiffrement de cookie AES-256-CBC fonctionne en opt-in sur les cookies sélectionnés

Le chiffrement de cookie n'est pas considéré comme activé par défaut ; c'est une protection optionnelle activée pour les cookies sélectionnés. Lorsqu'il est actif, le flux cookie_encrypt s'applique côté réponse et cookie_decrypt côté requête. Pour chaque cookie, l'utilisation d'un salt, d'un padding et d'un formatage base64 rend la valeur côté client dénuée de sens. Lorsque le déchiffrement échoue, la valeur n'est pas traitée comme une donnée de session fiable et l'application peut décider d'une nouvelle authentification ou d'un refus.

L'idle et l'absolute timeout sont gérés séparément

sessionIdleTimeout détermine combien de temps la session reste valide après la dernière activité. sessionAbsoluteTimeout limite la durée de vie maximale de la session depuis le moment de la connexion et ne s'allonge pas continuellement avec l'activité. Cette distinction est particulièrement critique dans les applications bancaires, les portails d'entreprise et les applications contenant des données sensibles. L'expérience utilisateur et la frontière de sécurité sont équilibrées dans la même politique.

Le maximum de sessions concurrentes peut être limité par utilisateur

La valeur maxConcurrentSessions détermine combien de sessions actives un utilisateur peut posséder simultanément. Lorsque la limite est dépassée, la session la plus ancienne peut être abandonnée avec logout_oldest, ou la nouvelle connexion refusée avec deny_new. Cette structure peut être utilisée pour la licence d'appareil unique, la sécurité bancaire ou le contrôle d'accès d'entreprise. La liste des sessions actives est suivie via le session state central.

Les événements du cycle de vie de session sont suivis comme create, refresh, mismatch et logout

Lors de la connexion, la session est créée, à chaque requête un idle refresh peut être effectué, lors d'un binding mismatch la session est marquée comme suspecte, et lors du logout la session est invalidée. Ce cycle de vie permet de gérer la session non seulement au début mais pendant toute la durée d'usage. Les flux SIEM et d'audit peuvent produire un signal de sécurité à partir de ces événements. L'historique de session est particulièrement important dans les investigations de compromission de compte.

Dans les structures multi-nœuds, la continuité de session est préservée avec le peer sync et Redis

Pour préserver le session state sur plusieurs nœuds TR7, la synchronisation des pairs et un store central basé sur Redis peuvent être utilisés ensemble. La conception est faite pour que la continuité de session soit préservée dans les scénarios de failover ou de rolling restart. Côté Redis, la résilience du session state peut être renforcée avec les options de replication et de persistance. Cette structure empêche la protection de session de rester liée à un seul nœud.

Profondeur opérationnelle

La protection de session est exploitée conjointement avec le nom du cookie, la génération des attributs, le binding composite, les catégories d'audit, le session store et les comportements de fallback de timeout.

01

Nom de cookie configurable

Le nom de cookie par défaut TR7SID peut être utilisé. Un nom différent peut être défini pour chaque pool avec samCookieName. Cela s'utilise pour la cohérence de marque, le standard applicatif ou la compatibilité avec une architecture de cookie existante.

02

Génération des attributs de cookie au runtime

Lors de la création de la valeur du cookie, des attributs tels que HttpOnly, Secure, SameSite et Max-Age sont ajoutés selon les réglages de politique. Ces attributs ne peuvent être définis que lorsqu'une nouvelle session est générée. Ainsi, la sécurité des cookies est standardisée par une politique centrale.

03

Composantes du binding composite

Le binding composite peut être établi par défaut avec des composantes comme l'IP source et le User-Agent. L'opérateur peut inclure des composantes supplémentaires comme Accept-Language, Accept-Encoding, un header personnalisé ou un TLS fingerprint. Ce calcul doit être effectué à une étape tardive, après que les variables concernées ont été générées.

04

Catégories d'audit

Les événements de session et d'accès peuvent être journalisés avec des catégories comme whitelisted, authorized ou unauthorized. Cette information facilite côté SIEM les investigations de compromission de compte, d'abus et d'accès non autorisé. Pour chaque requête, le contexte utilisateur et de session devient plus visible.

05

Session store Redis

Le session state AAM peut être conservé sur Redis et les opérations de session refresh sont exécutées de manière atomique avec des fonctions Lua. Ce modèle sort la latence classique des bases de données du chemin de contrôle de session. La persistance et la résilience peuvent être renforcées avec des fonctionnalités Redis comme AOF et replication.

06

Valeurs de fallback sécurisées

Si la configuration de l'idle timeout est absente, un fallback d'1 heure peut être utilisé. Si l'absolute timeout est absent, une valeur de fallback de 24 heures peut être appliquée. Ces valeurs fournissent des hypothèses sécurisées qui empêchent la création de sessions illimitées lorsque la configuration est incomplète.

Dans quels scénarios l'utiliser

Binding strict et session sur appareil unique dans la banque

Une application bancaire peut vouloir maintenir l'utilisateur sur un seul appareil et fermer la session après 30 minutes d'inactivité. Le profil session_strict est appliqué avec un binding IP+UA, 30 minutes d'idle, 8 heures d'absolute timeout et une seule session concurrente. Si une session volée est utilisée dans un contexte différent, un signal de mismatch est produit.

Session longue et flexible dans une application SaaS

Les utilisateurs SaaS B2B peuvent vouloir accéder au même compte depuis un ordinateur portable, un téléphone et une tablette. Le profil session_relaxed préserve l'expérience utilisateur avec de longues valeurs d'idle et d'absolute timeout, sans binding. Le changement d'IP ou la diversité des appareils ne produit pas de nouvelle authentification inutile.

Binding IP et session sur la journée de travail dans un portail d'entreprise

Dans le portail des employés, l'utilisateur se connecte via le réseau du bureau ou le VPN et travaille toute la journée sans se reconnecter. Le profil default peut être appliqué avec un binding IP, un idle timeout de 8 heures et un absolute timeout de 7 jours. Si le contexte d'IP change, l'application peut demander une nouvelle authentification.

Limite de sessions concurrentes pour une licence d'appareil unique

Une application premium ou un service sous licence peut vouloir que le compte soit utilisé sur un seul appareil à la fois. Le profil session_singleDevice fait tomber l'ancienne session lors d'une nouvelle connexion, avec un maximum de 1 session concurrente et le comportement logout_oldest. Le partage de licence et l'usage multiple incontrôlé deviennent difficiles.

Questions fréquentes

Que se passe-t-il lorsqu'un session binding mismatch est détecté ?
En cas de binding mismatch, la session est marquée comme suspecte. En recevant ce signal, l'application peut décider d'une nouvelle authentification, d'une vérification par facteur supplémentaire ou de la terminaison de la session. Selon le mode de binding utilisé, un changement de composante IP, IP+UA ou composite déclenche cette détection.
Quelle est la différence entre l'idle timeout et l'absolute timeout ?
L'idle timeout détermine combien de temps la session reste valide depuis la dernière activité ; il se renouvelle tant que l'utilisateur est actif. L'absolute timeout, lui, se compte depuis le moment de la connexion et, quelle que soit l'activité de l'utilisateur, la session prend fin lorsque ce délai expire. Dans les applications bancaires et sensibles, ces deux limites doivent être configurées séparément.
Le chiffrement de cookie AES-256-CBC est-il activé par défaut ?
Non. Le chiffrement de cookie est désactivé par défaut ; il doit être activé explicitement pour les cookies choisis par l'opérateur. Lorsqu'il est actif, le chiffrement s'applique côté réponse et le déchiffrement côté requête. Lorsque le déchiffrement échoue, la valeur n'est pas traitée comme une donnée de session fiable.
La protection CSRF et JWT est-elle couverte par cette page ?
Le contrôle des claims JWT peut être utilisé conjointement avec le session binding et la politique de cookie ; le contenu JWT peut faire partie du processus de vérification de session. L'obligation de token CSRF relève de la roadmap au niveau de la couche WAAP et n'est pas traitée séparément sur cette page. Pour la session fixation, la rotation du session ID après la connexion est prise en charge.
Que se passe-t-il lorsque la limite de sessions concurrentes maximales est dépassée ?
Selon la valeur concurrentSessionAction, deux comportements peuvent être choisis : avec logout_oldest, la session active la plus ancienne est terminée et la nouvelle connexion est acceptée ; avec deny_new, la nouvelle connexion est refusée et les sessions existantes sont préservées. Le comportement adapté est déterminé au niveau de la politique selon le scénario d'usage.
Comment la continuité de session est-elle assurée dans une installation TR7 multi-nœuds ?
En utilisant ensemble la synchronisation des pairs via stick-table et un session store central basé sur Redis, le session state est propagé à tous les nœuds. Aucune perte de session n'a lieu lors d'un failover ou d'un rolling restart. Côté Redis, la persistance et la résilience peuvent être renforcées avec AOF et replication.

Sortez la sécurité de session du code applicatif

La génération du session ID, les flags de sécurité des cookies, le binding IP+UA, la politique de timeout et la limite de sessions concurrentes sous un seul policy graph. Nous vous guidons dans une installation en direct avec vos propres services.