Project

General

Profile

Bug #81211

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

Added by Emmanuel Cazenave 14 days ago. Updated 6 days ago.

Status:
Solution déployée
Priority:
Normal
Target version:
-
Start date:
14 September 2023
Due date:
% Done:

0%

Estimated time:
Patch proposed:
No
Planning:
No

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'

Associated revisions

Revision c98d4629 (diff)
Added by Benjamin Dauvergne 14 days ago

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

History

#2

Updated by Benjamin Dauvergne 14 days ago

À 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

Updated by Benjamin Dauvergne 14 days ago

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

Updated by Emmanuel Cazenave 14 days ago

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

Updated by Emmanuel Cazenave 14 days ago

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

Updated by Benjamin Dauvergne 14 days ago

  • Assignee set to Benjamin Dauvergne
#7

Updated by Benjamin Dauvergne 14 days ago

  • Assignee deleted (Benjamin Dauvergne)

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

Updated by Robot Gitea 14 days ago

  • Status changed from Nouveau to Solution proposée
  • Assignee set to Benjamin Dauvergne

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

#9

Updated by Benjamin Dauvergne 14 days ago

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

Updated by Robot Gitea 14 days ago

  • Status changed from Solution proposée to Solution validée

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

#11

Updated by Robot Gitea 10 days ago

  • Status changed from Solution validée to Résolu (à déployer)

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

#12

Updated by Transition automatique 6 days ago

  • Status changed from Résolu (à déployer) to Solution déployée

Also available in: Atom PDF