Projet

Général

Profil

Bug #24404

Cookies persistants dans les appels faits avec utils.requests

Ajouté par Pierre Cros il y a presque 6 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
10 juin 2018
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

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

Lié à BiJoe - Bug #24228: 302 sur /visualization/json/Rejeté01 juin 2018

Actions
Lié à Authentic 2 - Bug #24407: Ne pas poser A2_OPENED_SESSION_COOKIE_DOMAIN sur des appels à l'APIFermé10 juin 2018

Actions

Révisions associées

Révision bfca66ed (diff)
Ajouté par Frédéric Péters il y a presque 6 ans

utils: don't let requests persist cookies (#24404)

Historique

#1

Mis à jour par Pierre Cros il y a presque 6 ans

Testé avec un utilisateur créé ce matin et ayant reçu 2 docs :
Avec un autre utilisateur je vois la cellule sans problème.

#2

Mis à jour par Pierre Cros il y a presque 6 ans

Et maintenant le pb a disparu...

#3

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&timestamp=2018-06-10T10%3A08%3A07Z&nonce=de1ab17c87fd791083356f505e6427c9L&signature=SMu0fbfDSJnmL7W90hQqto4fVG6wpNuBi/Xn1HDxQLc%3D HTTP/1.1" 301 5 "-" "python-requests/2.11.1" 
#4

Mis à jour par Frédéric Péters il y a presque 6 ans

(logging supplémentaire ajouté dans hobo/rest_authentication.py)

#5

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.

#6

Mis à jour par Frédéric Péters il y a presque 6 ans

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.

#7

Mis à jour par Frédéric Péters il y a presque 6 ans

  • Lié à Bug #24228: 302 sur /visualization/json/ ajouté
#8

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é
#9

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
#10

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)

#11

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).

#12

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)
#14

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

Formats disponibles : Atom PDF