http - error - Fallo de autenticación de señalización en una API RESTful
http status rest api (2)
Estoy escribiendo una pequeña aplicación que expone una API HTTP REST-ish simple. Estoy atascado tratando de decidir cómo señalar una falla debido a la falta de autorización.
La aplicación no tiene una API para la autenticación, sino que depende de la presencia de una cookie que contiene un token de sesión obtenido por el cliente a través de otro servicio. La aplicación verifica la sesión y usa la identidad obtenida a través del proceso de verificación para realizar la autorización específica de la aplicación. No hay forma de que un cliente se autentique directamente en esta aplicación.
Mi problema es que el código de estado HTTP obvio para rechazar solicitudes no autorizadas, "401 no autorizado", se especifica en términos del encabezado "WWW-Authenticate". Ver rfc2616 sec 10.4.2 .
La respuesta DEBE incluir un campo de encabezado WWW-Authenticate (sección 14.47) que contenga un desafío aplicable al recurso solicitado.
No puedo creer que este sea un problema poco común. ¿Es común simplemente sobrecargar 401 para incluir usos más generales? ¿Qué pasa con los navegadores que muestran diálogos de autenticación / e (que por cierto no he visto en mis pruebas, por lo que tal vez no suceda con los POST)?
En pocas palabras: ¿está bien usar 401 en este contexto, o hay una mejor solución?
Devuelve algo como esto:
HTTP/1.1 401 Unauthorized
Location: https://example.com/auth-app/login
Normalmente, enviaría un 401 si el cliente puede autenticarse y resolver el problema, pero como no proporciona una forma de autenticarse en la API, le sugiero que devuelva un error 403 (prohibido). Esto no requerirá el encabezado e indicará al cliente que no puede acceder al servicio.