Soy nuevo en la autorización jwt. De donde vengo es solo autorización de usuario y contraseña sin jwt. Ahora que aprendí los conceptos básicos de jwt, quiero usar is y aquí está mi pregunta:
En mi componente de inicio de sesión, recopilo el correo electrónico y la contraseña y, de ser correcto, envío un JWT firmado al usuario. Guardo ese token con js-cookie . (Espero que hasta aquí no haya problemas).
Ahora, en mi _app.js (estoy usando nextjs), creo que si hay un componente que requiere datos, simplemente construí la aplicación, ya que no había inicio de sesión. Lo único que cambiaría, si la búsqueda de datos no tiene éxito, enviaría al usuario a la pantalla de inicio de sesión. Con eso, el usuario iniciaría sesión automáticamente, siempre que tenga la cookie y ni la cookie ni el token caduquen.
¿O hay un mejor enfoque?
Edite después de leer los comentarios: mientras tanto, agregué el inicio de sesión Auth0 a mi aplicación. Deshabilité todos los registros y creé el usuario en la base de datos Auth0. La desventaja para mí es que la configuración de la aplicación ahora lleva más tiempo, ya que necesito configurar otro tercero. Pero lo suficientemente justo, cuando esto aumenta la seguridad.
Pero ahora mis preguntas cambian: ¿Puedo dejar de usar JWT ahora, porque puedo confiar en el usuario que está conectado? Diría que no, porque la API es una API abierta sin protección JWT, así que, ¿mi pregunta realmente no cambió?
No debe intentar emitir sus propios tokens; en su lugar, utilice un servicio de token certificado de conexión abierta (como KeyCloak , AzureAd, Auth0 , Ping , IdentityServer ...)
En segundo lugar, debe intentar evitar almacenar tokens en una cookie o incluso en el navegador. Un video que discute el problema de seguridad es el siguiente que recomiendo encarecidamente: