Ésta es una cuestión conceptual.
Tengo una aplicación cliente (móvil) que debe admitir una acción de inicio de sesión contra un servicio web RESTful. Debido a que el servicio web es RESTful, esto equivale a que el cliente acepte un nombre de usuario / contraseña del usuario, verifique ese nombre de usuario / contraseña con el servicio y luego recuerde enviar ese nombre de usuario / contraseña con todas las solicitudes posteriores.
Todas las demás respuestas de este servicio web se proporcionan en formato JSON.
La pregunta es, cuando consulto el servicio web simplemente para averiguar si un nombre de usuario / contraseña dado son válidos, si el servicio web siempre responde con datos JSON diciéndome que es exitoso o no exitoso, o debe devolver HTTP 200 con buenas credenciales y HTTP 401 con credenciales incorrectas.
La razón por la que pregunto es que algunos otros servicios RESTful usan 401 para credenciales incorrectas, incluso cuando solo pregunta si las credenciales son válidas. Sin embargo, mi entendimiento de las respuestas 401 es que representan un recurso al que se supone que no debes tener acceso sin credenciales válidas. Pero el recurso de inicio de sesión DEBE ser accesible para cualquier persona porque el propósito completo del recurso de inicio de sesión es informarle si sus credenciales son válidas.
Dicho de otra manera, me parece que una solicitud como:
myservice.com/this/is/a/user/action
debe devolver 401 si se proporcionan credenciales incorrectas. Pero una solicitud como:
myservice.com/are/these/credentials/valid
nunca debe devolver 401 porque esa URL en particular (solicitud) está autorizada con o sin credenciales válidas.
Me gustaría escuchar algunas opiniones justificadas de una forma u otra sobre esto. ¿Cuál es la forma estándar de manejar esto y es la forma estándar de manejar esto lógicamente apropiada?