Projet

Général

Profil

Development #67451

authentificateur saml : remplacer le champ texte chemin vers les métadonnées par un champ fichier

Ajouté par Valentin Deniaud il y a presque 2 ans. Mis à jour il y a plus d'un an.

Statut:
Rejeté
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
18 juillet 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Ce serait nettement plus propre, à voir si on arrive à écrire une migration ou si il faudra toujours se traîner le champ texte en plus.


Fichiers


Demandes liées

Lié à Authentic 2 - Development #69269: auth_saml: pré-remplir l'URL des métadonnées via l'entity_id référencée dans un fichier de métadonnée donné explicitementNouveau19 septembre 2022

Actions

Historique

#1

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

Même sans migration on peut juste ne plus afficher le champ texte, je pense.

#2

Mis à jour par Valentin Deniaud il y a plus d'un an

  • Assigné à mis à Valentin Deniaud
#3

Mis à jour par Valentin Deniaud il y a plus d'un an

Sans migration donc, en masquant le champ.

#4

Mis à jour par Thomas Noël il y a plus d'un an

Dans le clean, on pourrait râler quand il reste les deux possibilités :

if self.metadata_path and self.metadata_file:
    raise ValidationError('faut choisir dans la vie (merci d'effacer metadata_path)')

Aussi, peut-être que "upload_to" pourrait être du genre "saml_authenticator", voire une fonction qui nomme bien l'affaire :

def metadata_directory_path(instance, filename):
    return 'saml_authenticator_{0}/metadata.xml'.format(instance.id)

