Authentification LDAP et proxy ?

Questions sur la configuration d'Apache, httpd.conf, et les différents modules.

Modérateur : Modérateurs

bcit
Nouveau membre
Messages : 1
Inscription : jeu. 08 sept. 2011, 14:29

Authentification LDAP et proxy ?

Messagepar bcit » jeu. 08 sept. 2011, 15:28

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 : Tout sélectionner

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 :
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 (http://www.aimxhaisse.com/projects/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

Revenir vers « Configuration »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 3 invités