Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages serveur Discussion :

JWT : question sur le renouvellement des tokens


Sujet :

Langages serveur

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    septembre 2005
    Messages
    741
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2005
    Messages : 741
    Points : 327
    Points
    327
    Par défaut JWT : question sur le renouvellement des tokens
    Bonjour à tous,

    Je développe actuellement un système d'authentification sur une API REST en Slim Framework (PHP) qui sera consommée par une PWA sous Angular.

    J'ai implémenté les JWT coté API, c'est à dire que j'ai un endpoint qui reçoit un couple login/password et renvoie un token valide si l'user est reconnu.

    Ce token, comme vous le savez a une durée de vie et c'est là que je bute : comment faire les choses proprement pour que mon utilisateur puisse s'authentifier de façon permanente ?

    En gros je ne voudrais pas devoir lui redemander son mot de passe à chaque expiration du token (je n'ai pas encore défini de durée de vie des tokens).

    Donc j'imagine que ma PWA peut par exemple, à chaque fois qu'elle émet un call sur l'API, vérifie la date d'expiration du token qu'elle possède et si le token est périmé, en redemander un nouveau sur la base de l'ancien.

    Est-ce que selon vous cette méthode est sécurisée ? Ne perd t'on pas l'interêt d'avoir une durée de vie sur les token si il suffit d'en redemander un nouveau sur la base de l'ancien pour continuer à faire des requêtes ?

    Merci

  2. #2
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    mai 2011
    Messages
    1 716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mai 2011
    Messages : 1 716
    Points : 3 252
    Points
    3 252
    Par défaut
    T'as presque tout bon. En fait la date d'expiration n'est pas à côté du token (bien qu'elle le puisse aussi, ce n'est pas une donnée sensible et peut-être connue du front), elle fait partie intégrante du token. Quand le back reçoit un token, il vérifie tout d'abord sa validité, puis sa date d'expiration. Si ce n'est pas le cas, il renvoie une erreur HTTP 401 avec le message token expiré. A charge ensuite au front de prendre en compte cette "erreur" pour redemander un nouveau token en passant l'ancien.

    Est-ce que selon vous cette méthode est sécurisée ? Ne perd t'on pas l'interêt d'avoir une durée de vie sur les token si il suffit d'en redemander un nouveau sur la base de l'ancien pour continuer à faire des requêtes ?
    Cette méthode reste sécurisée oui. Demander de redemander un token au bout d'un certain temps permet de limiter cet effet de "ticket gagnant du loto" quand on possède un token. Imagine un token valable à l'insant T, ben 15 ans plus tard, toujours valable sans aucune vérification supplémentaire... Niveau sécurité pas ouf quand même. D'ailleurs même au loto en fait il y a une date d'expiration, si tu ne vas pas chercher ton gain avant un certain temps, celui-ci est perdu

    Cela permet également de s'assurer que les données de ce token sont toujours bonnes. On peut faire des vérifications supplémentaires avant de généré et de renvoyer un nouveau token L'utilisateur authentifié par ce token n'a t-il pas été blacklisté ou supprimé de la base ? Cela ne fait-il vraiment pas super longtemps qu'il ne s'est pas connecté à l'application ? Au bout d'un certain temps où l'utilisateur n'a pas utilisé l'application (une semaine par exemple), il paraît raisonnable de redemander à l'utilisateur de se reconnecter.

    A toi juste de trouver le meilleur compromis entre sécurité et ergonomie de ton application.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    septembre 2005
    Messages
    741
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2005
    Messages : 741
    Points : 327
    Points
    327
    Par défaut
    Salut,

    Merci pour tes explications très complètes

    Un autre point auquel je viens de penser : connais-tu des bonnes pratiques autour du cas où un mot de passe utilisateur change ?

    Est-ce que l'on cherche alors à révoquer les anciens tokens éventuellement en circulation ?

    Exemple : je change mon mdp depuis mon smartphone mais j'avais une connexion active avec un token valide 7 jours sur mon PC.

    En soit il ne me semble pas très grave que le PC puisse continue à utiliser l'app tant que l'user existe toujours, mais sait-on jamais ?

  4. #4
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    mai 2011
    Messages
    1 716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mai 2011
    Messages : 1 716
    Points : 3 252
    Points
    3 252
    Par défaut
    Encore une fois, tout dépend du niveau de sécurité que tu souhaites obtenir et du niveau de criticité de ton application il n'y a pas de réponse universelle.

    On imagine bien que pour une application manipulant des données bancaires ce sera le cas. Ou si un seul utilisateur peut être connecté à la fois pour un compte unique, il est aussi évident que oui.

    Facebook prévoit par exemple dans son interface de se déconnecter de tous les autres appareils autre que celui actuellement utilisé.

    C'est à toi de voir.

    Par contre dans tous les cas il semble en effet être une bonne idée de prévoir cette méthode qui permet de révoquer tous les autres tokens pour cet utilisateur même si elle n'est en l'état pas utilisé.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    septembre 2005
    Messages
    741
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2005
    Messages : 741
    Points : 327
    Points
    327
    Par défaut
    Compris, encore merci pour tes conseils

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FLASH 8] Question sur la portée des objets.
    Par i_shinji dans le forum Flash
    Réponses: 1
    Dernier message: 02/11/2005, 18h18
  2. Question sur la gestion des fenetres MDI
    Par RémiONERA dans le forum C++Builder
    Réponses: 6
    Dernier message: 06/07/2005, 08h58
  3. question sur le rafraichissement des données dans la base
    Par vbcasimir dans le forum Bases de données
    Réponses: 8
    Dernier message: 06/06/2005, 13h44
  4. question sur le comportement des threads
    Par rose-bonbon dans le forum CORBA
    Réponses: 4
    Dernier message: 27/10/2004, 19h00
  5. question sur le format des images ..
    Par vbcasimir dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 28/08/2003, 13h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo