Projet

Général

Profil

Bug #28935

crash sur caractère non ascii dans /idp/oidc/authorize/

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

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
12 décembre 2018
Echéance:
% réalisé:

100%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Internal Server Error: /idp/oidc/authorize/
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py", line 132, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/lib/python2.7/dist-packages/authentic2/decorators.py", line 29, in f
    return func(request, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/authentic2_idp_oidc/views.py", line 130, in authorize
    fragment=fragment)
  File "/usr/lib/python2.7/dist-packages/authentic2_idp_oidc/views.py", line 73, in authorization_error
    return redirect(request, redirect_uri, params=params, resolve=False)
  File "/usr/lib/python2.7/dist-packages/authentic2/utils.py", line 319, in redirect
    include=include, exclude=exclude, fragment=fragment, resolve=resolve)
  File "/usr/lib/python2.7/dist-packages/authentic2/utils.py", line 307, in make_url
    return url.encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 61: ordinal not in range(128)

 'QUERY_STRING':
'scope=openid%20profile%20email&response_type=code&client_id=91bf2ef9-d068-43f0-a92c-2bcbfdb538e7&redirect_uri=https://noel.strasbourg.eu/web/no
elgustez-la-soupe-des-chefs-%C3%A9toiles-alsaciens&state=https://noel.strasbourg.eu/de/web/noel/degustez-la-soupe-des-chefs-%C3%A9toiles-alsacie
ns',

Fichiers


Demandes liées

Lié à Authentic 2 - Bug #20181: Erreur 500 sur la redirection (pour demander à se logguer) d'une url contenant des accentsFermé20 novembre 2017

Actions

Révisions associées

Révision 5095f90a (diff)
Ajouté par Benjamin Dauvergne il y a plus de 5 ans

utils: use iri_to_uri/uri_to_iri to manipulate URLs in make_url (fixes #28935)

This patch add non-ASCII characters to URLs in OIDC and CAS tests to
check make_url() works correctly.

Historique

#1

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

  • Lié à Bug #20181: Erreur 500 sur la redirection (pour demander à se logguer) d'une url contenant des accents ajouté
#2

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

Je pense que ce que j'ai fait dans le #20181 n'était donc pas complet, je change de fusil d'épaule, désormais make_url() retournera de l'unicode mais en entrée url sera convertit en str/bytes avant utilisation de urlsplit/QueryDict pour que les manipulations soient faites sans considéré d'encodage.

Mais ça veut dire qu'on suppose que tout URL unicode passé à make_url() vient forcément d'un décodage utf-8 d'une URL complète urldécodé (traitement qui arrive quand on accède à une URL passé en paramètre, problème initial sur #20181, django fait un parse_qs(query_string)['next'].decode('utf-8')).

#3

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

  • Assigné à mis à Benjamin Dauvergne
#4

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

In django you should trust.

En fait Django a déjà la solution dans des fonctions obscurément documentées: iri_to_uri()[1] et uri_to_iri()[2]

1 https://docs.djangoproject.com/fr/2.1/ref/utils/#django.utils.encoding.iri_to_uri

2 https://docs.djangoproject.com/fr/2.1/ref/utils/#django.utils.encoding.uri_to_iri

#6

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

  • Tracker changé de Support à Bug
#7

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

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

Mis à jour par Serghei Mihai il y a plus de 5 ans

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

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

  • Statut changé de Solution validée à Résolu (à déployer)
  • % réalisé changé de 0 à 100
#10

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

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

Formats disponibles : Atom PDF