Discussions

Réglage de next-auth v4 pour la production

Image

next-auth v4 rend obligatoire le fait de générer et fournir un secret. Ce secret est une string (qui est un aléatoire) utilisé pour :

- hashé les token JWT

- signer et chiffrer les cookies de session

- générer les clés public/privées

 

Si vous ne définissez aucun secret vous aurez l'erreur suivante en production :

MissingSecret [MissingSecretError]: Please define a `secret` in production.

 

Voici les étapes pour définir un secret :

 

1 - Générez un secret

Pour cela, ouvrez un terminal Linux ou Windows et entrez :

openssl rand -base64 32

Vous pouvez également vous servir d'une URL de Vercel qui génère des random ici : https://generate-secret.vercel.app/32 . Mais on ne sait pas si ça fonctionnera toujours, on ne connait pas le niveau d'entropie de leur serveur, et on ne connaît pas non plus le code qui tourne derrière... bref pour de la vraie production je vous conseille de le générer vous même par la commande openssl.

 

2- Placez ce secret en variable d'environnement

Dans votre fichier next.config.js, ajouter la ligne avec la valeur NEXTAUTH_SECRET et votre secret. Exemple :

env: {
          mongodb_username: 'youruser',
          mongodb_password: 'yourpassword',
          mongodb_db: 'portfolio',
          NEXTAUTH_URL: 'http://localhost:3000',
          NEXTAUTH_SECRET: 'D4gwXrYilKHoxV/kUV6qJ3tvOzm8FOI2xG8k+I4qvxs=',
      },

 

3- Ajout du secret dans la configuration nextauth

Rendez-vous dans le fichier [...nextauth].js, et ajouter au même niveau que providers et callbacks, la valeur :

secret: process.env.NEXTAUTH_SECRET,

 

4- Faites bien à nouveau un npm run build et tout est prêt :)

 

NOTE : Dans la documentation de Next Auth, il est question de rendre la génération du secret obligatoire même en mode développement dans les prochaines version de la librairie.

 

0 réponse
Image
Inscrivez-vous ou connectez-vous pour participer à la discussion.
Aide spontanée

Informations

Créée le 18 octobre 2022 13:27
Dernière activité le 18 octobre 2022 13:27