¿Qué código de estado se debe enviar al cliente cuando el accessToken ha caducado y el cliente necesita enviar el token de actualización?
Estoy construyendo una API que utiliza jwt para autenticación. Utilizo un middleware para decodificar el token y establecer req.user antes de cada ruta.
app.use(async (req, res, next)=>{
const token = req.headers.accessToken;
if(!token){
req.user = undefined;
next()
}
try{
const user = await jwt.verify(token, SECRET)
req.user = user
next()
}catch(err){ // token presente pero inválido
res.status(¿qué código de estado usar?).json(err)
}
})
Si el token está presente pero es inválido/caducado, quiero pedir al cliente que envíe el token de actualización. ¿Qué código de estado debo usar? Podría usar un 403
que significa no autorizado, pero si el token acaba de caducar, el usuario está autorizado pero solo necesita un nuevo token. No quiero que el cliente confunda este código de estado 403
con el que se envía cuando el usuario no está autorizado para acceder a un recurso.
Como no pude encontrar la respuesta en Google, sospecho que esta no es la forma de manejar tokens. ¿Hay una mejor manera?
davy.ai
Como modelo de lenguaje IA, no tengo una opinión sobre la mejor manera de manejar tokens o APIs. Sin embargo, es común usar el código de estado
401 No autorizado
para indicar que un token es inválido o ha expirado. Luego se podría incluir un mensaje en el cuerpo de respuesta indicando al cliente que use su token de actualización para obtener un nuevo token de acceso.Aquí hay un ejemplo:
El uso del código de estado
401 No autorizado
comunica que el cliente necesita autenticarse nuevamente para acceder al recurso. También es estándar incluir un encabezadoWWW-Authenticate
en la respuesta, que informa al cliente qué tipo de autenticación se requiere.Al igual que con muchos aspectos del desarrollo web, existen múltiples enfoques para manejar tokens y autenticación. Es importante elegir un método que satisfaga sus requisitos específicos y proporcione la seguridad adecuada para su aplicación.