# Convertir les en-têtes HTTP en variables d'environnement

Lorsque LL::NG est utilisé en mode reverse-proxy, la variable d'environnement `REMOTE_USER` n'est pas renseignée. Toutefois, cette variable est renseignée par l'agent dans le serveur physique l'hébergeant mais pas dans les autres serveurs sans agents.

Le module SetEnvIf d'Apache peut transformer l'en-tête HTTP Auth-User en variable d'environnement `REMOTE_USER` :

    SetEnvIfNoCase Auth-User "(.*)" REMOTE_USER=$1

Ceci permet de protéger des applications nécessitant la variable d'environnement `REMOTE_USER` en mode reverse-proxy. Dans ce cas 2 fichiers de configuration Apache doivent être renseignés :

- le fichier de configuration d'Apache sur le reverse-proxy LL::NG (celui qui héberge l'agent LL::NG):

    <VirtualHost *:80>
            ServerName application.example.com

            PerlHeaderParserHandler Lemonldap::NG::Handler

            ProxyPreserveHost on
            ProxyPass / http://APPLICATION_IP/
            ProxyPassReverse / http://APPLICATION_IP/

    </VirtualHost>

- le fichier de configuration d'Apache sur le serveur d'application (celui qui héberge l'application):

    <VirtualHost *:80>
            ServerName application.example.com

            SetEnvIfNoCase Auth-User "(.*)" REMOTE_USER=$1

            DocumentRoot /var/www/application

    </VirtualHost>

Parfois, des applications PHP examinent également les variables d'environnement PHP_AUTH_USER et PHP_AUHT_PW. On peut les renseigner par la même voie :

    SetEnvIfNoCase Auth-User "(.*)" PHP_AUTH_USER=$1
    SetEnvIfNoCase Auth-Password "(.*)" PHP_AUTH_PW=$1

Bien sûr, il faut stocker le mot-de-passe dans la session pour renseigner PHP_AUTH_PW.