From d529f497ae37f95bfe0e7c57cf9974f53c73574d Mon Sep 17 00:00:00 2001
From: Louis-Arnaud Catoire
Date: Sat, 7 Mar 2026 20:48:11 +0100
Subject: [PATCH] [Sync EN] Fix outdated content on the HTTP Basic auth page
Fixes #2618
---
features/http-auth.xml | 118 ++++++++++++++---------------------------
1 file changed, 39 insertions(+), 79 deletions(-)
diff --git a/features/http-auth.xml b/features/http-auth.xml
index 27baf79c24..e0509340fe 100644
--- a/features/http-auth.xml
+++ b/features/http-auth.xml
@@ -1,11 +1,11 @@
-
+
Identification HTTP avec PHP
-
+
Il est possible d'utiliser la fonction header pour demander
une identification ("Authentication Required") au client,
@@ -21,7 +21,7 @@
est supportée. Se reporter à la fonction
header pour plus d'informations.
-
+
Voici un exemple de script qui force l'identification du client
pour accéder à une page :
@@ -33,8 +33,8 @@
-
+
- Note de compatibilité
+ Compatibilité
Il faut être bien prudent lors de l'utilisation d'en-têtes HTTP avec PHP. Afin de
garantir un maximum de compatibilité entre les navigateurs, le mot clé
"Basic" doit être écrit avec un B majuscule, et le texte de présentation
doit être placé entre doubles guillemets (pas des simples), et exactement un espace doit
précéder le code 401 dans l'en-tête
- HTTP/1.0 401. Les paramètres d'authentification doivent
+ HTTP/1.1 401. Les paramètres d'authentification doivent
être séparés par des virgules.
-
+
Au lieu d'afficher simplement les variables globales PHP_AUTH_USER
et PHP_AUTH_PW, il est préférable de
@@ -67,95 +67,55 @@ if (!isset($_SERVER['PHP_AUTH_USER'])) {
Par exemple, en envoyant ces informations à une base de données,
ou en recherchant dans un fichier dbm.
-
-
- Il faut se méfier des navigateurs bogués, tels qu'Internet Explorer.
- Ils semblent très susceptibles en ce qui concerne l'ordre des en-têtes.
- Envoyer l'en-tête d'identification (WWW-Authenticate)
- avant le code de HTTP/1.0 401 semble lui convenir
- jusqu'à présent.
-
-
+
- Note de configuration
+ Configuration Apache
PHP utilise la présence de la directive AuthType
pour déterminer si une identification externe est activée.
-
+
Notez cependant que les manipulations ci-dessus n'empêchent
pas quiconque possède une page non identifiée
de voler les mots de passe des pages protégées,
sur le même serveur.
-
- Netscape et Internet Explorer effaceront le cache d'identification client
- s'ils reçoivent une réponse 401. Cela permet de déconnecter
- un utilisateur, pour le forcer à saisir à nouveau son nom de compte
- et son mot de passe. Certains programmeurs l'utilisent pour donner un
- délai d'expiration ou, alors, fournissent un bouton de déconnexion.
-
-
-
- Identification HTTP avec nom d'utilisateur/mot de passe forcé
-
-Bienvenue : " . htmlspecialchars($_SERVER['PHP_AUTH_USER']) . " ";
- echo "Ancien : " . htmlspecialchars($_REQUEST['OldAuth']);
- echo "
\n";
-}
-?>
-]]>
-
-
-
-
- Ce comportement n'est pas nécessaire par le standard
- d'identification HTTP Basic. Les tests avec
- Lynx ont montré qu'il n'affectait
- pas les informations de session lors de la réception d'un
- message de type 401. Ce qui fait que presser la touche "retour" puis "avant"
- sur un client Lynx
- précédemment identifié donnera l'accès direct à
- la ressource tant que les informations d'identification n'ont pas changé. Cependant, l'utilisateur peut utiliser la touche
- '_' pour détruire les anciennes identifications.
-
-
- Afin de rendre fonctionnelle l'authentification HTTP avec un serveur IIS avec
- la version CGI de PHP, il faut éditer
- la configuration "Directory Security". Cliquer
- sur "Edit" et activez uniquement
- "Anonymous Access", tous les autres champs doivent
- être laissés non actifs.
-
- Note pour les utilisateurs de IIS :
+ Comportement des navigateurs
+
+ L'authentification HTTP Basic est vraiment basique, et n'a pas été conçue pour
+ gérer les déconnexions. HTTP étant un protocole sans état, la plupart des
+ navigateurs mettent en cache les identifiants fournis dès qu'un code de statut
+ 2xx est reçu, et les envoient à chaque requête, jusqu'à la
+ fermeture du navigateur. Il n'existe pas de moyen défini pour qu'un serveur
+ demande une nouvelle saisie des identifiants.
+
+ Au fil des années, diverses solutions de contournement se sont répandues sur
+ internet, mais elles dépendent toutes de la manière dont les différents
+ navigateurs ont choisi de gérer des cas limites non définis (voire des
+ violations du standard HTTP). Il est préférable d'éviter ces solutions de
+ contournement et de ne pas utiliser l'authentification Basic pour quoi que
+ ce soit de sérieux.
+
+
+
+
+ Configuration IIS
- Pour que l'identification HTTP fonctionne avec IIS, la directive PHP
+ Afin de rendre fonctionnelle l'authentification HTTP avec un serveur IIS avec
+ la version CGI de PHP, la directive php.ini
cgi.rfc2616_headers
- doit être définie à 0 (la valeur par défaut).
+ doit être définie à 0 (la valeur par défaut), et il faut
+ éditer la configuration IIS "Directory Security".
+ Cliquer sur "Edit" et activer uniquement
+ "Anonymous Access", tous les autres champs doivent
+ être laissés non actifs.
-
+