2011-08-15 16 views

Respuesta

4

El encabezado que envía el servidor es el código de estado 200 OK o 401 denegado en caso de éxito o error.

Ver http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html Sección 10.4.2 401 no autorizado para esto.

Al enviar el 401, el servidor debe enviar un

WWW-Authenticate = "WWW-Authenticate" ":" 1 # desafío

para indicar qué esquema se debe utilizar para la autenticación.

Ver http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html Sección 14.47 WWW-Authenticate para esto.

1

Sólo hay HTTP/1.0 401 Unauthorized.

Pero recientemente desarrollé este "patrón de autenticación": la primera vez que visita la página obtiene 401 y la pantalla de inicio de sesión. Tan pronto como ingrese los datos de inicio de sesión correctos, recibirá 200. Cuando su sesión expire o haga clic en cerrar sesión recibirá 401 y la pantalla de inicio de sesión nuevamente. La pantalla de inicio de sesión siempre es 401, cada dos páginas 200.

1

Depende de lo que quiere decir con "inicio de sesión" y quizás también de cómo el servidor maneja el inicio/cierre de sesión/autorización.

Normalmente, la expresión 'para iniciar sesión' está relacionada con las sesiones. Uno 'inicia sesión', hace lo que necesita hacerse y luego 'cierra sesión'. El servidor almacena la información de la sesión y envía la identificación de la sesión en un cooki al cliente, que luego envía la cookie para informar al servidor que está en curso una sesión. Dentro de la sesión, las variables pueden cambiar y su estado es persistente entre las llamadas del cliente.

Intuitivamente, parece natural que haya un tipo de respuesta 'Autorizada' cuando inicie una sesión, junto con la respuesta 'No autorizado (401)'.

Sin embargo, HTTP es un protocolo sin estado. No sabe acerca de los estados, solo acerca de si la solicitud está autorizada o no. Es por eso que existe el estado 401 pero no un código de estado 'autorizado' específico (ya que si una solicitud no está autorizada, está implícitamente autorizada).

Para tener la sensación de trabajar en una sesión en el nivel HTTP (sin utilizar una construcción como session_start() de PHP), las credenciales de autorización deben enviarse con cada solicitud. Esto es lo que sucede cuando uno usa el archivo .htaccess para proteger una carpeta, por ejemplo. Después de proporcionar al diálogo de contraseña el nombre de usuario y la contraseña, estos se envían posteriormente cada vez que hay un acceso dentro del dominio de autorización. Existe la ilusión de una "sesión" pero, en realidad, el nombre de usuario y la contraseña se envían en cada solicitud.

Cuestiones relacionadas