Un usuario con sesión iniciada pide la factura de otro cliente (tenant). ¿Qué código de estado es el más apropiado?
Opciones
- 401 Unauthorized, porque el usuario no tiene permiso
- 403 Forbidden (o 404, para ocultar que existe) (Opción correcta)
- 400 Bad Request, porque el id no es válido
- 500 Internal Server Error, porque falló el acceso
Respuesta
403 Forbidden (o 404 para ocultar que existe)
Por qué
401 significa 'no sé quién eres': faltan credenciales o no son válidas (pese a su nombre 'Unauthorized').
403 significa 'sé quién eres, pero no tienes permiso para esto'.
El usuario tiene sesión iniciada pero la factura no es suya, así que 403. Muchas APIs responden 404, para que un atacante ni siquiera sepa que la factura existe.
Recuerda
401 = ¿quién eres? 403 = no puedes hacer eso.