Se utiliza Json Web Token (JWT) para usuarios autenticados. Tras el login, se obtiene un JWT para identificar el usuario en los request posteriores al API.
El token debe ser agregado como header
para los endpoints que lo necesiten.
Cuando se realiza un logout
el token se invalida pero aun puede seguir usandose por 2 minutos para prevenir
cualquier problema de concurrencia.
Cuando se envia un token expirado (Time To Live 60 minute) se invalida el expirado
y en el header del response Authorization: Bearer <token>
se enviara un nuevo token para las nuevos request.
La regla de expiración es la misma que la del logout
para evitar problemas de concurrencia.
{info} Agregar el header
Authorization: Bearer <token>
en los request que necesiten autenticación.
Method | Route | Action |
---|---|---|
POST |
/login |
Genera y retorna un access_token |
POST |
/logout |
Invalida el access_token del usuario autenticado. Se da un periodo de gracia de 2 minuto de uso de el token invalidado. Luego de eso se tomara como blacklisted . |
POST |
/refresh-jwt |
Autentica el usuario desde un Jwt activo , invalida el token actual y refresca a uno nuevo. Se da un periodo de gracia de 2 minuto de uso de el token invalidado. Luego de eso se tomara como blacklisted |
POST |
/confirm-account |
|
POST |
/password-reset/{email} |
Envia un correo de recuperación de contraseña. |
POST |
/recover-password |
Confirma la recuperacion de la contraseña |
POST |
/confirm-email |
Confirma un cambio de correo |
POST /login
{
"email" : "required|email",
"password": "required|string"
}
{primary} El objecto user contendra la relacipon correspondiente al tipo de usuario si tiene alguna.
200
{
"user": {
// User Model Attributes
},
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
"token_type": "bearer",
"expires_in": 3600,
"expires_in_datetime": "2020-10-30 11:23:34"
}
Inhabilita el Json Web Token
actual del usuario
POST /logout
204
No ContentPOST /refresh-jwt
200
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
"token_type": "bearer",
"expires_in": 3600,
"expires_in_datetime": "2019-11-13 12:13:50"
}
{info} El header
Authorization
tambien viene actualizado con el token refrescado.
Marca el usuario como confirmado y se reemplaza la contraseña generada
{info} Este proceso se realiza una sola vez
POST /confirm-account
{
"token": "required|string",
"password": "required|string"
}
204
No ContentEnvia una solicitud de restablecimiento de contraseña por correo.
POST /password-reset/{email}
204
No ContentConfirma la solicitud de restablecimiento de contraseña
{primary} el
token
tiene un una duracion de24 horas
, si se pasa se tendra que enviar un nuevo password reset
POST /recover-password
{
"email": "required|email",
"token": "required|string", // token enviado al correo de recuperación
"password": "required|string" // nueva contraseña
}
204
No ContentPOST /confirm-email
{
"email": "required|email",
"token": "required|string" // token enviado al correo de confirmación
}
204
No Content