Projet

Général

Profil

Bug #42646

saml, unhashable type: 'set' au SSO

Ajouté par Frédéric Péters il y a presque 4 ans. Mis à jour il y a presque 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Catégorie:
-
Version cible:
-
Début:
07 mai 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Traceback:

File "/usr/lib/python2.7/dist-packages/django/core/handlers/exception.py" in inner
  41.             response = get_response(request)

File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in _get_response
  187.                 response = self.process_exception_by_middleware(e, request)

File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in _get_response
  185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/usr/lib/python2.7/dist-packages/authentic2/decorators.py" in f
  47.             return func(request, *args, **kwargs)

File "/usr/lib/python2.7/dist-packages/authentic2/decorators.py" in f
  47.             return func(request, *args, **kwargs)

File "/usr/lib/python2.7/dist-packages/django/views/decorators/cache.py" in _wrapped_view_func
  57.         response = view_func(request, *args, **kwargs)

File "/usr/lib/python2.7/dist-packages/authentic2/idp/saml/saml2_endpoints.py" in continue_sso
  680.         nid_format=nid_format)

File "/usr/lib/python2.7/dist-packages/authentic2/idp/saml/saml2_endpoints.py" in sso_after_process_request
  900.     name_id = build_assertion(request, login, provider, nid_format=nid_format)

File "/usr/lib/python2.7/dist-packages/authentic2/idp/saml/saml2_endpoints.py" in build_assertion
  471.     add_attributes(request, entity_id, assertion, provider, nid_format)

File "/usr/lib/python2.7/dist-packages/authentic2/idp/saml/saml2_endpoints.py" in add_attributes
  311.         if (name, name_format, value) in seen:

Exception Type: TypeError at /idp/saml2/continue
Exception Value: unhashable type: 'set'

Fichiers

Révisions associées

Révision 1c7ce145 (diff)
Ajouté par Frédéric Péters il y a presque 4 ans

saml: deal with set attributes (#42646)

Historique

#1

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

Ça se joue autour de 8b44f67d448950a5c20751ecbbf9b95e596a5db0 qui contient, simplifié,

-    tuples = [tuple(t) for definition in qs for t in definition.to_tuples(ctx)]
+    tuples = [tuple(t) for definition in definitions for t in definition.to_tuples(attributes_ctx)]

Mais definition ça sort d'une boucle au-dessus, ce qui est bizarre (mais était déjà là avant).

#2

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

Et non c'est un autre de la série le coupable, 5e87295adc8f4b256b18817a831361feecb79e11.

-        for text_value in normalize_attribute_values(values):
-            yield (name, name_format, friendly_name, text_value)
+        if not isinstance(values, list):
+            values = [values]
+        for value in values:
+            yield (name, name_format, friendly_name, value)

Et là un attribut de type set, il se trouve pris dans le not isinstance, alors que j'imagine l'intention est plutôt d'itérer dessus.

Patch attaché, testé live sur la recette.

#3

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

Et poussé et déployé mais je laisse ouvert, pour commentaire.

#4

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

  • Statut changé de Solution proposée à Solution déployée

Auto validé déployé et j'ai créé #42657 pour que des tests soient ajoutés.

Formats disponibles : Atom PDF