ESUPSGC

Arborescence des pages

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.
Commentaire: Conf shib : checkAddress et consistentAddress à false pour tolérance IP non fixe depuis fournisseurs mobiles low-cost

...

  • Java : nous recommandons l'usage d'openjdk 

    • pour la partie serveur les versions 8 ou 11 17 à 25 (généralement présentes dans les distributions) conviennent, 

    • pour la partie cliente vous pouvez utiliser openjdk et openjfx en version 11 17 ou 12supérieur également.

  • Maven (dernière version 3.0.x) : le mieux est de l'installer via le système de paquets de votre linux - http://maven.apache.org/download.cgi

  • Postgresql : le mieux est de l'installer via le système de paquets de votre linux.

  • Tomcat 8 10 :  https://tomcat.apache.org/download-8010.cgi (ou jetty 10)

  • Apache + libapache2-mod-shib2

  • Git

...

  • Serveur : 2 CPU, RAM > 2 Go, Disque > 20 Go

  • Cartes Mifare Desfire EV1 ou , EV2, EV3

  • Edition 2 temps : 
    • Un lecteur RFID USB Compatible PC/SC pour encodage

    • Une webcam 
    • Une imprimante à carte.
  • Edition 1 temps : 
    • Une imprimante à carte evolis (primacy) / zebra (zc300) avec lecteur NFC

...

Bloc de code
languagebash
themeRDark
apt-get install wget apache2 libapache2-mod-shib git
apt-get install postgresql postgresql-contrib

...

De même il vous faudra maven, que vous pouvez soit installer par paquet (apt -get install maven), soit manuellement depuis http://maven.apache.org/download.cgi

Bloc de code
languagebash
themeRDark
apt install openjdk-21-jdk-headless maven

Installation des instances Tomcat

...

Installer les deux instances de Tomcat. L'une sera utilisée pour ESUP-SGC, l'autre pour ESUP-NFC-TAG.

Plusieurs choix sont possibles : 

  • on peut récupérer un binaire tomcat depuis https://tomcat.apache.org/download-10.cgi et installer manuellement celui-ci ;
  • on peut installer le tomcat fourni par le gestionnaire de paquets de la distribution ;
  • on peut aussi préférer jetty (installation via binaire ou paquet comme pour tomcat).

Dans la suite de cette documentation, on choisit l'option de l'installation manuelle car celle-ci a le mérite d'être indépendante du système utilisé ; l'installation par paquet peut toutefois être préférable pour profiter des mises à jour facilitées par votre distribution (apt sous debian) - c'est d'ailleurs cette option qui a été mise en place dans la VM ESUP-SGC de démonstration.


Bloc de code
languagebash
Bloc de code
languagebash
themeRDark
cd /opt/
wget https://dlcdn.apache.org/tomcat/tomcat-910/v9v10.01.5848/bin/apache-tomcat-910.01.5848.tar.gz
tar xzvf apache-tomcat-910.01.5848.tar.gz
mv apache-tomcat-910.01.5848 apache-tomcat-910.01.5848-esup-nfc-tag

tar xzvf apache-tomcat-910.01.5848.tar.gz
mv apache-tomcat-910.01.5848 apache-tomcat-910.01.5848-esup-sgc

ln -s apache-tomcat-910.01.5848-esup-nfc-tag tomcat-esup-nfc-tag
ln -s apache-tomcat-910.01.5848-esup-sgc tomcat-esup-sgc

