Développement #70492
auth_saml, améliorer la présentation des métadonnées
0%
Description
Quand on fournit les métadonnées via le champs texte, le détail du moyen d'authentification affiche un gros bloc XML tout moche.
Piste d'amélioration : avoir un lien « voir les métadonnées », ça ouvre une URL en .xml qu'un navigateur permet de visualiser avec de la coloration syntaxique/de télécharger en faisant Ctrl + S, et en prime on passe un coup de prettyprint en amont.
Files
Associated revisions
auth_saml: display xml metadata in separate view (#70492)
History
Updated by Valentin Deniaud about 2 years ago
- File 0002-auth_saml-display-xml-metadata-in-separate-view-7049.patch 0002-auth_saml-display-xml-metadata-in-separate-view-7049.patch added
- File 0001-auth_saml-validate-xml-metadata-70492.patch 0001-auth_saml-validate-xml-metadata-70492.patch added
- Status changed from Nouveau to Solution proposée
- Patch proposed changed from No to Yes
0001 en bonus pour valider les métadonnées en amont, le code est copié de la méthode get_entity_id de mellon/adapters.py.
À noter dans 0002, ET.indent est introduit en python 3.9, on supporte encore une version inférieure ?
Updated by Thomas Noël about 2 years ago
J'arrive après la bataille mais
ça ouvre une URL en .xml qu'un navigateur permet de visualiser avec de la coloration syntaxique/de télécharger en faisant Ctrl + S
Il faut savoir que cet imbécile de firefox se permet de "corriger" le XML, genre s'amuse à n'afficher aucun attribut xmlns:.. ; même le ctrl-s n'est pas parfaitement égal au fichier original (nettoyage d'espaces et des CRLF, c'est pas méchant, mais quand même).
Bref, c'est pas si méchant, mais il faut le savoir : "voir le xml" dans firefox ne permet pas dire qu'il manque tel ou tel truc, c'est peut-être firefox qui affiche n'importe quoi.
De là, je me dis qu'ajouter une dose supplémentaire de parsing via ElementTree, ça peut encore ajouter le bazar : il serait préférable, selon moi, d'envoyer le contenu de authenticator.metadata "tel quel", pour débusquer le bogue caché tout au fond du xml le jour où.
Updated by Benjamin Dauvergne about 2 years ago
- Status changed from Solution proposée to Solution validée
Valentin Deniaud a écrit :
À noter dans 0002, ET.indent est introduit en python 3.9, on supporte encore une version inférieure ?
Sinon il y a etree.tostring(root, pretty_print=True))
via from lxml import etree
qui est disponible partout (et etree.parse n'est pas sensible aux attaques DOS comme ET).
Thomas Noël a écrit :
J'arrive après la bataille mais
ça ouvre une URL en .xml qu'un navigateur permet de visualiser avec de la coloration syntaxique/de télécharger en faisant Ctrl + S
Il faut savoir que cet imbécile de firefox se permet de "corriger" le XML, genre s'amuse à n'afficher aucun attribut xmlns:.. ; même le ctrl-s n'est pas parfaitement égal au fichier original (nettoyage d'espaces et des CRLF, c'est pas méchant, mais quand même).
Ce n'est pas trop gênant, Ctrl+S marche à tous les coups (ou clique droit, enregistrer la cible du lien une page avant), les fichiers de métadonnée ne contiennent aucun texte significatif pouvant être altéré par du formatage (les clés publiques c'est toujours une longue chaîne base64 sans espaces). C'est surtout le copier/coller qui déconne.
Updated by Thomas Noël about 2 years ago
Je trouve quand même dommage de ne pas renvoyer directement le contenu de authenticator.metadata tel quel (et comme ça pas de "ET.indent"). Mais bon.
Updated by Frédéric Péters about 2 years ago
À noter dans 0002, ET.indent est introduit en python 3.9, on supporte encore une version inférieure ?
Oui on doit encore gérer buster.
(et oui déjà on a fait n'importe quoi avec la config uwsgi)
Updated by Benjamin Dauvergne about 2 years ago
Thomas Noël a écrit :
Je trouve quand même dommage de ne pas renvoyer directement le contenu de authenticator.metadata tel quel (et comme ça pas de "ET.indent"). Mais bon.
Après test chez moi sur /idp/saml2/metadata, on ne voit rien du tout à part le base64 de la clé publique désormais, je pense qu'il faut mettre text/plain et ne pas indenter, ou alors faire une vrai vue et présenter ça dans un
<pre>..</pre>
et ne renvoyer le contenu XML que sur une autre URL avec un paramètre
?raw@ mais bon ça fait déjà beaucoup de boulot pour un truc qui ne sert à rien, jamais j'ai besoin de regarder les métadonnées, je ne sais pas qui fait ça.Updated by Frédéric Péters about 2 years ago
Après test chez moi sur /idp/saml2/metadata, on ne voit rien du tout à part le base64 de la clé publique désormais
J'ai eu un doute sur "désormais" mais ce patch ne change rien ici; chez moi dernier Firefox affiche correctement (formaté etc. cf capture) et au ctrl-s c'est bien le contenu non modifié qui est enregistré. (chromium pareil) Je serais pour passer un peu de temps à comprendre le comportement de ton navigateur (extensions?) avant de changer/complexifier quoique ce soit.
Updated by Benjamin Dauvergne about 2 years ago
Frédéric Péters a écrit :
J'ai eu un doute sur "désormais" mais ce patch ne change rien ici; chez moi dernier Firefox affiche correctement (formaté etc. cf capture) et au ctrl-s c'est bien le contenu non modifié qui est enregistré. (chromium pareil)
Je n'ai jamais dit que le contenu était modifié à la sauvegarde.
Je serais pour passer un peu de temps à comprendre le comportement de ton navigateur (extensions?) avant de changer/complexifier quoique ce soit.
Ok c'est grammalect qui m'a tué. Mais donc le indent est définitivement inutile ici.
Updated by Frédéric Péters about 2 years ago
Je n'ai jamais dit que le contenu était modifié à la sauvegarde.
Mon commentaire était plus global que juste le petit bout que j'ai repris, je parlais de ctrl-s parce que ça avait été également questionné dans #70492#note-3.
Updated by Thomas Noël about 2 years ago
Frédéric Péters a écrit :
Après test chez moi sur /idp/saml2/metadata, on ne voit rien du tout à part le base64 de la clé publique désormais
J'ai eu un doute sur "désormais" mais ce patch ne change rien ici; chez moi dernier Firefox affiche correctement (formaté etc. cf capture) et au ctrl-s c'est bien le contenu non modifié qui est enregistré. (chromium pareil) Je serais pour passer un peu de temps à comprendre le comportement de ton navigateur (extensions?) avant de changer/complexifier quoique ce soit.
J'ai testé avant de parler, https://perso.entrouvert.org/~thomas/netscaler-metadata.xml n'est pas le contenu du fichier sur mon public_html qui n'est pas non plus exactement ce qu'on obtient avec ctrl-s. Mais c'est pas grave, on s'en fout un peu.u
Pour ma part j'ai juste besoin de voir les metadonnées afin de vérifier qu'elles sont bien les bonnes (parce que sinon, comment ?). Et au final l'affichage bourrin actuel me va, c'est juste qu'il manque un formatage pre../pre
. Télécharger le fichier, pas besoin.
Updated by Frédéric Péters about 2 years ago
J'entends mais « Je serais pour passer un peu de temps à comprendre le comportement de ton navigateur (extensions?) ».
Parce que chez moi, fichier enregistré via ctrl-s vs le fichier d'origine,
$ md5sum /tmp/netscaler-metadata.xml 251bea090bca66bafcfe98edc0ff12ea /tmp/netscaler-metadata.xml $ ssh leucas.entrouvert.org md5sum ~thomas/public_html/netscaler-metadata.xml 251bea090bca66bafcfe98edc0ff12ea /home/thomas/public_html/netscaler-metadata.xml
Updated by Benjamin Dauvergne about 2 years ago
Frédéric Péters a écrit :
J'entends mais « Je serais pour passer un peu de temps à comprendre le comportement de ton navigateur (extensions?) ».
Parce que chez moi, fichier enregistré via ctrl-s vs le fichier d'origine,
[...]
Pareil que Thomas finalement :
--- netscaler-metadata2.xml 2022-10-20 17:53:08.000000000 +0200 +++ netscaler-metadata.xml 2022-10-21 12:02:09.249648768 +0200 @@ -2,14 +2,14 @@ <md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" ID="#_e1f37d80e77061185c7f579d7b1509db" entityID="https://aaa.dordogne.fr"> <ds:Signature xmlns:ds="https://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo xmlns:ds="https://www.w3.org/2000/09/xmldsig#"> - <ds:CanonicalizationMethod Algorithm="https://www.w3.org/2001/10/xml-exc-c14n#" /> - <ds:SignatureMethod Algorithm="https://www.w3.org/2000/09/xmldsig#rsa-sha1" /> + <ds:CanonicalizationMethod Algorithm="https://www.w3.org/2001/10/xml-exc-c14n#"/> + <ds:SignatureMethod Algorithm="https://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
Firefox (sans aucune extension activée) enlève les blancs avant les />
, c'est pas bien grave, ça ne casserait même pas une signature XML.
Updated by Thomas Noël about 2 years ago
Benjamin Dauvergne a écrit :
Firefox (sans aucune extension activée) enlève les blancs avant les
/>
, c'est pas bien grave, ça ne casserait même pas une signature XML.
Oui, on s'en fout. Ce sur quoi j'insiste cependant c'est de retirer le parsing par ElementTree, il ne sert à rien et pourrait même, au pire, un jour, nous induire en erreur. J'insiste un peu car ça sera le seul moyen simple d'accès aux metadata vraiment utilisées par lasso.
Updated by Valentin Deniaud about 2 years ago
- File 0001-auth_saml-validate-xml-metadata-70492.patch 0001-auth_saml-validate-xml-metadata-70492.patch added
- Status changed from Solution validée to Solution proposée
- File 0002-auth_saml-display-xml-metadata-in-separate-view-7049.patch 0002-auth_saml-display-xml-metadata-in-separate-view-7049.patch added
Voilà j'ai enlevé l'indentation.
Updated by Benjamin Dauvergne about 2 years ago
- Status changed from Solution proposée to Solution validée
Pas critique, pour vendredi.
Updated by Valentin Deniaud about 2 years ago
- Status changed from Solution validée to Résolu (à déployer)
commit 1144f915b6d1cb12f9c58f4c67de442c1c48c72c Author: Valentin Deniaud <vdeniaud@entrouvert.com> Date: Thu Oct 20 14:45:25 2022 +0200 auth_saml: display xml metadata in separate view (#70492) commit b4c684b68537f81d9462df7b06a05639c24773f0 Author: Valentin Deniaud <vdeniaud@entrouvert.com> Date: Thu Oct 20 16:56:49 2022 +0200 auth_saml: validate xml metadata (#70492)
Updated by Transition automatique almost 2 years ago
- Status changed from Résolu (à déployer) to Solution déployée
auth_saml: validate xml metadata (#70492)