Projet

Général

Profil

Development #73669

auth_oidc : simplifier les messages d’erreur affichés à l’usager

Ajouté par Paul Marillonnet il y a plus d'un an. Mis à jour il y a environ un an.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
21 janvier 2023
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Vu passer sur le salon détente :

La connexion est requise mais le paramètre d’invite (prompt) vaut « none » (login_required)

Il faut simplifier ce qui passe en niveau de message error, et laisser ce message pour le niveau debug seulement.

Ce n’est qu’un des exemples où ce qui est affiché à l’usager devrait être du genre :

Erreur technique à la connexion, veuillez réessayer plus tard et/ou contacter l’administration du site.


Fichiers

Révisions associées

Révision 4ea4a630 (diff)
Ajouté par Paul Marillonnet il y a environ un an

auth_oidc: provide a less scary displayed error message (#73669)

The user simply gets a generic error message.  The more detailed
description gets logged and appears as a django debug-level message.

Historique

#1

Mis à jour par Paul Marillonnet il y a plus d'un an

  • Description mis à jour (diff)
#3

Mis à jour par Paul Marillonnet il y a plus d'un an

  • Sujet changé de idp_oidc : simplifier les messages d’erreur affichés à l’usager à auth_oidc : simplifier les messages d’erreur affichés à l’usager

Et c’est en fait à l’autre bout du tuyau que ça se joue, le RP OIDC affiche telle quelle l’erreur technique reçue du fournisseur.

#4

Mis à jour par Paul Marillonnet il y a plus d'un an

#5

Mis à jour par Benjamin Dauvergne il y a plus d'un an

Je voudrais voir #72519 corrigé avant de décider de ce qu'on fait ici.

#6

Mis à jour par Frédéric Péters il y a plus d'un an

Ok mais enrober le message brut pas contrôlé qu'on peut recevoir reste une bonne idée.

#7

Mis à jour par Frédéric Péters il y a environ un an

Capture d'un cas qui n'est pas Toodego, les messages d'Azure AD ne sont pas top évidents non plus.

#8

Mis à jour par Paul Marillonnet il y a environ un an

Benjamin Dauvergne a écrit :

Je voudrais voir #72519 corrigé avant de décider de ce qu'on fait ici.

Apparemment c’est fait, l’occasion de remettre ce ticket ci sous les projecteurs :)

#9

Mis à jour par Benjamin Dauvergne il y a environ un an

  • Assigné à mis à Paul Marillonnet
#10

Mis à jour par Benjamin Dauvergne il y a environ un an

  • Statut changé de Solution proposée à En cours

Je pense qu'il faut rebaser sur #72538 puis faire une PR.

#11

Mis à jour par Benjamin Dauvergne il y a environ un an

En refaisant l'état des lieux entre ce ticket, #72538 et le fait de faire marcher is_passive sur GLC (#24195) je me dis que qu'on doit varier le comportement selon qu'on a envoyé prompt=none ou pas:
  • si prompt=none on log rien, on ne s'attendait pas à ce que le sso fonctionne, ça foire, tant pis,
  • si on a pas prompt=none alors bien sur on peut logger via logging mais surtout il faudrait enregistrer dans le journal une user.login.failure :
         request.journal.record('user.login.failure', ...) # ici on ne sait pas trop quoi mettre comme contexte
    

    on ne peut pas vraiment y indiquer d'attributs de contexte vu qu'on a rien à part une erreur mais donc il faudrait modifier la définition du type d'èvènement login.failure pour que username ne soit plus requis mais qu'on y enregistre les références au mode d'authentification ainsi que le message d'erreur précis remonté. Ça permettra une éventuelle analyse à posteriori par un admin.
# src/authentic2/journal_event_types.py
class UserLoginFailure(EventTypeWithService):
    name = 'user.login.failure'
    label = _('login failure')

    @classmethod
    def record(cls, *, service, username, user, reason=None):
        super().record(user=user, service=service, data={'username': username, 'reason': reason})

    @classmethod
    def get_message(cls, event, context):
        username = event.get_data('username')
        reason = event.get_data('reason')
        msg = _('login failure with username "{username}"').format(username=username)
        if reason:
            msg.append(_(' (reason: {reason})').format(reason=reason))
        return msg
#12

Mis à jour par Robot Gitea il y a environ un an

Paul Marillonnet (pmarillonnet) a ouvert une pull request sur Gitea concernant cette demande :

#13

Mis à jour par Robot Gitea il y a environ un an

  • Statut changé de En cours à Solution proposée
#14

Mis à jour par Robot Gitea il y a environ un an

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

Benjamin Dauvergne (bdauvergne) a approuvé une pull request sur Gitea concernant cette demande :

#15

Mis à jour par Robot Gitea il y a environ un an

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

Paul Marillonnet (pmarillonnet) a mergé une pull request sur Gitea concernant cette demande :

#16

Mis à jour par Transition automatique il y a environ un an

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

Mis à jour par Transition automatique il y a 10 mois

Automatic expiration

Formats disponibles : Atom PDF