Pas de cookie `remember_user_token` avec une connexion automatique par OmniAuth/OIDC
Je viens de changer un paramètre sur git.felinn.org pour tester, et ça marche donc je vais le laisser, je vous explique.
Contexte Depuis longtemps, j'utilise Gitlab sur un onglet épinglé, de sorte que Firefox conserve le cookie de session artificiellement. Je n'ai donc quasiment jamais besoin de me connecter. Sauf que les rares fois où je perdais mes onglets épinglés, je constatais que Gitlab me déconnectait systématiquement, contrairement à Nextcloud ou Flarum notamment.
À côté de ce constat sporadique, depuis que je travaille au quotidien avec Juliette sur Gitlab, je vois qu'elle est obligée de connecter à chaque fois qu'elle ré-ouvre son navigateur.
Tout ça me chiffonne. J'ai donc poncé la doc ce matin et j'ai compris ce qui se tramait.
Ce qui se tramait Gitlab utilise deux cookies pour gérer les sessions :
_gitlab_session, qui expire quand on ferme le navigateur remember_user_token, qui permet de re-générer un cookie de session sans se reconnecter si on coche "Remember me" à la connexion. Assez classique donc, et ça permet en théorie de n'être jamais déconnecté si on utilise Gitlab sur un même navigateur au moins toutes les deux semaines. Bref.
Et là je me suis dit : mais attendez, j'ai jamais coché "Remember me" en me connectant. Si je reste connecté, c'est en fait juste à cause de l'onglet épinglé et du comportement de Firefox qui "fige" le cookie _gitlab_session. Et là je prends conscience du rôle de Hiboo/OIDC. En effet, depuis qu'on l'a installé on n'a plus de page de connexion : on clique sur login et ça fait le taf tout seul du moment qu'on a coché "Remember me" sur Hiboo. Ce comportement vient de cette option :
1 gitlab_rails['omniauth_auto_sign_in_with_provider'] = 'openid_connect' Si on l'enlève, on peut toujours se connecter avec Hiboo mais on a accès à la page de log-in de Gitlab, et on peut... cocher sur Remember me. Et ça marche. J'ai vérifié à l'instant en commentant l'option, puis en me déconnectant. Avant, je n'avais pas de remember_user_token. Maintenant, j'ai pu le cocher et je l'ai. Quand je redémarre le navigateur, je reste connecté.
Morale : mieux vaut avoir une étape supplémentaire dans le log-in et pouvoir rester connecté autant qu'on le souhaite plutôt que de se reconnecter tous les jours non ?