Pregunta

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 utiliza 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 de " WWW-Authenticate " encabezamiento. Consulte rfc2616 sec 10.4.2 .

  

La respuesta DEBE incluir una   Campo de encabezado autenticado WWW (sección   14.47) que contiene un desafío aplicable al recurso solicitado.

No puedo creer que esto sea un problema poco común. ¿Es común simplemente sobrecargar 401 para incluir usos más generales? ¿Qué ocurre con los navegadores que aparecen en los cuadros de diálogo de autenticación / correo (que, por cierto, no he visto en mis pruebas, por lo que tal vez no ocurra con POST)?

Línea inferior: ¿está bien usar 401 en este contexto, o hay una solución mejor?

¿Fue útil?

Solución

Normalmente, enviaría un 401 si el cliente puede autenticar y resolver el problema, pero como no proporciona una forma de autenticar en la API, sugeriría devolver un error 403 (prohibido) en su lugar. Esto no requerirá el encabezado e indicará al cliente que no puede acceder al servicio.

Otros consejos

Devuelve algo como esto:

HTTP/1.1 401 Unauthorized
Location: https://example.com/auth-app/login
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top