Web SSO avec LemonLdap-ng (Debian) [2 - Configuration] [2 - Reverse Proxy Authentifiant]

Bonjour, aujourd’hui nous allons voir comment configurer LemonLdap-ng pour faire un reverse proxy authentifiant (Ldap / Cas).

Fonctionnement :

Le principe de cette application est “d’intercepter” les requêtes qui passent par Apache afin de procéder à un traitement dessus. (expressions régulières sur les headers HTTP …)

Reverse proxy :
Complétement géré par Apache. Il se configure à la main dans les virtual hosts.

Exemple : mon_application.conf

PerlOptions +GlobalRequest
#PerlRequire /usr/local/lemonldap-ng/handler//MyHandler.pm
 
#Mon appli de test
 
<VirtualHost *:80>
  ServerName hv-3.unilim.fr
  PerlHeaderParserHandler My::Package
  #Reverse-Proxy
  ProxyPass / http://hv-6.unilim.fr/
  ProxyPassReverse / http://hv-6.unilim.fr/
  ProxyPreserveHost on
  #Logs
  ErrorLog /var/log/apache2/proxysite_error.log
  CustomLog /var/log/apache2/proxysite_access.log combined
</VirtualHost>

Explications :
ServerName : nom (dns) sur lequel le reverse proxy va écouter
PerlHeaderParserHandler My::Package : Instancie les classe de LemonLdap qui “intercepte” les requêtes et procèdent au traitement adapté
ProxyPass  / <adresse serveur> : Adresse du serveur vers lequel rediriger les requettes
ProxyPassReverse / <adresse serveur> : Adresse du serveur duquel viennent les requetes (dans le sens inverse)
ProxyPreserveHost on : Transfère les Header HTTP

Exemple de configuration d’une application web SSO proxifiée :

Le principe est de se servir de LemonLdap comme passerelle.

Donc créez des alias CNAME ou enregistrements A qui pointent sur votre serveur LemonLdap.
Exemple :
monappli.mondomaine.fr. IN CNAME lemonldap.mondomaine.fr
ou
monappli.mondomaine.fr. IN A <adresse ip du serveur>

Ensuite, créez un virtualhost pour apache (comme dans l’exemple ci-dessus) dans un nouveau fichier (dans /etc/lemonldap-ng/).
Faire un lien symbolique vers le répertoire d’Apache :
cd /etc/apache2/site-available/
ln -s /etc/lemonldap-ng/mon-appli.conf

ou en une fois :
ln -s /etc/lemonldap-ng/mon-appli.conf /etc/apache2/site-available/

Ajoutez le nouveau virtualhost dans Apache :
a2ensite mon-appli.conf
/etc/init.d/apache2 reload

Enfin, créez un Hôte Virtuel dans LemonLdap qui porte le même nom que celui d’apache.
Exemple :
monappli.mondomaine.fr

Vous pouvez maintenant définir des règles de filtrage / redirection …
Exemple d’en-tête HTTP (Transmission d’info de l’utilisateur à l’application par les header HTTP ) :
Créez les variables à exporter (dans les menu : Variables -> Attributs à exporter).
Exemple :
nomUser        displayName
Explication :
nomUser => sera le nom de la variable qui contiendra le contenu de l’attribut displayName de l’annuaire (on pourra l’appeler via $nomUser).

Créez le header correspondant (dans les menu : Hôtes virtuels -> monappli.mondomaine.fr -> En-tête HTTP)
Exemple :
REMOTE_USER    $nomUser
Explication :
REMOTE_USER => nom du header (que l’on pourra lire à partir de l’application proxifié)
$nomUser => variable qui va “remplir” ce header

Exemple de lecture du header REMOTE_USER en PHP :
echo $_SERVER[‘HTTP_REMOTE_USER’];

Note : vous pouvez créez vos propres headers (variables) et les récupérer de la même manière.
Exemple :
echo $_SERVER[‘HTTP_Nom_De_Famille’];

Notions de “profils utilisateur” : On peut les faire à partir des hôtes virtuels.
Exemple :
On crée l’hôte virtuel “etudiants.unilim.fr” (dans lemonldap et dans apache).
On crée une règle de filtrage pour “defaut”. Exemple : expression=default  Règle=$uid eq « hve01″. Ce qui signifie que seul l’utilisateur “hve01” aura accès à cet hôte virtuel.

On crée la liste des applications pour le portail (Paramètres généraux -> Portail -> Menu -> Catégories et Applications).
Exemple :
Nom de la clé = 1ENT ;
Nom à afficher = ENT étudiants ;
Adresse = http://etudiants.unilim.fr/ent/ ;
Mode d’affichage = automatique ;
Description = Espace numerique de travail ;
Logo=monlogo

Enfin, on crée les “redirections” dans le virtual host (apache). (En mode Reverse Proxy)
Exemple :

<VirtualHost *:80>
ServerName etudiants.unilim.fr
PerlHeaderParserHandler My::Package

rewriteEngine On
rewriteRule ^/ent/(.*) http://ent.unilim.fr/$1 [P]
rewriteRule ^/webmail/(.*) http://mail.unilim.fr:8080/$1 [P]

ErrorLog /var/log/apache2/proxysite_error.log
CustomLog /var/log/apache2/proxysite_access.log combined
</VirtualHost>
Cette entrée a été publiée dans Système, avec comme mot(s)-clef(s) , , , , , , , , . Vous pouvez la mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

Please copy the string mDszi0 to the field below: