Description
Le serveur rejette pĂ©riodiquement des requĂȘtes authentifiĂ©es avec l'erreur jwt expired, alors que la session utilisateur est toujours active cĂŽtĂ© client.
Le client (apps/client/src/api/xhr-client.ts) attache keycloak.token sans appeler keycloak.updateToken() au préalable.
Le rafraĂźchissement ne s'effectue que via le timer passif onTokenExpired et un contournement dans onAuthSuccess : toute requĂȘte Ă©mise Ă proximitĂ© de l'expiration â ou aprĂšs une pĂ©riode d'onglet inactif (timers throttlĂ©s par le navigateur) â transporte un JWT dĂ©jĂ expirĂ©.
Le gestionnaire 401 (extractData) ne redirige vers le login que si !keycloak.authenticated ; il ne tente jamais de rafraĂźchir le token.
Etapes de reproduction
- Ouvrir la console et laisser l'onglet en arriĂšre-plan jusqu'Ă l'expiration de l'access token Keycloak
- Revenir sur l'onglet et dĂ©clencher une requĂȘte API
- Le serveur répond 401 avec
jwt expired
Captures d'écran
Logs
UnauthorizedException: jwt expired
Navigateurs
Tous
OS
Tous
Version de la console impactée
apps/client (xhr-client) avec apps/server-nestjs (KeycloakJwtService)
Définition du fini
Description
Le serveur rejette pĂ©riodiquement des requĂȘtes authentifiĂ©es avec l'erreur
jwt expired, alors que la session utilisateur est toujours active cÎté client.Le client (
apps/client/src/api/xhr-client.ts) attachekeycloak.tokensans appelerkeycloak.updateToken()au préalable.Le rafraßchissement ne s'effectue que via le timer passif
onTokenExpiredet un contournement dansonAuthSuccess: toute requĂȘte Ă©mise Ă proximitĂ© de l'expiration â ou aprĂšs une pĂ©riode d'onglet inactif (timers throttlĂ©s par le navigateur) â transporte un JWT dĂ©jĂ expirĂ©.Le gestionnaire 401 (
extractData) ne redirige vers le login que si!keycloak.authenticated; il ne tente jamais de rafraĂźchir le token.Etapes de reproduction
jwt expiredCaptures d'écran
Logs
Navigateurs
Tous
OS
Tous
Version de la console impactée
apps/client (xhr-client) avec apps/server-nestjs (KeycloakJwtService)
Définition du fini