PnX-SI / UsersHub-authentification-module

Module Flask d'authentification de UsersHub
GNU General Public License v3.0
5 stars 12 forks source link

controle des routes avec token #78

Closed RNF-SI closed 9 months ago

RNF-SI commented 9 months ago

Salut,

J'utilise UsersHub pour gérer les accès à plusieurs applications, et ce sans soucis. Je cherche maintenant à utiliser le décorateur @check_auth() mais je n'ai pas de token enregistré dans mes cookies. J'utilise la route /auth/login pour la connexion, qui marche très bien, et enregistre en localStorage les infos de l'utilisateur. La seule fonction que je ne fais pas à priori est handleRegister mais je pense qu'elle ne gère que les routes de provenance et de renvoit après connexion. Je vois bien qu'il existe une fonction setToken dans le auth.service, mais elle semble appelée nul part... bref je sèche, et du coup le check_auth me renvoit toujours un "No Token", et il y en a pas en effet... Merci pour votre aide !

TheoLechemia commented 9 months ago

Salut, Est ce que le token est bien stocké dans tes cookies côté navigateur (il ne peut se mettre que sur le même domaine, et même prefixe, que l'API surlaquelle il est appelé). Ensuite c'est à ton frontend d'envoyer le cookie à chaque requête. Par defaut Angular le fait tout seul, je ne sais pas quel techno tu utilises ?

RNF-SI commented 9 months ago

Non justement je n'ai pas de cookie stocké côté navigateur... mis à part le port, l'api flask est lancée sur le même domaine que mon front qui est bien du angular 15. Je n'ai testé qu'en local pour l'instant, où sur un serveur pour lequel je n'ai pas défini de domaine (je reste sur l'ip).

TheoLechemia commented 9 months ago

Ce ne serait un pb de http://localhost vs http://127.0.0.1 ?

RNF-SI commented 9 months ago

J'étais effectivement en localhost sur mon front, mais je viens d'essayer en http://127.0.0.1:4200 avec un api_endpoint en http://127.0.0.1:5070 et ça ne marche pas. J'ai juste un current_user dans mon navigateur, défini dans mon front.

RNF-SI commented 9 months ago

tu confirmes que en théorie, le simple fait d'utiliser la fonction /auth/login devrait générer un token ?

TheoLechemia commented 9 months ago

oui, la réponse doit contenir une header "Set-Cookie" et être stocké côté front Quelle version du sous-module utilises-tu ?

RNF-SI commented 9 months ago

1.5.9 installée avec pip

TheoLechemia commented 9 months ago

Tu peux essayer avec la dernière, https://github.com/PnX-SI/UsersHub-authentification-module/releases/tag/1.6.11 ? et pour le Set-cookie ?

RNF-SI commented 9 months ago

en testant sur postman j'ai bien le Set-cookie. Mais aucun cookie sur un navigateur (testé sur firefox et chrome).

RNF-SI commented 9 months ago

et j'ai installé la 1.6.11, pas de changement

TheoLechemia commented 9 months ago

Derniere piste : sur quel Path le cookie est mis et quand expire-t-il ?

RNF-SI commented 9 months ago

image le pathest donc / et l'expiration est 15h49 (pour un cookie expiration défini à 10800, mais j'ai l'impression qu'il reste en GMT+0)

TheoLechemia commented 9 months ago

ça semble bien être un problème de date effectivement. Vérifie la date de ton serveur et le paramètre cookie_expiration

RNF-SI commented 9 months ago

je travaille sur un windows sub system qui est sous Debian, si je test l'heure sous Debian ou même python j'ai bien la bonne heure. mais quoi qu'il arrive en mettant un cookie_expiration qui arrive largement après ça devrait passer non ? (ci avant expiration à 15h49 pour un cookie généré à 14h49)

RNF-SI commented 9 months ago

C'est bon j'ai trouvé le problème. En fait il faut également ajouter le paramètre { withCredentials: true } dans l'appel de la requête depuis Angular, ou créer un HttpInterceptor comme dans GeoNature pour permettre ce paramètre dans toutes les requêtes.