(mais ça peut peut-être faire un bogue lors de la toute première création de l'authentificator, peut-être qu'il n'a pas encore de id, je sais pas super trop)

#5

Mis à jour par Valentin Deniaud il y a plus d'un an

Thomas Noël a écrit :

Dans le clean, on pourrait râler quand il reste les deux possibilités :

Ça rejoint l'interdiction de fournir une URL et un fichier en même temps, c'est #66986, je pense qu'on peut gérer tout là bas.

Aussi, peut-être que "upload_to" pourrait être du genre "saml_authenticator", voire une fonction qui nomme bien l'affaire :

J'hésite, je trouve le rendu du champ fichier de Django assez moche parce qu'il affiche le chemin, cf screenshot. En plus si on upload de nouvelles métadonnées on se retrouvera à afficher « saml_authenticator_42/metadata_PuFdba.xml », parce que Django ajoute automatiquement un suffixe en cas de conflit de nommage. Réutiliser le nom du fichier envoyé ça laisse à l'admin la responsabilité de bien nommer son fichier, c'est peut-être le mieux qu'on puisse faire ?

#6

Mis à jour par Benjamin Dauvergne il y a plus d'un an

Ici comme ailleurs j'aurai une préférence pour avoir tout dans le modèle (même si en front c'est un champs fichier), donc un TextField (c'est fait comme ça sur LibertyProvider coté IdP et je ne le regreete pas), on se fout un peu du nom du fichier des métadonnées ensuite les media d'authentic ne doivent pas êtres exposés au public donc faudrait en plus une vue de téléchargement de toute façon.

Par contre ce serait bien de considérer l'entity_id issue du fichier comme l'URL et de l'ajouter aussi si on a un fort pressentiment que c'est une URL de métadonnées (genre on fait un GET et ça renvoit des métadonnées, avec un timeout à 5 secondes). Au niveau django-mellon on peut déclarer les deux et ça se mettra à jour, tout seul. Autant pour les ADFS on premise c'est rare que ça bouge mais pour AzureAD possible que ça fasse du roll-over de clé.

#7

Mis à jour par Valentin Deniaud il y a plus d'un an

Benjamin Dauvergne a écrit :

Ici comme ailleurs j'aurai une préférence pour avoir tout dans le modèle

Pourquoi ?

(même si en front c'est un champs fichier), donc un TextField

Le TextField existe, il n'y a donc rien à faire, je ne vais pas bricoler un champ fichier alimenté par un TextField pour s'éviter le copier coller nécessaire à remplir le TextField directement.

Ici comme ailleurs il s'agit de simplifier à la fois l'interface de configuration et le code, je ne produirai rien qui n'aille pas dans ce sens.

les media d'authentic ne doivent pas êtres exposés au public donc faudrait en plus une vue de téléchargement de toute façon.

Bonne remarque mais il y a juste à avoir un uuid aléatoire dans le chemin vers le fichier, c'est classique.

Par contre ce serait bien de considérer l'entity_id issue du fichier comme l'URL

Je te laisse ouvrir le ticket correspondant.

#8

Mis à jour par Benjamin Dauvergne il y a plus d'un an

Valentin Deniaud a écrit :

Pourquoi ?

C'est mieux d'avoir la configuration à un seul endroit, en base, qu'à plein d'endroits, ça enlève un accès disque inutile et ça ne coûte rien.

(même si en front c'est un champs fichier), donc un TextField

Le TextField existe, il n'y a donc rien à faire, je ne vais pas bricoler un champ fichier alimenté par un TextField pour s'éviter le copier coller nécessaire à remplir le TextField directement.

Ça ne me dérange pas.

Ici comme ailleurs il s'agit de simplifier à la fois l'interface de configuration et le code, je ne produirai rien qui n'aille pas dans ce sens.

Je parle du stockage, l'interface est très bien.

les media d'authentic ne doivent pas êtres exposés au public donc faudrait en plus une vue de téléchargement de toute façon.

Bonne remarque mais il y a juste à avoir un uuid aléatoire dans le chemin vers le fichier, c'est classique.

Pas exposé, c'est pas exposé, autant éviter un trou de sécurité plus tard quand on exposera une clé RSA stockée dans un fichier parce qu'on a pris une mauvaise habitude.

Par contre ce serait bien de considérer l'entity_id issue du fichier comme l'URL

Je te laisse ouvrir le ticket correspondant.

Ok.

#9

Mis à jour par Benjamin Dauvergne il y a plus d'un an

  • Statut changé de Solution proposée à En cours
#10

Mis à jour par Benjamin Dauvergne il y a plus d'un an

  • Lié à Development #69269: auth_saml: pré-remplir l'URL des métadonnées via l'entity_id référencée dans un fichier de métadonnée donné explicitement ajouté
#11

Mis à jour par Valentin Deniaud il y a plus d'un an

Benjamin Dauvergne a écrit :

Ici comme ailleurs j'aurai une préférence pour avoir tout dans le modèle (même si en front c'est un champs fichier), donc un TextField (c'est fait comme ça sur LibertyProvider coté IdP et je ne le regreete pas)

Joke's on you j'ai regardé le champ en question pour ma culture et il ne fonctionne pas, erreur systématique à l'upload du fichier.

Ça vient donc appuyer mon argument de ne rien bidouiller, revoici juste avec un chemin vers le fichier aléatoire.

#12

Mis à jour par Benjamin Dauvergne il y a plus d'un an

  • Statut changé de Solution proposée à En cours

Valentin Deniaud a écrit :

Ça vient donc appuyer mon argument de ne rien bidouiller, revoici juste avec un chemin vers le fichier aléatoire.

Oui moi aussi ne rien bidouiller, met juste un TextField, je n'ai pas dit de reprendre le widget de l'admin pour permettre l'upload.

#13

Mis à jour par Valentin Deniaud il y a plus d'un an

Je ne comprends plus ce qu'il faut faire, il y a déjà un TextField (SAMLAuthenticator.metadata).

Ce qui justifiait ce ticket c'est que le procédé « avoir metadata.xml, l'ouvrir, le copier, le coller dans le formulaire » paraissait moins bien que « avoir metadata.xml, l'uploader ».

#14

Mis à jour par Benjamin Dauvergne il y a plus d'un an

Dans ce cas je propose de simplement supprimer le champ chemin qui est effectivement une source d'erreur potentielle, et juste recopier les contenu dans le champ contenu XML. Le souci c'est surtout le champ texte qui contient un chemin sur le disque local, pas l'absence d'un champ fichier.

PS:

Ce qui justifiait ce ticket c'est que le procédé « avoir metadata.xml, l'ouvrir, le copier, le coller dans le formulaire » paraissait moins bien que « avoir metadata.xml, l'uploader ».

Il me semble que le souci c'était que quelqu'un (Fred/) a remarqué qu'il y avait des chemins vers des fichiers locaux, il a pu penser que c'était la seule façon de faire.

#15

Mis à jour par Valentin Deniaud il y a plus d'un an

  • Statut changé de En cours à Rejeté

OK allons-y pour virer le champs chemin et migrer les données dans le textfield, je vais ouvrir un autre ticket.

Formats disponibles : Atom PDF