Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

381
Views
¿Tiene sentido almacenar JWT en una base de datos?

Implementé un sistema de autenticación básico con Spring Boot, Spring Security, OAUTH2 y JWT como tokens de autenticación. Funciona bien, pero estaba pensando si tiene sentido almacenar JWT en una base de datos y verificar si existe un token cada vez que alguien realiza una solicitud autenticada usándolo. Estaba pensando específicamente en el siguiente escenario: el usuario está autenticado en un dispositivo móvil y lo pierde, por lo que quiere desautorizar ese dispositivo. Luego, podrían emitir una operación que borre los tokens emitidos a su identificación de usuario y desautorizar todos los tokens asignados a él. ¿Cualquier otra manera? ¿Estoy pensando esto mal o complicando demasiado las cosas?

Esto es para asegurar una API REST que se llamará desde una aplicación móvil.

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Puede almacenar el JWT en la base de datos, pero pierde algunos de los beneficios de un JWT. El JWT le brinda la ventaja de no necesitar verificar el token en una base de datos cada vez, ya que solo puede usar criptografía para verificar que el token sea legítimo. Si tiene que buscar el token en la base de datos, también podría usar un token opaco que no lleve información y dejar que el servidor y la base de datos le proporcionen la información. Por otro lado, si va a almacenar un token en la base de datos, no creo que un JWT sea una mala elección para su tipo de token. Como usted dice, hay ventajas para la revocación si almacena su token en la base de datos. Todo depende de lo que desee lograr (autorización más rápida, etc. frente a la capacidad de revocar a pedido).

Todavía puede usar JWT con OAuth2 sin almacenar tokens en la base de datos si lo desea. Los JWT tienen un tiempo de caducidad configurable que puede establecer, después del cual no son válidos. Los tokens de acceso (ya sean JWT o no) generalmente deben ser de corta duración por seguridad. Si la preocupación es que le roben el teléfono a alguien y se obtengan tokens de acceso, creo que la solución es hacer que esos tokens caduquen rápidamente (¿30 minutos?). Si usa oauth2, el medio para evitar que alguien continúe usando la aplicación es que el propietario real desautorice al cliente de la aplicación móvil en el servidor de autorización para que no se entreguen más tokens de acceso.

about 4 years ago · Santiago Trujillo Report

0

Puede establecer la fecha de caducidad (para móviles 1 semana). Agregue algún campo personalizado refreshId para el usuario (puede usar uuid para esto). Siguiente conjunto Emitido en el parámetro de reclamaciones ("iat"). Almacene refreshId en db y configúrelo como parámetro de notificaciones. Luego, cada vez que valide el token, debe verificar la "edad" del token. Si tiene más de una hora, debe cargar los datos de la base de datos y verificar el valor de refreshId y crear un nuevo token con el valor "iat" actual y enviarlo al dispositivo móvil. Cuando necesite desactivar tokens, simplemente genere un nuevo valor para refreshId en db. Después de una hora, todos los tokens serán incorrectos, por lo que el usuario deberá iniciar sesión nuevamente en cada dispositivo. Puede hacer una solución más personalizada si lo necesita.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!