Bonjour à tous,

je développe une petite application dont le backend est créé avec symfony (5) et le frontend avec Vue.js. J'ai mis en place un système d'authentification via JWT grâce au bundle LexikJWTAuthenticationBundle et je souhaiterais maintenant implémenter le rafraîchissement de ces tokens, je me suis donc orienté vers ce bundle : JWTRefreshTokenBundle qui m'avait l'air tout désigné pour cette tâche.

Mon problème est le suivant : cette application n'est "relié" à aucune BDD, j'utilise le Memory User Provider de symfony pour gérer les utilisateurs (cf security.yaml plus bas). Or le bundle JWTRefreshTokenBundle est dépendant de doctrine et d'après la documentation il m'a l'air de stocker les tokens en BDD .

Mes questions sont donc :

  • Est il possible d'implémenter un système de rafraîchissement des JWT sans base de données ?

  • Si oui, pouvez vous m'aiguiller vers la direction à prendre ?

Merci à tous de vos réponses !

security.yaml :

security:
    encoders:
        Symfony\Component\Security\Core\User\User: 'auto'

    providers:
        users_in_memory:
            memory:
                users:
                    admin: {password: '...', roles: ['...']}

    firewalls:
        login:
            pattern:  ^/api/login
            stateless: true
            anonymous: true
            json_login:
                check_path:               /api/login_check
                success_handler:          lexik_jwt_authentication.handler.authentication_success
                failure_handler:          lexik_jwt_authentication.handler.authentication_failure
        api:
            pattern:   ^/api
            stateless: true
            guard:
                authenticators:
                    - lexik_jwt_authentication.jwt_token_authenticator

2 réponses


olive140
Réponse acceptée

Bonjour,
Les refresh tokens doivent être enregistrés, donc l'utilisation d'une base de données est obligatoire.

Ikemad
Auteur

Je vous remercie de votre réponse, ça confirme ce à quoi je m'attendais.