Bug #76883
auth_oidc et attribut date (AttributeError: 'str' object has no attribute 'isoformat')
0%
Description
Une connexion à un IdP oidc, avec claims configurés pour mapper un attribut reçu vers un attribut du profil, de type date, échec ici parce que la valeur reçue est du texte,
https://sentry.entrouvert.org/entrouvert/publik/issues/109722/
AttributeError: 'str' object has no attribute 'isoformat' (11 additional frame(s) were not displayed) ... File "authentic2_auth_oidc/backends.py", line 380, in _authenticate setattr(user.verified_attributes, attribute, value) File "authentic2/custom_user/models.py", line 95, in __setattr__ self._set_sourced_attr(name, value, None) File "authentic2/custom_user/models.py", line 112, in _set_sourced_attr self.values[name] = attribute.set_value( File "authentic2/models.py", line 335, in set_value content = serialize(value) File "authentic2/attribute_kinds.py", line 363, in <lambda> 'serialize': lambda x: x and x.isoformat(),
Demandes liées
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a environ un an
- Projet changé de Suivi des traces à Authentic 2
Mis à jour par Paul Marillonnet il y a environ un an
- Statut changé de Nouveau à En cours
- Assigné à mis à Paul Marillonnet
Étrange, la dé-sérialisation s’est mal passée.
Mis à jour par Robot Gitea il y a environ un an
- Statut changé de En cours à Solution proposée
Paul Marillonnet (pmarillonnet) a ouvert une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/authentic/pulls/46
- Titre : attribute_kinds: check types at date (de)serialization time (#76883)
- Modifications : https://git.entrouvert.org/entrouvert/authentic/pulls/46/files
Mis à jour par Robot Gitea il y a environ un an
- Statut changé de Solution proposée à Solution validée
Agate Berriot (aberriot) a approuvé une pull request sur Gitea concernant cette demande :
Mis à jour par Benjamin Dauvergne il y a 12 mois
- Statut changé de Solution validée à En cours
Pour moi ce n'est pas la bonne correction, il faudrait pouvoir alimenter un champ date avec une date sous forme de chaîne ici, je ne pense pas que ce soit mal configuré. La chaîne '1977-04-02'
a le bon format.
C'est juste qu'on a jamais prévu de recevoir d'attribut autre que des chaînes depuis un IdP OIDC pour l'instant. Il manque l'implémentation de la déserialisation depuis le JSON fournie par un IdP (et on a le même problème dans auth-saml, avec le contenu texte des noeuds AttributeValue). On pourrait bêtement réutiliser le deserialize qui existe mais il faudrait avoir une convention entre deserialize et ceux qui l'appellent en cas d'erreur, comme lever ValidationError ou ValueError.
Mis à jour par Paul Marillonnet il y a 12 mois
Benjamin Dauvergne a écrit :
Pour moi ce n'est pas la bonne correction, il faudrait pouvoir alimenter un champ date avec une date sous forme de chaîne ici, je ne pense pas que ce soit mal configuré. La chaîne
'1977-04-02'
a le bon format.C'est juste qu'on a jamais prévu de recevoir d'attribut autre que des chaînes depuis un IdP OIDC pour l'instant.
Ok, je cherchais en vain de le code l’endroit où on supportait des attributs autres que des chaînes. Je vais faire un autre ticket.
Mis à jour par Paul Marillonnet il y a 12 mois
- Lié à Development #77171: auth_oidc : pouvoir recevoir des attributs autres que des chaînes de caractères ajouté
Mis à jour par Robot Gitea il y a 9 mois
- Statut changé de En cours à Résolu (à déployer)
Paul Marillonnet (pmarillonnet) a mergé une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/authentic/pulls/46
- Titre : attribute_kinds: check types at date (de)serialization time (#76883)
- Modifications : https://git.entrouvert.org/entrouvert/authentic/pulls/46/files
Mis à jour par Transition automatique il y a 9 mois
- Statut changé de Résolu (à déployer) à Solution déployée
attribute_kinds: check types at date (de)serialization time (#76883)
Poorly-configured authn backends can lead to erroneous date data types sent
to profile attributes. Date attribute (de)serialization should perform
type checks.