Descripción general
La API v2 utiliza autenticación basada en sesión. El inicio de sesión se realiza mediante POST /auth/login; si tiene éxito, se establece una sesión y se emite un token CSRF.
Las solicitudes que modifican el estado (POST) requieren la cabecera X-Fess-CSRF-Token. Para la obtención del token CSRF, el mecanismo de rotación, el sobre de respuesta común y el modelo de errores, consulte Descripción general de la API.
Esta página describe los siguientes cuatro endpoints:
Información de usuario común (UserPayload)
La información de usuario incluida en las respuestas de GET /auth/me y POST /auth/login se devuelve con la estructura común UserPayload. Todos los campos de tipo array son no nulos; cuando no hay valores, se devuelve un array vacío.
Obtención del estado de autenticación
Solicitud
| Método HTTP | GET |
| Endpoint | /api/v2/auth/me |
Obtiene el usuario autenticado actualmente. Las llamadas anónimas no generan un error; se devuelve authenticated: false. Cuando está autenticado, user contiene un UserPayload.
Respuesta
En caso de éxito (HTTP 200), se devuelve una respuesta con el formato de sobre común como la siguiente (ejemplo autenticado):
Los elementos de response son los siguientes:
| Campo | Tipo | Descripción |
|---|---|---|
authenticated | boolean | Si está autenticado. (Obligatorio) |
user | object | UserPayload. Solo existe cuando authenticated es true. |
Respuesta de error
Inicio de sesión
Solicitud
| Método HTTP | POST |
| Endpoint | /api/v2/auth/login |
Inicia sesión con nombre de usuario y contraseña. Cuando el inicio de sesión es exitoso, se rota el ID de sesión del servlet, se emite un nuevo token CSRF y se borran los cubos de límite de velocidad para la IP del cliente y el usuario objetivo. Cuando se supera el límite de velocidad, se añade la cabecera Retry-After (en segundos).
Incluso con una sesión ya autenticada, no se realiza un cortocircuito; las credenciales proporcionadas se verifican siempre.
return_to debe ser una ruta relativa que coincida con ^/[A-Za-z0-9_\-/.?&=%:@+~#*!,;]*$. Además, las rutas relativas al protocolo (que comienzan con //) y las que contienen caracteres de control ASCII son rechazadas y eliminadas silenciosamente de la respuesta devuelta.
Nota
Este endpoint está excluido de CSRF (porque el token no existe antes del inicio de sesión).
Nota
A diferencia de otros endpoints que modifican el estado, este endpoint agrupa los cuerpos de solicitud excesivos y los Content-Type no admitidos como 400 invalid_request (otros endpoints devuelven 413 / 415).
Cuerpo de la solicitud (LoginRequest)
El Content-Type es application/json.
Ejemplo de solicitud:
Respuesta
En caso de éxito (HTTP 200, LoginResponse), se devuelve una respuesta con el formato de sobre común como la siguiente:
Los elementos de response son los siguientes:
| Campo | Tipo | Descripción |
|---|---|---|
user | object | UserPayload. |
csrf_token | string | Nuevo token CSRF asociado a la nueva sesión. (Obligatorio) |
return_to | string | Solo se devuelve si el valor de la solicitud pasó la lista de permitidos. |
Respuesta de error
Cierre de sesión
Solicitud
| Método HTTP | POST |
| Endpoint | /api/v2/auth/logout |
Cierra la sesión. Esta operación es idempotente; si no hay sesión activa, funciona como no-op sin devolver un error. Siempre devuelve ok: true.
Se requiere la cabecera X-Fess-CSRF-Token.
Respuesta
En caso de éxito (HTTP 200, OkResponse), se devuelve una respuesta con el formato de sobre común como la siguiente:
Los elementos de response son los siguientes:
Respuesta de error
Cambio de contraseña
Solicitud
| Método HTTP | POST |
| Endpoint | /api/v2/auth/password |
Cambia la contraseña del usuario actual. Verifica current_password, aplica la política de contraseñas configurada a new_password, invalida la sesión actual e indica a la SPA que redirija a la página de inicio de sesión con re_login_required: true.
Dado que la sesión se destruye en el servidor, no se devuelve csrf_token. La SPA debe obtener un nuevo token tras la reautenticación.
Se requiere la cabecera X-Fess-CSRF-Token.
Cuerpo de la solicitud (PasswordChangeRequest)
El Content-Type es application/json.
Respuesta
En caso de éxito (HTTP 200), se devuelve una respuesta con el formato de sobre común como la siguiente:
Los elementos de response son los siguientes: