Projet

Général

Profil

Bug #5536

accesdenied lors d'une mauvaise signature (acces api)

Ajouté par Thomas Noël il y a plus de 9 ans. Mis à jour il y a plus de 9 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
18 septembre 2014
Echéance:
% réalisé:

100%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Lors d'un accès par signature (api.py), si ça ne marche pas on renvoie un utilisateur None.

Il serait utile quand on détecte une mauvaise signature, de faire un acces denied avec la raison (mauvaise signature, timestamp dépassé, etc).


Fichiers

Révisions associées

Révision 3074204f (diff)
Ajouté par Benjamin Dauvergne il y a plus de 9 ans

Make get_user_from_api_query_string() report detailed errors when signature checking fails (refs #5536)

Révision a9ac6fec (diff)
Ajouté par Benjamin Dauvergne il y a plus de 9 ans

Add tests for get_user_from_api_query_string() (fixes #5536)

Historique

#1

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

J'utilise AccessForbiddenError pour faire remonter le problème précis quand le champ signature est présent (sinon ça retourne None comme avant).

#2

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

Pourquoi supprimer le fallback sur l'abance de paramètre algo= ?

    MAX_DELTA = 30
    if abs(delta) > datetime.timedelta(seconds=MAX_DELTAT):

Modif visiblement pas testée.

#3

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

Frédéric Péters a écrit :

Pourquoi supprimer le fallback sur l'abance de paramètre algo= ?

Ça n'est pas sain: si une personne utilise SHA1 et ne précise pas d'algo cela va systématiquement faire une erreur de signature alors que c'est l'algorithme qui n'est pas le bon et que la signature est bonne en fait (i.e. elle est bien calculée). J'espère juste que rien n'en dépend pour l'instant.

[...]

Modif visiblement pas testée.

Je tâtais le terrain.

#4

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

Je tâtais le terrain.

Ok, sur une question particulière ? Parce que là Thomas fait le ticket, si c'est sur l'objet même du ticket qu'il y a hésitation, je ne vois pas le sens de faire un patch non testé.

#6

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

(wcs)bdauvergne@fenouil:~/Code/wcs$ PYTHONPATH=$(pwd) py.test --run-postgresql tests/test_api.py
=============================================================================================== test session starts ================================================================================================
platform linux2 -- Python 2.7.3 -- py-1.4.24 -- pytest-2.6.2
collected 1 items 

tests/test_api.py .

============================================================================================= 1 passed in 0.59 seconds =============================================================================================
(wcs)bdauvergne@fenouil:~/Code/wcs$ fg 
#7

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

Il y a un "import sys" volant dans les tests; c'est mieux d'avoir une série de tests qu'un méga long test; par exemple,

...

def test_missing_algo():
    output = visit_page('/user?format=json&orig=coucou&signature=xxx')
    content = ''.join(output.generate_body_chunks())
    result = json.loads(content)
    assert result['err_desc'] == 'missing/multiple algo field'

def test_invalid_algo():
    output = visit_page('/user?format=json&orig=coucou&signature=xxx&algo=coin')
    content = ''.join(output.generate_body_chunks())
    result = json.loads(content)
    assert result['err_desc'] == 'invalid algo'

...
#8

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

Tests séparés, code nettoyé (plus de sus, et création du User et du site-options.cfg dans le setup).

#9

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

Cool, ok.

#10

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

  • Statut changé de Nouveau à Résolu (à déployer)
  • % réalisé changé de 0 à 100
#11

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

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

Mis à jour par Thomas Noël il y a plus de 9 ans

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

Mis à jour par Thomas Noël il y a plus de 9 ans

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF