Projet

Général

Profil

Development #57525

crash sur date_joined utilisé en claim oidc, Object of type datetime is not JSON serializable

Ajouté par Frédéric Péters il y a plus de 2 ans. Mis à jour il y a plus de 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
01 octobre 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

https://sentry.entrouvert.org/entrouvert/publik/issues/52178/

  File "authentic2_idp_oidc/views.py", line 761, in token
    response = tokens_from_authz_code(request)
  File "authentic2_idp_oidc/views.py", line 746, in tokens_from_authz_code
    'id_token': utils.make_idtoken(client, id_token),
  File "authentic2_idp_oidc/utils.py", line 101, in make_idtoken
    jwt = JWT(header=header, claims=claims)
  File "jwcrypto/jwt.py", line 201, in __init__
    self.claims = claims
  File "jwcrypto/jwt.py", line 239, in claims
    self._claims = json_encode(c)
  File "jwcrypto/common.py", line 34, in json_encode
    return json.dumps(string, separators=(',', ':'), sort_keys=True)
  File "__init__.py", line 238, in dumps
    **kw).encode(obj)
  File "json/encoder.py", line 199, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "json/encoder.py", line 257, in iterencode
    return _iterencode(o, 0)
  File "json/encoder.py", line 179, in default
    raise TypeError(f'Object of type {o.__class__.__name__} ')

dans make_idtoken on se trouve avec claims qui contient :

{accord_placit: None,
 accord_placit_listing: None,
 aud: 'b725302d-8ba1-4e2f-a64c-d76190405154',
 auth_time: [Filtered],
 date_joined: datetime.datetime(2021, 9, 17, 7, 48, 2, 545741, tzinfo=<UTC>),
 email: '...',
 ...

Fichiers

Révisions associées

Révision 7d2c4ef1 (diff)
Ajouté par Benjamin Dauvergne il y a plus de 2 ans

idp_oidc: refactor cleaning of claim values (#57525)

Historique

#1

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Assigné à mis à Benjamin Dauvergne
#2

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

#3

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

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

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

pylint n'aime pas (à raison en général) l'interpolation directe dans la chaîne du message de log; mais le fait est que sentry déduplique les traces à partir de cela, il faut donc mettre directement dedans les choses dont on pense qu'elles devraient servir à la déduplication. Ici je souhaite qu'une trace soit différente si claim.name/claim.value diffèrent.

#5

Mis à jour par Paul Marillonnet il y a plus de 2 ans

  • Statut changé de Solution proposée à Solution validée

Ok.

#6

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 7d2c4ef181a3aaeb23bf60b449df939842aa69ed
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Fri Oct 1 18:58:46 2021 +0200

    idp_oidc: refactor cleaning of claim values (#57525)
#7

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

Formats disponibles : Atom PDF