rm -Rf /opt/tomcat-esup-sgc/webapps/*
mkdir /opt/tomcat-esup-sgc/webapps/ROOT/
rm -Rf /opt/tomcat-esup-nfc-tag/webapps/*
mkdir /opt/tomcat-esup-nfc-tag/webapps/ROOT/

chown -R esup:esup /opt/apache-tomcat-910.01.5848-esup-sgc/
chown -R esup:esup /opt/apache-tomcat-910.01.5848-esup-nfc-tag/

Note : Le contenu du dossier webapps est impérativement à supprimer, si vous ne le faites pas l'interface d'administration d'esup-sgc ne s'affichera pas. l'URL /manager rentrera en conflit avec la webapp manager de tomcat livrée par défaut lors du déploiement du serveur tomcat.

...

Bloc de code
languagebash
themeRDark
cat > /opt/esup-env <<EOF
#!/bin/sh
JAVA_HOME=/opt/jdk
#GRADLE_HOME=/usr/local/gradle-2.14.1
#ANDROID_HOME=/usr/local/android-sdk
JAVA_OPTS="-Xms256m -Xmx512m"
EOF

...

Bloc de code
languagebash
themeRDark
a2enmod rewrite
a2enmod ssl
a2enmod proxy_ajp
a2enmod proxy_http
a2enmod shib
a2enmod headers


Créer un fichier de configuration pour le VirtualHost esup-sgc.univ-ville.fr /etc/apache2/sites-available/esup-sgc.univ-ville.fr.conf

...

Bloc de code
languagexml
themeRDark
<VirtualHost *:80>
    ServerName esup-sgc.univ-ville.fr
    ServerAdmin webmaster@univ-ville.fr
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    RewriteEngine On
    RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
    RewriteRule .* - [F]
    RewriteRule ^/(.*)$   https://esup-sgc.univ-ville.fr/$1   [L,R]
</VirtualHost>

<VirtualHost *:443>
    ServerName esup-sgc.univ-ville.fr
    ServerAdmin webmaster@univ-ville.fr
    DocumentRoot /var/www/html
    ErrorLog  ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    SSLEngine on
    SSLCertificateFile    /etc/letsencrypt/live/esup-sgc.univ-ville.fr/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/esup-sgc.univ-ville.fr/privkey.pem
    SSLCertificateChainFile  /etc/letsencrypt/live/esup-sgc.univ-ville.fr/chain.pem

    ProxyPass /Shibboleth.sso !
    ProxyPass /secure !
    ScriptAlias /secure /var/www/printenv.pl
    ShibCompatValidUser Off

    <Location /Shibboleth.sso>
        SetHandler shib
        AuthType None
        Require all granted
    </Location>
# Security measure: remove any client-supplied REMOTE_USER header early.             <Location /shibboleth-sp>
        AuthType None
        Require all granted
    </Location>
    Alias /shibboleth-sp/main.css /usr/share/shibboleth/main.css
    <Location /secure>
        AuthType shibboleth
        ShibRequestSetting requireSession 1
        require shib-session
        ShibUseHeaders On
        ShibRequestSetting applicationId default
    </Location>
    <Location />
        AuthType shibboleth
    RequestHeader unset REMOTE_USER early

  ShibRequestSetting  requireSession 1<Location /Shibboleth.sso>
        requireSetHandler shib-session
        ShibUseHeadersAuthType OnNone
        ShibRequestSettingRequire applicationIdall defaultgranted
    </Location>
    <Location "/resources">/shibboleth-sp>
        RequireAuthType allNone
 granted
       Require ShibRequireSessionall Offgranted
    </Location>
   <Location "/wsrest"> Alias /shibboleth-sp/main.css /usr/share/shibboleth/main.css
    <Location /secure>
  Require all granted
    AuthType shibboleth
  ShibRequireSession Off
   </Location>
  ShibRequestSetting <Location "/payboxcallback">requireSession 1
       Require allrequire grantedshib-session
        ShibRequireSessionShibUseHeaders OffOn
   </Location>

   ProxyPass / ajp://localhost:8209/ ttl=10 timeout=3600 retry=1

 ShibRequestSetting applicationId default
   <LocationMatch "^/(resources|webjars)"></Location>
      ExpiresActive On
 <Location />
     ExpiresByType text/css "access plus 1 hour"AuthType shibboleth
      ExpiresByType text/javascript "accessShibRequestSetting plusrequireSession 1
 hour"
       require ExpiresByType application/javascript "access plus 1 hour"
shib-session
        ShibUseHeaders On
  ExpiresByType image/gif "access plus 1 hour"
 ShibRequestSetting applicationId default
   ExpiresByType image</pngLocation>
 "access plus 1<Location hour"/resources">
      ExpiresByType image/jpg "accessRequire plus 1 hour"all granted
      ExpiresByType image/jpeg "access plus 1 hour" ShibRequireSession Off
   </Location>
   ExpiresByType<Location application/x-shockwave-flash "access plus 1 hour"
      ExpiresByType image/x-icon  "access plus 1 hour""/wsrest">
       Require all granted
       ShibRequireSession Off
   </LocationMatch>
Location>
   CacheRoot<Location /var/cache/httpd/esup-sgc"/payboxcallback">
   CacheDirLevels 2    Require all granted
   CacheDirLength   1
 ShibRequireSession Off
 CacheEnable disk </resourcesLocation>

   CacheEnableProxyPass disk /webjars/ ajp://localhost:8209/ ttl=10 timeout=3600 retry=1

   AddOutputFilterByType DEFLATE text/plain text/html text/css text/javascript application/x-javascript application/javascript application/json image/svg+xml


</VirtualHost>

...

Bloc de code
languagexml
themeRDark
<VirtualHost *:80>
    ServerName esup-nfc-tag.univ-ville.fr
    ServerAdmin webmaster@univ-ville.fr
    DocumentRoot /var/www/html
    ErrorLog  ${APACHE_LOG_DIR}/error_esup-nfc-tag.log
    CustomLog ${APACHE_LOG_DIR}/access_esup-nfc-tag.log combined
    RewriteEngine On
    RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
    RewriteRule .* - [F]
    RewriteRule ^/(.*)$   https://esup-nfc-tag.univ-ville.fr/$1   [L,R]
</VirtualHost>

<VirtualHost *:443>
    ServerName esup-nfc-tag.univ-ville.fr
    ServerAdmin webmaster@univ-ville.fr
    DocumentRoot /var/www/html
    ErrorLog  ${APACHE_LOG_DIR}/error_esup-nfc-tag.log
    CustomLog ${APACHE_LOG_DIR}/access_esup-nfc-tag.log combined
    SSLEngine on
    SSLCertificateFile    /etc/letsencrypt/live/esup-nfc-tag.univ-ville.fr/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/esup-nfc-tag.univ-ville.fr/privkey.pem
    SSLCertificateChainFile  /etc/letsencrypt/live/esup-nfc-tag.univ-ville.fr/chain.pem

    ProxyPass /Shibboleth.sso !
    ProxyPass /secure !
    ScriptAlias /secure /var/www/printenv.pl
    ShibCompatValidUser Off
    <Location /Shibboleth.sso>
        SetHandler shib
        AuthType None
        Require all granted
    </Location>/www/printenv.pl
    <Location /shibboleth-sp>ShibCompatValidUser Off

    # Security measure: remove AuthType None
    any client-supplied REMOTE_USER header early.    Require all granted
    </Location>
    Alias /shibboleth-sp/main.css /usr/share/shibboleth/main.css
    <Location /secure>
        AuthType shibboleth
        ShibRequestSetting requireSession 1
        require shib-session
        ShibUseHeaders On
        ShibRequestSetting applicationId esup-nfc-tag
    </Location>
    <Location /manager>
        AuthType shibboleth
        ShibRequestSetting requireSession 1
        require shib-session
        ShibUseHeaders On
    RequestHeader unset REMOTE_USER early

 ShibRequestSetting   applicationId esup-nfc-tag<Location /Shibboleth.sso>
    </Location>
    <LocationSetHandler /admin>shib
        AuthType shibbolethNone
        ShibRequestSettingRequire requireSessionall 1granted
    </Location>
    require<Location shib-session/shibboleth-sp>
        AuthType None
        ShibUseHeadersRequire all Ongranted
    </Location>
    ShibRequestSetting applicationId esup-nfc-tag
    </Location>Alias /shibboleth-sp/main.css /usr/share/shibboleth/main.css
    <Location /nfc>secure>
        AuthType shibboleth
        ShibRequestSetting requireSession 1
        require shib-session
        ShibUseHeaders On
        ShibRequestSetting applicationId esup-nfc-tag
    </Location>

    ProxyPass<Location / ajp://localhost:8309/ ttl=10 timeout=3600 retry=1


manager>
        <Location "/resources">AuthType shibboleth
        ShibRequestSetting ExpiresActiverequireSession On1
        require shib-session
    ExpiresByType text/css "access plus 1ShibUseHeaders hour"On
        ShibRequestSetting ExpiresByType text/javascript "access plus 1 hour"applicationId esup-nfc-tag
    </Location>
    <Location /admin>
    ExpiresByType application/javascript "access plus 1AuthType hour"shibboleth
        ShibRequestSetting requireSession ExpiresByType1
 image/gif "access plus 1 hour"
   require shib-session
    ExpiresByType image/png "access plus 1ShibUseHeaders hour"On
        ShibRequestSetting ExpiresByType image/jpg "access plus 1 hour"applicationId esup-nfc-tag
    </Location>
    <Location /nfc>
    ExpiresByType image/jpeg "access plus 1AuthType hour"shibboleth
        ExpiresByType application/x-shockwave-flash "access plus 1 hour"
ShibRequestSetting requireSession 1
        require shib-session
   ExpiresByType image/x-icon  "access plus 1ShibUseHeaders hour"On
    </Location>

    CacheRoot /var/cache/httpd/ShibRequestSetting applicationId esup-nfc-tag
    CacheDirLevels 2</Location>

    CacheDirLengthProxyPass 1
    CacheEnable disk /resources/ ajp://localhost:8309/ ttl=10 timeout=3600 retry=1

    AddOutputFilterByType DEFLATE text/plain text/html text/css text/javascript application/x-javascript application/javascript application/json image/svg+xml

</VirtualHost>

...

Bloc de code
languagexml
themeRDark
    <ApplicationDefaults entityID="https://esup-sgc.univ-ville.fr" ...>
        <Sessions ...>
			<!--
            <SSO entityID="https://idp.univ-ville.fr/idp/shibboleth">
              SAML2 SAML1
            </SSO>
			-->
			<SSO location="/"
                 discoveryProtocol="SAMLDS" discoveryURL="https://"
discovery.renater.fr/renater">                                      discoveryProtocol="SAMLDS" discoveryURL="https://discovery.renater.fr/renater">                                                                                  
              SAML2 SAML1                        
              SAML2 SAML1                                                                                                                                                   
            </SSO>

Concernant la gestion des sessions, obligez l'usage de https pour les cookies mais permettez un changement d'IP de l'utilisateur (certains fournisseurs d'accès internet bas coût ne fixe pas les IPs de leurs clients en mobile) : checkAddress et consistentAddress doivent être à false.
Exemple : 

Bloc de code
languagexml
themeRDark
<Sessions lifetime="28800" timeout="3600" relayState="ss:mem"
          checkAddress="false" consistentAddress="false"                 handlerSSL="true" cookieProps="https"
               </SSO>  redirectLimit="exact">

Penser à modifier le contact du support:

...