Bug #24404
Cookies persistants dans les appels faits avec utils.requests
0%
Description
Cf. Capture (on voit "chargement" en rouge à la place de la cellule), capture prise sur https://portail-citoyen-publik.entrouvert.com/
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Pierre Cros il y a presque 6 ans
Testé avec un utilisateur créé ce matin et ayant reçu 2 docs : pcros+titi@entrouvert.com
Avec un autre utilisateur je vois la cellule sans problème.
Mis à jour par Frédéric Péters il y a presque 6 ans
- Projet changé de Combo à Fargo
C'est Fargo, comme bijoe, qui se planterait de clé de signature.
entrouvert.com-access.log:5.135.221.12 - - [10/Jun/2018:12:08:07 +0200] "GET /api/documents/recently-added?NameID=b5df639331494bffa80da900994f1c3b&orig=portail-citoyen-publik.entrouvert.com&algo=sha256×tamp=2018-06-10T10%3A08%3A07Z&nonce=de1ab17c87fd791083356f505e6427c9L&signature=SMu0fbfDSJnmL7W90hQqto4fVG6wpNuBi/Xn1HDxQLc%3D HTTP/1.1" 301 5 "-" "python-requests/2.11.1"
Mis à jour par Frédéric Péters il y a presque 6 ans
(logging supplémentaire ajouté dans hobo/rest_authentication.py)
Mis à jour par Frédéric Péters il y a presque 6 ans
- Projet changé de Fargo à Combo
- Assigné à mis à Frédéric Péters
"Fun", j'ai trouvé le bug.
Mis à jour par Frédéric Péters il y a presque 6 ans
- Fichier 0001-utils-don-t-let-requests-persist-cookies-24404.patch 0001-utils-don-t-let-requests-persist-cookies-24404.patch ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
En descendant beaucoup, hobo, django rest framework, django, en posant pas mal de print de debug, en faisant ça sur la prod pour avoir une bonne dose de l'aléatoire d'une réelle utilisation (pas bien, mais sans ça je n'y serais pas arrivé), ce qui se passe c'est que le code de la vue fargo n'est jamais appelé (ok d'accord), mais le code de nos classes d'authentification rest framework de hobo non plus (et donc l'hypothèse de signature invalide, à l'eau), et en fait le code de django rest framework en lui-même, jamais appelé non plus.
Il se fait que par moment, le code de la vue n'est pas appelé, parce qu'un middleware intervient.
Ce middleware, c'est PassiveAuthenticationMiddleware, de django-mellon, qui décide d'intercepter la vue pour tenter une redirection. Qui décide ça parce qu'un cookie (settings..OPENED_SESSION_COOKIE_NAME) est présent.
Ce cookie, il est présent parce que combo.utils.requests, c'est un RequestSession, qui persiste les cookies, et qu'il y a eu, lors du traitement d'une requête passée, un appel qui aura enregistré ce cookie; dans mon idée ça pouvait arriver via une redirection mais en fait, ça vient d'un appel direct à l'API d'Authentic, genre https://connexion-publik.entrouvert.com/api/users/(whatever).
Solution cheap, cookies.clear() systématique.
Mis à jour par Frédéric Péters il y a presque 6 ans
- Lié à Bug #24228: 302 sur /visualization/json/ ajouté
Mis à jour par Frédéric Péters il y a presque 6 ans
- Lié à Bug #24407: Ne pas poser A2_OPENED_SESSION_COOKIE_DOMAIN sur des appels à l'API ajouté
Mis à jour par Frédéric Péters il y a presque 6 ans
- Sujet changé de Cellule "documents récents" ne se charge pas à Cookies persistants dans les appels faits avec utils.requests
Mis à jour par Thomas Noël il y a presque 6 ans
Belle prise !...
Ack
(à un moment je me suis demandé si on avait un besoin de quand même persister ces cookies, quelques git grep et je pense que jamais. À pousser en envoyer rapidement en recette quand même)
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
Thomas Noël a écrit :
Belle prise !...
Ack
(à un moment je me suis demandé si on avait un besoin de quand même persister ces cookies, quelques git grep et je pense que jamais. À pousser en envoyer rapidement en recette quand même)
Surtout c'est incohérent, si ce RequestSession est paratagé entre toutes les requêtes, on peut se retrouver avec le cookie d'un utilisateur x repris pour les requêtes y (genre un WS en deux parties, un premier qui check login/mot de passe poser un cookie, un deuxième qui fournit un service).
Mis à jour par Frédéric Péters il y a presque 6 ans
- Statut changé de En cours à Résolu (à déployer)
commit cd8eca8627718d8c35eb46f18c27a875adc2c89b Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sun Jun 10 14:31:32 2018 +0200 fargo: add required trailing slash to recent-documents API endpoint (#24406)
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
utils: don't let requests persist cookies (#24404)