Webcontrat - Reverse Proxy
C'est le reverse proxy qui gère :
- l'authentification via shibboleth
- le load balancing via mod_proxy de apache.
Shibboleth
Comme habituellement, fichier de conf /etc/shibboleth/shibboleth2.xml
- La def du fichier est la suivante :
- default : vers janus.cnrs.fr
- formation : authentification sur idp de prod (janus) (idp de formation complexe, il faut créer les compte a la main)
- rec : authentification sur IDP de recette
- dev : authentification sur IDP de recette (dev pas accessible hors DSI)
Logs
les logs sont dans le syslog ou /var/log/shibboleth/
Pour regler la finesse des logs dans /var/log/shibboleth/ editer le fichier /etc/shibboleth/shibd.logger et mettre :
log4j.rootCategory=DEBUG, shibd_log, warn_log
Mettre a DEBUG les lignes suivantes au besoin
redémarrer shibboleth :
service shibd restart
Apache
Attention, version 2.4 !
Sites
Tout est géré dans les 5 fichiers de conf dans /etc/apache2/sites-available
Pour activer / desactiver un site, utiliser les commandes
a2ensite nom_du_fichier a2dissite nom_du_fichier
respectivement
Fichiers de conf
Ex du fichier de prod :
Le fichier est classique, focus sur les parties non conventionnelles :
On veut gerer les affichages d'erreur perso, il ne faut pas proxyfier ces requêtes (le ! désactive le proxy):
ProxyPass /error/ ! ProxyErrorOverride On ErrorDocument 503 /error/erreurDispo.html ErrorDocument 504 /error/erreurDispo.html
# On envoie l'adresse source aux serveurs web : ProxyPreserveHost On
On ne veux pas que les clients se baladent d'un serveur a l'autre, on fixe l'acces vers un serveur via un cookie valable le temps de la session :
# insert d'un cookie pour le choix de la route :
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
On défini un objet cluster utilisable par la suite
# Cluster de PROD : <Proxy "balancer://prod"> BalancerMember "http://10.30.0.11:80" route=1 BalancerMember "http://10.30.0.12:80" route=2 ProxySet stickysession=ROUTEID </Proxy>
Protection de la racine :
<Location /> AuthType shibboleth ShibRequestSetting requireSession true -> il faut une session shibboleth ShibUseHeaders On -> on envoie les headers shibboleth aux serveurs web ShibRequestSetting applicationId default -> On utilise le contexte par défaut pour la prod (ou dev.webcontrat.cnrs.fr ou formation.webcontrat.cnrs.fr ou rec.webcontrat.cnrs.fr) #require shib-attr mail julien.garnier@dr13.cnrs.fr -> ex de filtrage par email require valid-user -> On demande un utilisateur valide </Location>
Load Balancer
Le load balancer reparti la charge entre les 2 serveurs web.
En cas de soucis sur un des serveurs il est possible de desactiver rapidement une "voie".
Ex d'un probleme avec MariaDB2 :
- Il faut impérativement désactiver l'accès au serveur web2 qui attaque l’hôte 2
- Aller sur la page du reverse proxy : https://webcontrat.cnrs.fr/balancer-manager/
- Cliquer sur le serveur 2 (http://10.30.0.12)
- Sur la fenetre qui s'affiche en dessous, cocher disable = on
- desactiver en cliquant sur Submit