511 Network Authentication Required
El cliente necesita autenticarse para obtener acceso a la red.
La representación de respuesta DEBERÍA contener un enlace a un recurso que permita al usuario enviar credenciales (por ejemplo, con un formulario HTML).
Tenga en cuenta que la respuesta 511 NO DEBERÍA contener un desafío o la interfaz de login en sí, porque los navegadores mostrarían la interfaz de login como asociada con la URL originalmente solicitada, lo que puede causar confusión.
El estado 511 NO DEBERÍA ser generado por servidores de origen; está destinado para uso por proxies interceptores que se interponen como un medio de controlar el acceso a la red.
Las respuestas con el código de estado 511 NO DEBEN ser almacenadas por un caché.
El código de estado 511 está diseñado para mitigar problemas causados por "portales cautivos" al software (especialmente agentes no navegador) que está esperando una respuesta del servidor al que se hizo una solicitud, no de la infraestructura de red interviniente. No está destinado a alentar el despliegue de portales cautivos -- solo para limitar el daño causado por ellos.
Un operador de red que desee requerir alguna autenticación, aceptación de términos, u otra interacción del usuario antes de otorgar acceso usualmente lo hace identificando clientes que no lo han hecho ("clientes desconocidos") usando sus direcciones Media Access Control (MAC).
Los clientes desconocidos entonces tienen todo el tráfico bloqueado, excepto el de puerto TCP 80, que se envía a un servidor HTTP (el "servidor de login") dedicado a "loguear" clientes desconocidos, y por supuesto tráfico al servidor de login mismo.
Por ejemplo, un agente de usuario podría conectarse a una red y hacer la siguiente solicitud HTTP en puerto TCP 80:
GET /index.htm HTTP/1.1
Host: www.example.com
Al recibir tal solicitud, el servidor de login generaría una respuesta 511:
HTTP/1.1 511 Network Authentication Required
Content-Type: text/html
<html>
<head>
<title>Network Authentication Required</title>
<meta http-equiv="refresh" content="0; url=https://login.example.net/">
</head>
<body>
<p>You need to <a href="https://login.example.net/">
authenticate with the local network</a> in order to gain
access.</p>
</body>
</html>
Aquí, el código de estado 511 asegura que los clientes no navegador no interpretarán la respuesta como siendo del servidor de origen, y el elemento META HTML redirige al agente de usuario al servidor de login.
- Source: RFC6585 Section 6
511 Code References
-
.NET HTTP Status Enum
HttpStatusCode.NetworkAuthenticationRequired -
Rust HTTP Status Constant
http::StatusCode::NETWORK_AUTHENTICATION_REQUIRED -
Go HTTP Status Constant
http.StatusNetworkAuthenticationRequired -
Symfony HTTP Status Constant
Response::HTTP_NETWORK_AUTHENTICATION_REQUIRED