Development #56819
Pouvoir fonctionner sans l'URL de l'IDP dans mellon_usersamlidentifier.issuer
0%
Description
Pour faciliter les changements de noms de domaine.
Fichiers
Demandes liées
Historique
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
Avec le code actuel la commande SQL à faire serait :
UPDATE mellon_usersamlidentifier SET issuer = 'https://new-entity-id....' WHERE issuer = 'https://old-entity-id'
et ceci sur chaque tenant.
En transformant juste issuer en FK vers un table mellon_issuer, ça donnera ça :
UPDATE mellon_issuer SET entity_id = 'https://new-entity-id....' WHERE entity_id = 'https://old-entity-id'
le gain en terme de travail pour la migration est nul.
Ce qu'il faut chercher à obtenir c'est qu'en changeant les URLs dans hobo et en redéployant tout se reconfigure tout seul.
Pour cela je propose de généraliser la présence d'un identifiant pérenne et intelligible dans la configuration MELLON_IDENTITY_PROVIDERS (un slug) comme c'est déjà fait dans authentic2-auth-saml pour d'autres raisons (la possibilité de cible le bouton d'authentification lors de la configuration de la page de login).
On passerai donc à un modèle MellonIssuer(id, entity_id, slug), lors de la recherche d'un entity_id on cherche en premier l'issuer, si on ne le trouve pas, on le cherche la configuration si on le trouve on re-recherche un MellonIssuer en se basant sur le slug de la configuration et on met à jour l'entity_id. Voilà ma proposition au doigt mouillé.
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Fichier 0003-drop-and-rename-issuer-field-56819.patch 0003-drop-and-rename-issuer-field-56819.patch ajouté
- Fichier 0001-add-Issuer-model-56819.patch 0001-add-Issuer-model-56819.patch ajouté
- Fichier 0002-migrate-issuer-data-56819.patch 0002-migrate-issuer-data-56819.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Ça peut être poussé avant d'ajouter les slugs du coté du settings loader mellon.
Mis à jour par Serghei Mihai il y a plus de 2 ans
- Statut changé de Solution proposée à En cours
Dans le patch 0002, fonction migrate_issuer_forward
:
issuer_instance = Issuer.objects.create(entity_id=issuer)
c'est pas plutôt get_or_create
étant donné que entity_id
a unique=True
?
dans migrate_issuer_backward
:
UserSAMLIdentifier.objects.filter(issuer_fk=issuer).update(isuer=issuer.entity_id) <= isuer !
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
Serghei Mihai a écrit :
Dans le patch 0002, fonction
migrate_issuer_forward
:
[...]c'est pas plutôt
get_or_create
étant donné queentity_id
aunique=True
?
Normalement il n'y aucun issuer, et s'il y en a ça va être un problème.
dans
migrate_issuer_backward
:[...]
Ça c'est bizarre que ça n'ait pas été détecté par le test de la migration vu qu'il commence par partir en arrière.
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Fichier 0003-drop-and-rename-issuer-field-56819.patch 0003-drop-and-rename-issuer-field-56819.patch ajouté
- Fichier 0001-add-Issuer-model-56819.patch 0001-add-Issuer-model-56819.patch ajouté
- Fichier 0002-migrate-issuer-data-56819.patch 0002-migrate-issuer-data-56819.patch ajouté
- Statut changé de En cours à Solution proposée
Forcément sans les tests c'est moins visible. Voilà, point soulevé corrigé et test adapté pour le détecter.
Mis à jour par Serghei Mihai il y a plus de 2 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 73bfa476efdf54c00999e525351ded9a9fad63ba Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Tue Sep 14 21:34:50 2021 +0200 drop and rename issuer field (#56819) commit a851b5b2ca5c63053e3c2c52c21f63f6163c3e73 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Tue Sep 14 21:03:16 2021 +0200 migrate issuer data (#56819) commit ba312afc3e9e293488deb2cc68004c347a3eab58 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Tue Sep 14 20:54:18 2021 +0200 add Issuer model (#56819)
Mis à jour par Frédéric Péters il y a plus de 2 ans
- Statut changé de Résolu (à déployer) à Solution déployée
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Lié à Development #57084: ValueError: invalid literal for int() with base 10: 'https://connexion-eurelien.test.entrouvert.org/idp/saml2... ajouté
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Lié à Development #57101: Adapter auth_saml au changement de schéma dans django-mellon ajouté
Mis à jour par Benjamin Dauvergne il y a plus d'un an
- Lié à Support #57729: Migration d'instances de Publik : changement de nom de domaine ajouté
add Issuer model (#56819)