Projet

Général

Profil

Bug #81211

Middleware : mauvaise détection d'une requête ajax

Ajouté par Emmanuel Cazenave il y a 8 mois. Mis à jour il y a 7 mois.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
14 septembre 2023
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

De #81141#note-4, une requête ajax faite depuis wcs vers combo qui n'est pas détectée comme étant ajax, mellon qui tente une authentification passive et échec.

A lire le code il me semble que ça a du marcher via :

# Skip AJAX requests
if request.headers.get('x-requested-with') == 'XMLHttpRequest':
    return

Mais là point de 'x-requested-with' dans la requête, j'imagine que ça vient d'une évolution de JQuery et que du coup la solution n'est pas du tout dans mellon, mais ce ticket en première approche pour ça ne se perde pas dans les limbes.

Potentiellement des problèmes dans combo où on voit :

def is_ajax(request):
    return request.headers.get('x-requested-with') == 'XMLHttpRequest'

Demandes liées

Lié à Authentic 2 - Development #82266: idp_saml2: autoriser les requêtes CORS sur /idp/saml2/sso/Fermé11 octobre 2023

Actions

Révisions associées

Révision c98d4629 (diff)
Ajouté par Benjamin Dauvergne il y a 8 mois

middleware: check ajax request with sec-fetch-mode header header (#81211)

Historique

#2

Mis à jour par Benjamin Dauvergne il y a 8 mois

À mon avis on devrait rajouter ça maintenant:

sec_fetch_mode = request.headers.get('sec-fetch-mode')
if sec_fetch_mode and sec_fetch_mode != 'navigate':
    return

#3

Mis à jour par Benjamin Dauvergne il y a 8 mois

Mais je me demande quand même comment on fait pour personnaliser le template d'une brique en fonction du statut connecté ou pas d'un utilisateur si une cellule est chargée en ajax, visiblement ça ne marchera jamais si on est pas d'abord connecté au portail. J'ai l'impression qu'on a déjà cette discussion qui avait peut-être menée à détecté ces appels ajax dans mellon.

#4

Mis à jour par Emmanuel Cazenave il y a 8 mois

Benjamin Dauvergne a écrit :

À mon avis on devrait rajouter ça maintenant:
[...]

Ça marcherait sur mon exemple, la requête est faite avec :

Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-site
#5

Mis à jour par Emmanuel Cazenave il y a 8 mois

Benjamin Dauvergne a écrit :

visiblement ça ne marchera jamais si on est pas d'abord connecté au portail.

Oui même analyse ici avec Thomas N.

Sinon juste avant ton message, je m'apprêtais à suggérer de passer systématiquement un ?no-passive-auth dans combo.public.js::combo_load_cell sur l'idée qu'une authent passive ne peut pas marcher en ajax.

#6

Mis à jour par Benjamin Dauvergne il y a 8 mois

  • Assigné à mis à Benjamin Dauvergne
#7

Mis à jour par Benjamin Dauvergne il y a 8 mois

  • Assigné à Benjamin Dauvergne supprimé

Emmanuel Cazenave a écrit :

Sinon juste avant ton message, je m'apprêtais à suggérer de passer systématiquement un ?no-passive-auth dans combo.public.js::combo_load_cell sur l'idée qu'une authent passive ne peut pas marcher en ajax.

Si vous voulez, mais c'est pas le bon projet :)

#8

Mis à jour par Robot Gitea il y a 8 mois

  • Statut changé de Nouveau à Solution proposée
  • Assigné à mis à Benjamin Dauvergne

Benjamin Dauvergne (bdauvergne) a ouvert une pull request sur Gitea concernant cette demande :

#9

Mis à jour par Benjamin Dauvergne il y a 8 mois

Emmanuel Cazenave a écrit :

Benjamin Dauvergne a écrit :

visiblement ça ne marchera jamais si on est pas d'abord connecté au portail.

Oui même analyse ici avec Thomas N.

Je dis ça parce qu'en première analyse je voulais autoriser le passage des requêtes CORS sur /idp/saml2/sso/, car en vrai c'est ça qui bloque, le fait que le endpoint de SSO SAML n'ajoute pas l'entête Allow-CORS (à faire sélectivement certainement, genre en testant que l'entête Origin match le domaine du service SAML demandeur et en posant Allow-CORS: header['origin']). Ce ticket c'est pour garder le statu-quo actuel, c'est déjà bien.

#10

Mis à jour par Robot Gitea il y a 8 mois

  • Statut changé de Solution proposée à Solution validée

Emmanuel Cazenave (ecazenave) a approuvé une pull request sur Gitea concernant cette demande :

#11

Mis à jour par Robot Gitea il y a 7 mois

  • Statut changé de Solution validée à Résolu (à déployer)

Benjamin Dauvergne (bdauvergne) a mergé une pull request sur Gitea concernant cette demande :

#12

Mis à jour par Transition automatique il y a 7 mois

  • Statut changé de Résolu (à déployer) à Solution déployée
#13

Mis à jour par Benjamin Dauvergne il y a 7 mois

  • Lié à Development #82266: idp_saml2: autoriser les requêtes CORS sur /idp/saml2/sso/ ajouté
#14

Mis à jour par Transition automatique il y a 5 mois

Automatic expiration

Formats disponibles : Atom PDF