6. 511 Netzwerkauthentifizierung erforderlich (Network Authentication Required)
Der 511-Statuscode zeigt an, dass der Client sich authentifizieren muss, um Netzwerkzugriff zu erhalten.
Die Antwortdarstellung sollte (SHOULD) einen Link zu einer Ressource enthalten, die es dem Benutzer ermöglicht, Anmeldeinformationen zu übermitteln (z. B. mit einem HTML-Formular).
Beachten Sie, dass die 511-Antwort keine Herausforderung oder die Anmeldeschnittstelle selbst enthalten sollte (SHOULD NOT), da Browser die Anmeldeschnittstelle als mit der ursprünglich angeforderten URL verbunden anzeigen würden, was zu Verwirrung führen kann.
Der 511-Status sollte nicht (SHOULD NOT) von Ursprungsservern generiert werden; er ist für die Verwendung durch abfangende Proxys vorgesehen, die als Mittel zur Kontrolle des Netzwerkzugriffs zwischengeschaltet sind.
Antworten mit dem 511-Statuscode dürfen nicht (MUST NOT) von einem Cache gespeichert werden.
6.1. Der 511-Statuscode und Captive Portals
Der 511-Statuscode ist darauf ausgelegt, Probleme zu mildern, die durch "Captive Portals" für Software (insbesondere Nicht-Browser-Agenten) verursacht werden, die eine Antwort vom Server erwartet, an den eine Anfrage gestellt wurde, und nicht von der dazwischenliegenden Netzwerkinfrastruktur. Er ist nicht dazu gedacht, die Bereitstellung von Captive Portals zu fördern -- nur um den von ihnen verursachten Schaden zu begrenzen.
Ein Netzwerkbetreiber, der vor der Gewährung des Zugriffs eine Authentifizierung, die Annahme von Bedingungen oder eine andere Benutzerinteraktion verlangen möchte, tut dies normalerweise, indem er Clients identifiziert, die dies noch nicht getan haben ("unbekannte Clients"), indem er ihre Media Access Control (MAC)-Adressen verwendet.
Unbekannte Clients haben dann den gesamten Datenverkehr blockiert, mit Ausnahme des Datenverkehrs auf TCP-Port 80, der an einen HTTP-Server (den "Anmeldeserver") gesendet wird, der dem "Anmelden" unbekannter Clients gewidmet ist, und natürlich auch des Datenverkehrs zum Anmeldeserver selbst.
Beispielsweise könnte ein Benutzeragent eine Verbindung zu einem Netzwerk herstellen und die folgende HTTP-Anfrage auf TCP-Port 80 stellen:
GET /index.htm HTTP/1.1
Host: www.example.com
Nach Erhalt einer solchen Anfrage würde der Anmeldeserver eine 511-Antwort generieren:
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>
Hier stellt der 511-Statuscode sicher, dass Nicht-Browser-Clients die Antwort nicht als vom Ursprungsserver stammend interpretieren, und das META-HTML-Element leitet den Benutzeragenten zum Anmeldeserver um.