Projet

Général

Profil

Bug #76883

auth_oidc et attribut date (AttributeError: 'str' object has no attribute 'isoformat')

Ajouté par Sentry Io il y a environ un an. Mis à jour il y a 9 mois.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
21 avril 2023
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

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

Lié à Authentic 2 - Development #77171: auth_oidc : pouvoir recevoir des attributs autres que des chaînes de caractèresNouveau02 mai 2023

Actions

Révisions associées

Révision 7c158f96 (diff)
Ajouté par Paul Marillonnet il y a 9 mois

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.

Historique

#1

Mis à jour par Frédéric Péters il y a environ un an

  • Projet changé de Suivi des traces à Authentic 2
#3

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.

#4

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 :

#5

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 :

#7

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.

#8

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.

#9

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é
#10

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 :

#11

Mis à jour par Transition automatique il y a 9 mois

  • Statut changé de Résolu (à déployer) à Solution déployée
#12

Mis à jour par Transition automatique il y a 7 mois

Automatic expiration

Formats disponibles : Atom PDF