Projet

Général

Profil

Development #23414

bonne infra de logging des connexions (succès et échecs)

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

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

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

J'ai mis un truc minimaliste dans #23407 mais on ne loggue toujours pas les tentatives de connexion avec des identifiants qui n'existent pas, quand c'est associé à un utilisateur existant on pourrait enregistrer l'info dans la db (?), d'un premier regard ça m'a eu l'air compliqué de voir où bien placer le logging, parce que s'ils n'existent pas avec un backend ils peuvent quand même exister avec un autre, etc.

Bref, pour débugger un utilisateur qui nous rapporte "je tape pourtant bien mon identifiant et mon mot de passe et ça dit que ça foire", on devrait avoir de meilleurs outils.


Demandes liées

Lié à Authentic 2 - Development #39559: avoir un journal des (tentatives de) connexionsFermé05 février 2020

Actions

Historique

#1

Mis à jour par Benjamin Dauvergne il y a presque 6 ans

Tous les succès sont loggés, tous les échecs par login/mdp sont désormais loggés depuis ton patch, les autres échecs je ne vois pas trop ce qu'on pourrait dire puisqu'on a pas d'identifiant. De quoi parle-t-on ?

#2

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

Genre si la personne se trompe dans son identifiant, on n'a pas de trace, et le seul truc qu'on peut dire c'est "non on ne voit rien", même pas "je vois en effet des tentatives mais c'est avec un identifiant erroné".

#3

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

  • Description mis à jour (diff)
#4

Mis à jour par Benjamin Dauvergne il y a presque 6 ans

Ok je comprends mieux, effectivement si l'identifiant ne match rien dans le LDAP ni rien dans la base, ça ne log rien.

On pourrait appliquer quelque chose comme cela:

diff --git a/src/authentic2/auth_frontends.py b/src/authentic2/auth_frontends.py
index 2177c960..44526713 100644
--- a/src/authentic2/auth_frontends.py
+++ b/src/authentic2/auth_frontends.py
@@ -1,3 +1,5 @@
+import logging
+
 from django.shortcuts import render
 from django.utils.translation import ugettext as _, ugettext_lazy

@@ -17,6 +19,8 @@ class LoginPasswordBackend(object):
         return 'password'

     def login(self, request, *args, **kwargs):
+        logger = logging.getLogger(__name__)
+
         context_instance = kwargs.get('context_instance', None)
         is_post = request.method == 'POST' and self.submit_name in request.POST
         data = request.POST if is_post else None
@@ -38,6 +42,7 @@ class LoginPasswordBackend(object):
                     how = 'password'
                 return utils.login(request, form.get_user(), how,
                                    service_slug=request.GET.get(constants.SERVICE_FIELD_NAME))
+            logger.info(u'failed login with identifier %r', form.cleaned_data.get('username'))
         context['form'] = form
         return render(request, 'authentic2/login_password_form.html', context,
                       context_instance=context_instance)

Ce qui est dommage c'est d'avoir un double log si le problème vient du mot de passe et pas de l'identifiant, mais bon il y a des logs plus inutiles dans a2.

#6

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

#7

Mis à jour par Valentin Deniaud il y a environ 3 ans

  • Planning mis à Non

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

Genre si la personne se trompe dans son identifiant, on n'a pas de trace, et le seul truc qu'on peut dire c'est "non on ne voit rien", même pas "je vois en effet des tentatives mais c'est avec un identifiant erroné".

Il y a bien les tentatives de connexion avec identifiant erroné dans le journal (et c'est en effet bien utile, #50226#note-8 par exemple). Mais la description de ce ticket est vague, je ne sais pas si il faut le fermer.

#8

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

On peut dire qu'avec le journal c'est désormais ok, modulo quand même #39559#note-5.

#9

Mis à jour par Valentin Deniaud il y a environ 3 ans

  • Statut changé de Nouveau à Fermé

Formats disponibles : Atom PDF