Tokens de acceso cifrados - fecha de caducidad

1

Mi idea es usar tokens encriptados; donde, tras la autenticación (con nombre de usuario y contraseña), el backend encriptaría user_id, timestamp y un SHA-256 sobre ellos, la base 64 lo codificará y lo devolverá al cliente como token de acceso. De esta manera puedo eliminar la necesidad de un almacén de token persistente.

Esto es similar al esquema descrito en este artículo (aunque hay algunas diferencias).

La lógica que me gustaría tener, es que cuando el token se usa constantemente (es decir, el intervalo más largo entre las siguientes llamadas a la API no es más largo que N), no se debe solicitar al usuario la reautenticación .

El problema es que la validez del token cifrado no se puede extender, ya que cambiar la marca de tiempo significa que el valor de los cambios del token .

Puedo ver las siguientes soluciones:

1) Cada vez que se valida el token, emita un token nuevo y devuélvalo al cliente. En cada solicitud, el cliente se olvidaría del token anterior y almacenaría el nuevo en su lugar.

  • + resuelve el problema
  • La lógica + en el cliente es bastante sencilla
  • - para un usuario, varios tokens serían válidos al mismo tiempo

2) Implementar un punto final de API que aceptaría un token caducado y emitiría un token nuevo a cambio. Este punto final tendría algún valor configurable M, por lo que si el token caduca en más de M, no se emitirá un nuevo token.

  • + resuelve el problema
  • + para un usuario, solo un token sería válido al mismo tiempo
  • - la lógica en el cliente es un poco más complicada: necesita actualizar el token.

¿Hay otra solución, basada en tokens encriptados? (Sé que podemos solucionar ese problema con tokens regulares y persistentes).

    
pregunta kamituel 04.02.2015 - 16:20
fuente

1 respuesta

1

Podrías cifrar el userid:timestamp:hash , base64 y enviarlo como una cookie. En cada token validado, recalcular uno nuevo con una nueva marca de tiempo y enviarlo de vuelta.

Registre cada token no válido para un usuario e invalide cada token que venga para el mismo usuario y la misma dirección IP durante un período. Esto complica la vida de cualquiera que intente usar fichas de fuerza bruta.

No tiene que preocuparse demasiado por un usuario que tiene más de un token válido, solo que está hablando con el mismo usuario. Si un usuario abre varias pestañas en su sitio, se producirán múltiples tokens válidos.

    
respondido por el ThoriumBR 04.02.2015 - 20:33
fuente

Lea otras preguntas en las etiquetas