Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEATURE] Créer une fonction de révocation des accès utilisateurs (PIX-15947) #11270

Merged
merged 3 commits into from
Jan 31, 2025

Conversation

EmmanuelleBonnemay
Copy link
Contributor

@EmmanuelleBonnemay EmmanuelleBonnemay commented Jan 29, 2025

🥞 Problème

Créer une fonction de révocation des accès utilisateurs.

🥓 Proposition

Utiliser une logique basée sur le fait que les tokens JWT contiennent les attributs user_id et iat (issued at) et stocker dans Redis, en durée limitée, des couples userId - revokeTokensFromUserBeforeDate qui permettent de refuser tout AC qui correspondrait à la condition :
accessToken.user_id == revokeTokensFromUserId && accessToken.issuedAt < revokeTokensFromUserBeforeDate

🧃 Remarques

Le fichier authentication sera remanié ultérieurement pour séparer les logiques de usecase et de controller

😋 Pour tester

  • Avec FT_USER_TOKEN_AUD_CONFINEMENT_ENABLED=false
    -- se connecter avec un utilisateur de votre choix
    --Dans redis placer la clé/valeur suivante : "set" "temporary-storage:revoked-user-access:uuuuu" "dddddddddd" "ex" "1739808582"
    en remplaçant uuuuu par le userId de votre utilisateur connecté et dddddddddd par un timestamp en secondes, postérieur à la date de connection
    -- Naviguer dans l'espace Pix App de votre utilisateur
    -- Constater que les appels à l'api renvoient des 200
  • Avec FT_USER_TOKEN_AUD_CONFINEMENT_ENABLED=true
    --Tenter une navigation dans votre espace
    -- constater que vous êtes déconnecté et que vous ne pouvez pas vous reconnecter
    --Modifier la clé/valeur de Redis : "set" "temporary-storage:revoked-user-access:uuuuu" "dddddddddd" "ex" "1739808582"
    en remplaçant uuuuu par le userId de votre utilisateur et dddddddddd par un timestamp en secondes, antérieur à la date de connection
    --Constater que vous pouvez vous reconnecter sur ce compte

@pix-bot-github
Copy link

Une fois les applications déployées, elles seront accessibles via les liens suivants :

Les variables d'environnement seront accessibles via les liens suivants :

@EmmanuelleBonnemay EmmanuelleBonnemay force-pushed the pix-15947-revoke-user-access-token branch 2 times, most recently from ddcfc43 to 3f62d1c Compare January 29, 2025 16:09
@EmmanuelleBonnemay EmmanuelleBonnemay added 👀 Func Review Needed Need PO validation for this functionally 👀 Tech Review Needed labels Jan 29, 2025
Copy link
Contributor

@lego-technix lego-technix left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Lu et testé fonctionnellement avec succès avec Firefox 🦊

api/sample.env Outdated Show resolved Hide resolved
@EmmanuelleBonnemay EmmanuelleBonnemay force-pushed the pix-15947-revoke-user-access-token branch from 13d8c10 to 6fd8966 Compare January 31, 2025 07:35
@P-Jeremy
Copy link
Contributor

J'ai peu suivi le sujet hier. Mais de ce que je comprends, le code ne fait pas ce que dit le titre du ticket. On ne revoke pas ici un AT. On check si il est déjà révoqué 🤔

@lego-technix
Copy link
Contributor

lego-technix commented Jan 31, 2025

J'ai peu suivi le sujet hier. Mais de ce que je comprends, le code ne fait pas ce que dit le titre du ticket. On ne revoke pas ici un AT. On check si il est déjà révoqué 🤔

Effectivement les AT ne sont pas exactement révoqués, mais on stocke dans Redis l'information (récupérée dans le modèle RevokedUserAccess) qu'on révoque tous les accès d'un utilisateur antérieurs à une date. Cela revient donc à stocker une liste de révocation (plus large que pour les seuls AT). Donc fonctionnellement c'est la même chose que révoquer des AT.

@lego-technix
Copy link
Contributor

J'ai peu suivi le sujet hier. Mais de ce que je comprends, le code ne fait pas ce que dit le titre du ticket. On ne revoke pas ici un AT. On check si il est déjà révoqué 🤔

Effectivement les AT ne sont pas exactement révoqués, mais on stocke dans Redis l'information (récupérée dans le modèle RevokedUserAccess) qu'on révoque tous les accès d'un utilisateur antérieurs à une date. Cela revient donc à stocker une liste de révocation (plus large que pour les seuls AT). Donc fonctionnellement c'est la même chose que révoquer des AT.

Je vais renommer le titre de la PR et du ticket pour que cela soit plus en phase avec ce qui est effectivement fait 👍

@lego-technix lego-technix changed the title [FEATURE] Créer une fonction de révocation d'AT utilisateurs (pix-15947) [FEATURE] Créer une fonction de révocation des accès utilisateurs (pix-15947) Jan 31, 2025
api/sample.env Outdated Show resolved Hide resolved
@lego-technix lego-technix changed the title [FEATURE] Créer une fonction de révocation des accès utilisateurs (pix-15947) [FEATURE] Créer une fonction de révocation des accès utilisateurs (PIX-15947) Jan 31, 2025
@EmmanuelleBonnemay EmmanuelleBonnemay force-pushed the pix-15947-revoke-user-access-token branch from 6fd8966 to 51a3c0c Compare January 31, 2025 13:31
@EmmanuelleBonnemay EmmanuelleBonnemay added 🚀 Ready to Merge and removed 👀 Func Review Needed Need PO validation for this functionally labels Jan 31, 2025
@pix-service-auto-merge pix-service-auto-merge force-pushed the pix-15947-revoke-user-access-token branch from 51a3c0c to 191b23a Compare January 31, 2025 13:56
@bpetetot bpetetot closed this Jan 31, 2025
@bpetetot bpetetot reopened this Jan 31, 2025
@pix-bot-github
Copy link

Une fois les applications déployées, elles seront accessibles via les liens suivants :

Les variables d'environnement seront accessibles via les liens suivants :

@pix-service-auto-merge pix-service-auto-merge force-pushed the pix-15947-revoke-user-access-token branch from 191b23a to 153484c Compare January 31, 2025 15:15
@pix-bot-github
Copy link

Une fois les applications déployées, elles seront accessibles via les liens suivants :

Les variables d'environnement seront accessibles via les liens suivants :

@pix-service-auto-merge pix-service-auto-merge force-pushed the pix-15947-revoke-user-access-token branch from 153484c to c4183a4 Compare January 31, 2025 15:44
@pix-service-auto-merge pix-service-auto-merge merged commit 03726ca into dev Jan 31, 2025
8 of 10 checks passed
@pix-service-auto-merge pix-service-auto-merge deleted the pix-15947-revoke-user-access-token branch January 31, 2025 15:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants