Projet

Général

Profil

Development #47013

Le support des clés publiques nues est cassé

Ajouté par Benjamin Renard il y a plus de 3 ans. Mis à jour il y a plus de 3 ans.

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

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Sep 25 10:58:46 gavotte-pp authentic2[24524]: 176.159.32.89 eeadmin (d7fc71) 57cdef6c ERROR Internal Server Error: /idp/saml2/sso
                                              Traceback (most recent call last):
                                                File "/usr/lib/python3.5/xml/etree/ElementTree.py", line 1065, in _escape_cdata
                                                  if "&" in text:
                                              TypeError: a bytes-like object is required, not 'str'

                                              During handling of the above exception, another exception occurred:

                                              Traceback (most recent call last):
                                                File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py", line 41, in inner
                                                  response = get_response(request)
                                                File "/usr/lib/python3/dist-packages/django/core/handlers/base.py", line 187, in _get_response
                                                  response = self.process_exception_by_middleware(e, request)
                                                File "/usr/lib/python3/dist-packages/django/core/handlers/base.py", line 185, in _get_response
                                                  response = wrapped_callback(request, *callback_args, **callback_kwargs)
                                                File "/usr/lib/python3.5/contextlib.py", line 30, in inner
                                                  return func(*args, **kwds)
                                                File "/usr/lib/python3/dist-packages/authentic2/decorators.py", line 47, in f
                                                  return func(request, *args, **kwargs)
                                                File "/usr/lib/python3/dist-packages/authentic2/decorators.py", line 47, in f
                                                  return func(request, *args, **kwargs)
                                                File "/usr/lib/python3/dist-packages/django/views/decorators/cache.py", line 57, in _wrapped_view_func
                                                  response = view_func(request, *args, **kwargs)
                                                File "/usr/lib/python3/dist-packages/django/views/decorators/csrf.py", line 58, in wrapped_view
                                                  return view_func(*args, **kwargs)
                                                File "/usr/lib/python3/dist-packages/authentic2/idp/saml/saml2_endpoints.py", line 138, in f
                                                  return func(request, *args, **kwargs)
                                                File "/usr/lib/python3/dist-packages/authentic2/idp/saml/saml2_endpoints.py", line 488, in sso
                                                  server = create_server(request)
                                                File "/usr/lib/python3/dist-packages/authentic2/idp/saml/saml2_endpoints.py", line 1551, in create_server
                                                  __cached_server = create_saml2_server(request, idp_map=metadata_map, options=options)
                                                File "/usr/lib/python3/dist-packages/authentic2/saml/common.py", line 123, in create_saml2_server
                                                  options=options),
                                                File "/usr/lib/python3/dist-packages/authentic2/saml/common.py", line 111, in get_saml2_metadata
                                                  return str(metagen)
                                                File "/usr/lib/python3/dist-packages/authentic2/saml/saml2utils.py", line 282, in __str__
                                                  etree.tostring(self.root_element()))
                                                File "/usr/lib/python3.5/xml/etree/ElementTree.py", line 1134, in tostring
                                                  short_empty_elements=short_empty_elements)
                                                File "/usr/lib/python3.5/xml/etree/ElementTree.py", line 775, in write
                                                  short_empty_elements=short_empty_elements)
                                                File "/usr/lib/python3.5/xml/etree/ElementTree.py", line 940, in _serialize_xml
                                                  short_empty_elements=short_empty_elements)
                                                File "/usr/lib/python3.5/xml/etree/ElementTree.py", line 940, in _serialize_xml
                                                  short_empty_elements=short_empty_elements)
                                                File "/usr/lib/python3.5/xml/etree/ElementTree.py", line 940, in _serialize_xml
                                                  short_empty_elements=short_empty_elements)
                                                File "/usr/lib/python3.5/xml/etree/ElementTree.py", line 940, in _serialize_xml
                                                  short_empty_elements=short_empty_elements)
                                                File "/usr/lib/python3.5/xml/etree/ElementTree.py", line 940, in _serialize_xml
                                                  short_empty_elements=short_empty_elements)
                                                File "/usr/lib/python3.5/xml/etree/ElementTree.py", line 940, in _serialize_xml
                                                  short_empty_elements=short_empty_elements)
                                                File "/usr/lib/python3.5/xml/etree/ElementTree.py", line 937, in _serialize_xml
                                                  write(_escape_cdata(text))
                                                File "/usr/lib/python3.5/xml/etree/ElementTree.py", line 1073, in _escape_cdata
                                                  _raise_serialization_error(text)
                                                File "/usr/lib/python3.5/xml/etree/ElementTree.py", line 1056, in _raise_serialization_error
                                                  "cannot serialize %r (type %s)" % (text, type(text).__name__)
                                              TypeError: cannot serialize b'1JO+v2Bx3ylci8u4JmAqr6BnAqePwu1frInXGwauwmdfsB62ald/GYlpCR0LGheais0wzttetg/zjp4a6bDUzmW8nKmniF5P3QeSAaoVLfS5x/oFtSDBcPv5Sy0XxnIf+wd9ErdxMB2GX02vKuohBo8pvV7krflyhK+S3ulALro9b3ThS0f03Js/S9TzXZi+sRdyYXyANQsIlQCy3xBaumfvzVVCAaPMMA2/THW7hSa4y6OZ7lPv2GNnhvvlfeTPuA4kpfleQiNEHdsxD0eflGMJRqNVF1LxwRhwAKCALd5eLTE2We5szjTzALmL1K8BNVqjXMNj0fV+UQKI2DICRw==' (type bytes)

Note: Installation à partir du paquet Debian pour stretch (2.67-1~eob90+1) avec application du patch de #46984. Python 3.5.3.


Fichiers

Révisions associées

Révision 85c85b25 (diff)
Ajouté par Benjamin Dauvergne il y a plus de 3 ans

misc: reuse and factorize conversion of int to base64 (#47013)

Historique

#1

Mis à jour par Benjamin Renard il y a plus de 3 ans

Benjamin Dauvergne a écrit :

tu peux vérifier que ta clé privé et ta clé publique ne sont pas des chaînes "bytes" dans tes settings ?

Mes clés sont définies via le fichier authentic.conf et donc via l'environnement.

#2

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

  • Assigné à mis à Benjamin Dauvergne
#3

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

  • Sujet changé de saml: erreur TypeError: cannot serialize dans get_saml2_metadata() à Le support des clés publiques nues est cassé
  • Assigné à Benjamin Dauvergne supprimé
#4

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

  • Assigné à mis à Benjamin Dauvergne
#5

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

C'est l'utilisation d'une clé publique nue (qu'on ne fait jamais de notre coté ni dans les tests ni en prod, d'où le fait qu'on ait pas vu le souci) qui a posé problème, je factorise la génération du base64 dans saml2utils avec x509utils.

#6

Mis à jour par Benjamin Renard il y a plus de 3 ans

Benjamin Dauvergne a écrit :

C'est l'utilisation d'une clé publique nue (qu'on ne fait jamais de notre coté ni dans les tests ni en prod, d'où le fait qu'on ait pas vu le souci) qui a posé problème, je factorise la génération du base64 dans saml2utils avec x509utils.

Ok, comme vu ensemble, ça fonctionne à présent mais ça déclenche une erreur (non-bloquante) côté Lasso. Après une conversion de ma clé publique en un certificat, plus de souci. Merci.

#7

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

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

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

  • Statut changé de Solution validée à Résolu (à déployer)
commit 85c85b2595f8a07030dc7c67ea1f770690c40500
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Fri Sep 25 12:00:10 2020 +0200

    misc: reuse and factorize conversion of int to base64 (#47013)
#9

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

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

Formats disponibles : Atom PDF