Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

715
Vistas
Django SimpleJWT: algunas preguntas con autenticación de token

Estoy implementando la autenticación en Django usando SimpleJWT y tengo algunas preguntas al respecto. Para dar algunos antecedentes, tengo varios dominios con mi backend, algunos con inicio de sesión normal (nombre de usuario y contraseña) y otros con inicios de sesión SSO.

Pregunta 2: supongamos que almaceno los tokens de acceso en el almacenamiento local y envío el token de acceso a todas las API, y también lo actualizo antes de que caduque. Pero, ¿qué sucederá si el usuario cierra el navegador y no podemos actualizar el token de acceso? El token de acceso caduca y el usuario se desconecta. ¿Cómo podemos mantener al usuario conectado durante un cierto período de tiempo (digamos 30 días)?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Cuando el token de acceso caduca, utiliza el token de actualización para obtener un nuevo token de acceso.

Esto funciona porque el token de actualización tiene una larga vida, normalmente hasta 30 días (pero puede ser incluso más larga si lo desea).

Ejemplo:

  • El usuario cierra el navegador
  • Vuelve 10 días después
  • El usuario envía una solicitud al servidor
  • El servidor devolverá una respuesta no autorizada 401 porque el token de acceso ha caducado
  • Su aplicación enviará una solicitud para obtener un nuevo token de acceso utilizando el token de actualización
  • Si el token de actualización es válido, el servidor devolverá un nuevo token de acceso
  • Si el token de actualización caduca, el servidor devolverá una respuesta 401. Eso significa que el usuario necesita iniciar sesión nuevamente.

Consideraciones de Seguridad

Personalmente, creo que JWT para la mayoría de las aplicaciones web no es una idea adecuada debido a las opiniones contradictorias y los consejos sobre cómo almacenar los tokens de forma segura.

Dado que un token de actualización es realmente poderoso, no se recomienda almacenarlo en el navegador. Entonces, ¿dónde lo guardas? Y ahí es cuando esta idea engañosa de los servicios web "sin backend" impulsados por JWT comienza a desmoronarse.

Paradojas con respecto al almacenamiento de tokens:

  1. Guárdelo en almacenamiento local : Vulnerable a ataques XSS.
    Esto es realmente grave porque las vulnerabilidades XSS también pueden provenir de bibliotecas JS de terceros, no solo de su propio código. Los piratas informáticos pueden secuestrar una biblioteca de terceros en NPM para inyectar código malicioso y, sin saberlo, es posible que la esté utilizando en su proyecto (podría ser una dependencia de una dependencia de otra dependencia...).

  2. Guárdelo en cookies httponly : a salvo de ataques XSS, pero requiere un servidor back-end propio (porque los servidores de autenticación de terceros no pueden establecer cookies para otro dominio).
    Si se detiene a pensar en ello, notará que este caso es exactamente similar a la autenticación de sesión regular donde se guarda un token de sesión en la cookie. Entonces, ¿por qué no usar la autenticación de sesión en lugar de esta complicada configuración de JWT?

Le aconsejo que investigue a fondo esto y decida si realmente necesita JWT para sus aplicaciones web.


Autenticación JWT usando cookies de origen cruzado

Dado que menciona que sus aplicaciones frontend se conectan a un servidor API en otro dominio, parece correcto usar JWT.

Si controla el servidor API, puede configurar encabezados CORS para permitir que el servidor API establezca cookies en los dominios de sus aplicaciones.

Importante:
Dado que se trata de cookies, es vulnerable a los ataques CSRF. Pero > eso es más fácil de prevenir usando tokens CSRF. Eso significa que, con cada solicitud POST, deberá enviar el token CSRF y el servidor API también debe validar ese token CSRF.

Aquí hay un diagrama que hago del flujo de autenticación en ese caso:

Flujo de autenticación JWT usando cookies de origen cruzado

over 4 years ago · Santiago Trujillo Denunciar

0

Para la Pregunta 2, agregue este código en su archivo settings.py

 SIMPLE_JWT = { 'ACCESS_TOKEN_LIFETIME': timedelta(days=30), 'REFRESH_TOKEN_LIFETIME': timedelta(days=30), }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda