Webcontrat - Reverse Proxy : Différence entre versions
| (16 révisions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 30 : | Ligne 30 : | ||
| − | =Apache | + | =Apache= |
Attention, version 2.4 ! | Attention, version 2.4 ! | ||
| − | Tout est géré dans les | + | == Sites== |
| + | |||
| + | Tout est géré dans les fichiers de conf dans /etc/apache2/sites-available | ||
Pour activer / desactiver un site, utiliser les commandes | Pour activer / desactiver un site, utiliser les commandes | ||
| Ligne 41 : | Ligne 43 : | ||
a2dissite nom_du_fichier | a2dissite nom_du_fichier | ||
respectivement | respectivement | ||
| + | |||
| + | == Bloquer l'accès a un module == | ||
| + | |||
| + | Voir le fichier /etc/apache2/sites-available/001-webcontrat.cnrs.fr.conf et prendre exemple sur la désactivation du module d'admin. permet de ne donner accès qu'a nos équipes. | ||
| + | |||
| + | <Location /admin> | ||
| + | AuthType shibboleth | ||
| + | ShibRequestSetting requireSession true | ||
| + | ShibUseHeaders On | ||
| + | ShibRequestSetting applicationId default | ||
| + | |||
| + | # Acces equipe de dev : | ||
| + | require shib-attr mail julien.garnier@dr13.cnrs.fr | ||
| + | require shib-attr mail Nelly.Pernot@dr13.cnrs.fr | ||
| + | require shib-attr mail david.gras@dr11.cnrs.fr | ||
| + | require shib-attr mail cedric.masse@dr13.cnrs.fr | ||
| + | require shib-attr mail laurence.manet@dr13.cnrs.fr | ||
| + | require shib-attr mail olivier.durant@dr13.cnrs.fr | ||
| + | require shib-attr mail killian.boube@dr11.cnrs.fr | ||
| + | require shib-attr mail jocelyn.mere@dr13.cnrs.fr | ||
| + | require shib-attr mail karine.argento@dr11.cnrs.fr | ||
| + | </Location> | ||
| + | |||
| + | recharger le serveur web : | ||
| + | /etc/init.d/apache2 '''reload''' | ||
| + | |||
| + | == 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.20:80" route=1 | ||
| + | #BalancerMember "http://10.30.0.21: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> | ||
Version actuelle datée du 13 juillet 2021 à 08:26
C'est le reverse proxy qui gère :
- l'authentification via shibboleth
- le load balancing via mod_proxy de apache.
Sommaire
Shibboleth[modifier]
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[modifier]
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[modifier]
Attention, version 2.4 !
Sites[modifier]
Tout est géré dans les 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
Bloquer l'accès a un module[modifier]
Voir le fichier /etc/apache2/sites-available/001-webcontrat.cnrs.fr.conf et prendre exemple sur la désactivation du module d'admin. permet de ne donner accès qu'a nos équipes.
<Location /admin> AuthType shibboleth ShibRequestSetting requireSession true ShibUseHeaders On ShibRequestSetting applicationId default
- Acces equipe de dev :
require shib-attr mail julien.garnier@dr13.cnrs.fr require shib-attr mail Nelly.Pernot@dr13.cnrs.fr require shib-attr mail david.gras@dr11.cnrs.fr require shib-attr mail cedric.masse@dr13.cnrs.fr require shib-attr mail laurence.manet@dr13.cnrs.fr require shib-attr mail olivier.durant@dr13.cnrs.fr require shib-attr mail killian.boube@dr11.cnrs.fr require shib-attr mail jocelyn.mere@dr13.cnrs.fr require shib-attr mail karine.argento@dr11.cnrs.fr </Location>
recharger le serveur web :
/etc/init.d/apache2 reload
Fichiers de conf[modifier]
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.20:80" route=1 #BalancerMember "http://10.30.0.21: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>