Aller au contenu principal

6. 511 Authentification réseau requise (Network Authentication Required)

Le code d'état 511 indique que le client doit s'authentifier pour obtenir l'accès au réseau.

La représentation de la réponse devrait (SHOULD) contenir un lien vers une ressource permettant à l'utilisateur de soumettre des informations d'identification (par exemple, avec un formulaire HTML).

Notez que la réponse 511 ne devrait pas (SHOULD NOT) contenir de défi ou l'interface de connexion elle-même, car les navigateurs afficheraient l'interface de connexion comme étant associée à l'URL initialement demandée, ce qui peut prêter à confusion.

Le statut 511 ne devrait pas (SHOULD NOT) être généré par les serveurs d'origine; il est destiné à être utilisé par des proxies intercepteurs qui sont interposés comme moyen de contrôler l'accès au réseau.

Les réponses avec le code d'état 511 ne doivent pas (MUST NOT) être stockées par un cache.

6.1. Le code d'état 511 et les portails captifs (Captive Portals)

Le code d'état 511 est conçu pour atténuer les problèmes causés par les "portails captifs" aux logiciels (en particulier les agents non-navigateurs) qui attendent une réponse du serveur auquel une requête a été faite, et non de l'infrastructure réseau intermédiaire. Il n'est pas destiné à encourager le déploiement de portails captifs -- seulement à limiter les dommages qu'ils causent.

Un opérateur de réseau souhaitant exiger une authentification, l'acceptation de conditions ou toute autre interaction de l'utilisateur avant d'accorder l'accès le fait généralement en identifiant les clients qui ne l'ont pas fait ("clients inconnus") à l'aide de leurs adresses de contrôle d'accès au support (MAC).

Les clients inconnus voient alors tout leur trafic bloqué, à l'exception de celui sur le port TCP 80, qui est envoyé à un serveur HTTP (le "serveur de connexion") dédié à la "connexion" des clients inconnus, et bien sûr le trafic vers le serveur de connexion lui-même.

Par exemple, un agent utilisateur peut se connecter à un réseau et effectuer la requête HTTP suivante sur le port TCP 80:

GET /index.htm HTTP/1.1
Host: www.example.com

Après avoir reçu une telle requête, le serveur de connexion générerait une réponse 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>

Ici, le code d'état 511 garantit que les clients non-navigateurs n'interpréteront pas la réponse comme provenant du serveur d'origine, et l'élément META HTML redirige l'agent utilisateur vers le serveur de connexion.