Bug #5536
accesdenied lors d'une mauvaise signature (acces api)
100%
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
Add tests for get_user_from_api_query_string() (fixes #5536)
Historique
Mis à jour par Benjamin Dauvergne il y a plus de 9 ans
- Fichier 0001-Make-get_user_from_api_query_string-report-detailed-.patch 0001-Make-get_user_from_api_query_string-report-detailed-.patch ajouté
- Assigné à mis à Benjamin Dauvergne
- Patch proposed changé de Non à Oui
J'utilise AccessForbiddenError
pour faire remonter le problème précis quand le champ signature est présent (sinon ça retourne None comme avant).
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.
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.
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é.
Mis à jour par Benjamin Dauvergne il y a plus de 9 ans
- Fichier 0001-Make-get_user_from_api_query_string-report-detailed-.patch 0001-Make-get_user_from_api_query_string-report-detailed-.patch ajouté
- Fichier 0002-Add-tests-for-get_user_from_api_query_string.patch 0002-Add-tests-for-get_user_from_api_query_string.patch ajouté
Patchs à jour testés avec des tests.
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
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' ...
Mis à jour par Benjamin Dauvergne il y a plus de 9 ans
- Fichier 0002-Add-tests-for-get_user_from_api_query_string.patch 0002-Add-tests-for-get_user_from_api_query_string.patch ajouté
Tests séparés, code nettoyé (plus de sus, et création du User et du site-options.cfg
dans le setup).
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
Appliqué par commit a9ac6fec89e41bfad4a88407c7bd85285be9bef8.
Mis à jour par Benjamin Dauvergne il y a plus de 9 ans
- Statut changé de Résolu (à déployer) à Solution déployée
Mis à jour par Thomas Noël il y a plus de 9 ans
- Statut changé de Solution déployée à Résolu (à déployer)
Make get_user_from_api_query_string() report detailed errors when signature checking fails (refs #5536)