Bonjour,
J'ai un problème depuis 3 jours et pas moyen de le résoudre !
L'histoire est simple :
- le serveur1 est un apache2 sur internet hébergeant le site
- le serveur2 est un apache2 sur mon réseau local servant de proxy vers le serveur1
- les postes clients sur mon réseau local
Pour afficher le site voici ce que fait un poste client :
client ---> authentification AD sur le serveur2 ---> "proxyfication" du site du serveur1
L'authentification AD sur le serveur2 fonctionne parfaitement. Mon problème est le renvoi de la valeur REMOTE_USER depuis le serveur2 vers le serveur1 quand je veux proxyfier le site.
Plutôt que plein d'explications pour rien, voici d'abord mon fichier de conf :
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| ServerName testor.domain.local
ServerAlias testor
PerlAuthenHandler Apache2::AuthenNTLM
<Directory />
ProxyAddUser On
AuthType ntlm
AuthName "DOMAIN_AD"
require valid-user
PerlAddVar ntdomain "DOMAIN_AD SERVEUR_AD"
PerlSetVar defaultdomain PAI
PerlSetVar splitdomainprefix 1
PerlSetVar ntlmdebug 1
PerlSetVar ntlmauthoritative off
</Directory>
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
<Proxy *>
Order allow,deny
Allow from all
RewriteEngine On
RewriteCond %{LA-U:REMOTE_USER} (.+)
RewriteRule .* - [E=PROXY_USER:%1]
RewriteRule .* - [E=PROXY_USER0:%{PROXY_USER}]
RewriteRule .* - [E=PROXY_USER1:%{REMOTE_USER}]
RewriteRule .* - [E=PROXY_USER2:%{X-REMOTE_USER}]
RewriteRule .* - [E=PROXY_USER3:%{LA-U:REMOTE_USER}]
RewriteRule .* - [E=PROXY_USER4:test]
RewriteRule .* - [E=PROXY_USER5:%{LA-U:HTTP_REMOTE_USER}]
RewriteRule .* - [E=PROXY_USER6:%{HTTP_REMOTE_USER}]
RewriteRule .* - [E=PROXY_USER7:%{HTTP_AUTH_USER}]
RewriteRule .* - [E=PROXY_USER8:%{AUTH_USER}]
RequestHeader add X-Forwarded-User %{PROXY_USER0}e
RequestHeader add X-Forwarded-User %{PROXY_USER1}e
RequestHeader add X-Forwarded-User %{PROXY_USER2}e
RequestHeader add X-Forwarded-User %{PROXY_USER3}e
RequestHeader add X-Forwarded-User %{PROXY_USER4}e
RequestHeader add X-Forwarded-User %{PROXY_USER5}e
RequestHeader add X-Forwarded-User %{PROXY_USER6}e
RequestHeader add X-Forwarded-User %{PROXY_USER7}e
RequestHeader add X-Forwarded-User %{PROXY_USER8}e
RequestHeader add X-Forwarded-User %{REMOTE_USER}e
RequestHeader add X-Forwarded-User %{LA-U:REMOTE_USER}e
RequestHeader add X-Forwarded-User %{X-REMOTE_USER}e
RequestHeader add X-Forwarded-User %{PROXY_USER}e
</Proxy>
ProxyPass / http://serveur1/
ProxyPassReverse / http://serveur1/ |
J'ai plusieurs RewriteRule et RequestHeader avec chacun une variable différente tout simplement parce qu'au fur et à mesure j'ai essayé de voir si une autre variable pouvait répondre à mon besoin, mais malheureusement non.
Le résultat du phpinfos() sur le site du serveur1 me donne :
HTTP_X_FORWARDED_USER = , , , test, , , , , (null), (null), (null), (null)
(les virgules séparent les différentes valeurs ajoutées à la variable "X-Forwarded-User")
Ce qui donne donc :
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13
| RequestHeader add X-Forwarded-User %{PROXY_USER0}e = VIDE
RequestHeader add X-Forwarded-User %{PROXY_USER1}e = VIDE
RequestHeader add X-Forwarded-User %{PROXY_USER2}e = VIDE
RequestHeader add X-Forwarded-User %{PROXY_USER3}e = VIDE
RequestHeader add X-Forwarded-User %{PROXY_USER4}e = test (la seule valeur que j'ai forcé pour le test)
RequestHeader add X-Forwarded-User %{PROXY_USER5}e = VIDE
RequestHeader add X-Forwarded-User %{PROXY_USER6}e = VIDE
RequestHeader add X-Forwarded-User %{PROXY_USER7}e = VIDE
RequestHeader add X-Forwarded-User %{PROXY_USER8}e = VIDE
RequestHeader add X-Forwarded-User %{REMOTE_USER}e = (null)
RequestHeader add X-Forwarded-User %{LA-U:REMOTE_USER}e = (null)
RequestHeader add X-Forwarded-User %{X-REMOTE_USER}e = (null)
RequestHeader add X-Forwarded-User %{PROXY_USER}e = (null) |
On voit donc bien que seule la valeur rentrée manuellement (
test) est correctement renvoyée à travers le proxy, toutes les autres sont vides...
L'authentification AD fonctionne parfaitement sur le serveur2 (avant d'être proxifié) et la variable REMOTE_USER me donne bien prenom.nom. Mais pas moyen de récupérer cette variable à travers le proxy.
Comme vous pouvez le constater avec la ligne "ProxyAddUser On", j'ai même compilé et rajouté le module
mod-proxy-add-user, que j'ai pris soin d'appeler tout de suite après
authnz_ldap_module, et donc avant
mod_proxy, mais rien à faire. Même lui ne récupère pas la valeur de
REMOTE_USER.
Arrivé à ce point je ne sais plus quoi faire du tout. Quelqu'un saurait-il me venir en aide ?
Thibaut