solucionar solucion forbidden error como code 401unauthorized http rest xmlhttprequest http-status-codes http-status-code-401

http - solucion - response 401 api



AutorizaciĆ³n en RESTful API API, 401 WWW-Authenticate (2)

Para responder tu pregunta:

¿Cómo lidiar con solicitudes no autorizadas?

La forma en que lo describió es más o menos la manera recomendada para un servicio RESTful. Por lo que puedo ver, no hay absolutamente nada de malo en eso.

¿Qué encabezado WWW-Authenticate debería proporcionar 401 respuestas?

En general, el encabezado WWW-Authenticate le dice al cliente qué tipo de autenticación aceptará el servidor. Si el cliente realiza una solicitud no autorizada, lo que significa que está enviando una solicitud con un encabezado de Authorization faltante o no válido, el servidor utilizará WWW-Authenticate para indicarle al cliente qué esquema de autenticación aceptará (es decir, Basic, Digest o OAuth) y para que reino

Imagínelo como una especie de pregunta de identificación o desafío por parte del servidor, es decir, algo así como "¿Quién es usted?" o "¡Demuestra quién eres al proporcionar credenciales de la siguiente manera!".

Por ejemplo: WWW-Authenticate: Basic realm="My App"

Aquí el servidor le dice al cliente que usa un esquema de autenticación llamado Básico. El reino no es más que una cadena que identifica un espacio protegido en el servidor.

Estoy creando un servicio RESTful para proporcionar datos a una aplicación web. Tengo dos preguntas relacionadas sobre esto.

1. ¿Cómo lidiar con solicitudes no autorizadas?

Tengo la intención de responder a las solicitudes con los siguientes códigos:

  • Es el recurso abierto y encontrado? 200 OK
  • ¿Necesita ser autenticado para acceder a los recursos? 401 no autorizado
  • ¿No tienes acceso a una categoría de recursos? 403 prohibido
  • ¿Tiene acceso a una categoría de recursos, pero no a este recurso específico? 404 Not Found para evitar que las personas conozcan la existencia de un recurso al que no tienen acceso.
  • ¿No existe el recurso? 404 No encontrado

¿Es esta una forma recomendada para que se comporte un servicio RESTful?

2. ¿Qué encabezado WWW-Authenticate debería proporcionar 401 respuestas?

Leí en Wikipedia (probablemente no es el recurso más exacto, pero me funciona) que una respuesta 401 debe incluir un encabezado WWW-Authenticate , sin embargo, al realizar una búsqueda más profunda no pude encontrar ningún recurso que indicara qué significaba este valor y qué debería ser.

Encontré varias preguntas sobre SO y temas del foro sobre este encabezado y todos parecen ser sobre OAuth, sugieren no utilizar los códigos de estado 401 o decir que puedes inventar algo.

¿Cuál es el valor correcto que debe contener este encabezado?


Basado en mi investigación (Google), decidí enviar: Newauth realm = "use login token".

El sitio web http://greenbytes.de/tech/tc/httpauth/#unknown tiene casos de prueba para diferentes métodos de autenticación y no he encontrado nada que describa ''get auth token'' y, por lo tanto, creo que es un ''Newauth''.

También es importante para mí: esto no crea un mensaje de inicio de sesión en el lado del cliente.