Introduction
Cette application permet de gérer le cycle de vie des cartes NFC de votre établissement, de la demande à sa désactivation en passant par son impression, encodage et activation dans votre système d'information.
Cette application fonctionne via une authentification/identification Shibboleth et en lien avec une instance esup-nfc-tag-server
Une Machine Virtuelle est à votre disposition pour pouvoir manipuler ESUP-SGC et ainsi avoir à disposition un exemple complet d'installation : VM ESUP-SGC.
Concepts
Afin de mettre en œuvre le système de gestion de carte ESUP-SGC, vous devez installer ESUP-SGC mais également ESUP-NFC-TAG.
ESUP-SGC
Gère le cycle de vie de vos cartes (workflow allant de la demande à désactivation de la carte)
- Authentifie les utilisateurs via une authentification Shibboleth
Récupère les informations (nom, prénom, email, date de naissance, etc.) des utilisateurs depuis l’identification shibboleth ou/et un annuaire LDAP ou/et une base de données relationnelle
Synchronise les informations utilisateurs et de cartes avec l'API du CNOUS (CROUS, IZLY) en temps réel.
- Synchronise les informations utilisateurs étudiants et de cartes avec l'API ESC - European Student Card : http://europeanstudentcard.eu
Synchronisation avec différentes solutions de contrôles d’accès (P2S, TIL, Synchronic)
- Reversement des informations de cartes (csn, 'identifiant desfire', photo) dans un annuaire LDAP
- Permet l’impression des cartes (en mode PS/PCL)
esup-sgc ne sait pas encoder les cartes, la partie technique propre au NFC est propre à ESUP-NFC-TAG
ESUP-NFC-TAG
ESUP-NFC-TAG ( https://www.esup-portail.org/wiki/display/ESUPNFC ) se décompose d'une partie serveur (implémentant toute la logique métier, la gestion des périphériques et applications clientes ainsi que les algorithmes de chiffrement Mifare Desfire) nommé ESUP-NFC-TAG-SERVER qui :
Permet la lecture et l’écriture des cartes en NFC - technologie Mifare Desfire
Gère des applications clientes (de lecture notamment mais aussi écriture ou/et mise à jour pour ESUP-SGC)
Gère les périphériques sans contact (lecteur PC/SC, smartphone, …)
C'est esup-nfc-tag-server qui connait la structure de la carte Mifare Desfire. Il communique avec esup-sgc pour récupérer le contenu à écrire dans les fichiers (ex : code d’identification pour le contrôle d’accès)
Pour lire ou encoder une carte, un "client lourd" est nécessaire ; aussi les applications clientes suivantes sont disponibles :
esup-nfc-tag-desktop : application java qui permet d’utiliser un encodeur PC/SC USB depuis une machine linux/windows/mac disposant de Java
esup-nfc-tag-droid : application Android qui utilise le lecteur NFC du smartphone
- esup-nfc-tag-keyboard : application java qui permet d’émuler des frappes clavier permettant ainsi de saisir l'identifiant du porteur de carte par exemple
ESUP-SGC-CLIENT
ESUP-SGC inclut également son propre client pour l’encodage des cartes (esup-sgc-client) qui est en fait également client d'esup-nfc-tag-server.
L’encodage via esup-sgc-client se passe de cette manière :
- Edition en 2 temps :
lecture du QR code présent sur la carte (identifiant l’individu à encoder) ; la carte ayant été imprimée depuis l'interface web d'esup-sgc via un navigateur web
association de la carte avec l’individu dans le SGC
encodage des différentes applications DESFIRE telles que décrites dans le fichier de configuration d'ESUP-NFC-TAG-SERVER
... et optionnellement (on recommande plutôt d'acheter des cartes pré-encodés IZLY) encodage de l’application IZLY (CROUS) via ESUP-NFC-TAG-SERVER en utilisant la clé SAM du CNOUS et des DLL Windows
- Edition en 1 temps :
- sélection de la carte à imprimer et encoder depuis l'interface web d'esup-sgc via un navigateur web
impression de la carte
association de la carte avec l’individu dans le SGC et encodage des différentes applications DESFIRE telles que décrites dans le fichier de configuration d'ESUP-NFC-TAG-SERVER
... et optionnellement (on recommande plutôt d'acheter des cartes pré-encodés IZLY) encodage de l’application IZLY (CROUS) via ESUP-NFC-TAG-SERVER en utilisant la clé SAM du CNOUS et des DLL Windows
Schéma d’architecture de la solution
Pre-requis
Logiciels
- Linux : nous recommandons l'usage d'un debian/trixie (debian 13)
Java : nous recommandons l'usage d'openjdk
pour la partie serveur les versions 17 à 25 (généralement présentes dans les distributions) conviennent,
pour la partie cliente vous pouvez utiliser openjdk et openjfx en version 17 ou supérieur également.
Maven (dernière version 3.x) : le mieux est de l'installer via le système de paquets de votre linux
Postgresql : le mieux est de l'installer via le système de paquets de votre linux.
Tomcat 10 ou jetty 12 : à installer via le système de paquets également
Apache + libapache2-mod-shib2 (par paquets)
Git
Les deux applications serveurs doivent être « shibbolethisées » - voir la documentation renater : https://services.renater.fr/federation/docs/installation/sp
Matériel
Voici le matériel minimal requis pour pouvoir mettre en place un Système de Gestion de cartes via l'environnement ESUP-SGC.
Serveur : 2 CPU, RAM > 2 Go, Disque > 20 Go
Cartes Mifare Desfire EV1, 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
A cela, un Smartphone Android > 5 avec lecteur NFC peut également s'avérer utile par exemple.
Installation des pré-requis
Note:
Les utilisateurs, chemins d'installation, ports utilisés ci-dessous ne sont qu'une suggestion.
Les exemples de configuration système sont basés sur Debian.
Les deux services seront installés sur le même serveur, l'un répondant avec le nom esup-sgc.univ-ville.fr et l'autre avec le nom esup-nfc-tag.univ-ville.fr.
Ces VirtualHosts seront configurés sous Apache.
Installer les paquets nécessaires
apt install wget apache2 libapache2-mod-shib git apt install postgresql postgresql-contrib
Il est également nécessaire d'avoir un JDK d'installé (OpenJDK) et maven
apt install openjdk-21-jdk-headless maven
Installation des instances Tomcat
On propose d'installer les 2 applications esup-sgc et esup-nfc-tag sur deux instances de Tomcat.
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 s'appuyant sur le système de paquets 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.
On installe le paquet tomcat10, avec l'utilitaire tomcat10-instance-create issu de tomcat10-user permettant de facilitier la mise en place de plusieurs instances sur le même serveur :
apt install tomcat10 tomcat10-user
Dans l'optique d'installer les 2 tomcat pour esup-sgc et esup-nfc-tag de la même manière, on stoppe et désactive le tomcat proposé par défaut via le paquet tomcat10.
systemctl stop tomcat10.service systemctl disable tomcat10.service
Le paquet tomcat10 a ajouté au passage un utilisateur tomcat qui lancera nos instances de manière sécurisée avec des provilèges limitées.
Pour que les commandes bash lancées par esup-sgc fonctionne (commande chromium notamment) il faut que l'utilisateur tomcat est son home directory d'opérationnel : créez le et affectez le à l'utilisateur tomcaet si nécessaire.
echo ~tomcat -> /var/lib/tomcat mkdir /var/lib/tomcat chown tomcat /var/lib/tomcat
On créé ensuite les 2 instances des tomcat ainsi :
tomcat10-instance-create -p 8280 -c 8205 /opt/tomcat-esup-sgc tomcat10-instance-create -p 8380 -c 8305 /opt/tomcat-esup-nfc-tag
On modifie ensuite les fichiers server.xml pour activer l'AJP, tomcat10-instance-create ne permettant pas cette option directement.
Pour l'instance d'Esup-SGC, éditer /opt/tomcat-esup-sgc/conf/server.xml afin de configurer le port 8205 et un connecteur AJP sur le port 8209.
Les connecteurs HTTP et HTTPS (ports 8080 et 8443 par défaut) doivent être commentés (ou être configurés sur un autre port pour éviter les conflits avec la seconde instance Tomcat)
<Server port="8205" shutdown="SHUTDOWN"> <!-- (...) --> <Connector port="8209" protocol="AJP/1.3" address="127.0.0.1" redirectPort="8443" asyncTimeout="1200000" tomcatAuthentication="false" scheme="https" secure="true" URIEncoding="UTF-8" secretRequired="false"/>
Idem pour l'instance d'Esup-NFC-TAG qui utilisera les ports 8305 et 8309.
<Server port="8305" shutdown="SHUTDOWN"> <!-- (...) --> <Connector port="8309" protocol="AJP/1.3" address="127.0.0.1" redirectPort="8443" asyncTimeout="1200000" tomcatAuthentication="false" scheme="https" secure="true" URIEncoding="UTF-8" secretRequired="false"/>
- Le tomcatAuthentication à false est indispensable pour que l'authentification shibboleth via le frontal apache et mod_shib fonctionne.
- L'attribut asyncTimeout est donné en milli-secondes (1200000 pour 20 minutes) - esup-sgc et esup-nfc-tag utilisent la technique de long polling lors du badgeage de cartes ; c'est aussi ce qui explique le fait que l'on mette un timeout de 3600 secondes au niveau des ProxyPass Apache (les timeout des ProxyPass Apache doivent être plus grands que les asyncTimeout des tomcat).
Ces deux instances seront démarrées via Systemd. L'installation via les paquets debian nous propose par défaut une configuration sécurisée où l'instance de tomcat est lancé par un utilisateur banalisé tomcat à qui on octroie des droits de lecture/écriture sur certains répertoires. Les librairies tomcat sont partagées et issues du sytème (et donc mis à jour au travers d'un apt update/upgrade) alors que les configurations, logs, fichiers temporaires et répertoire des applications web (webapps) sont propres à chaque instance.
Aussi le fichier systemd à mettre en place pour chacune des 2 instances n'est pas triviale, mais il suffit de partir de celui proposé pour l'instance du tomcat par défaut (que l'on a par ailleurs désactivé plus haut) pour les obtenir :
cp /usr/lib/systemd/system/tomcat10.service /etc/systemd/system/tomcat-esup-sgc.service cp /usr/lib/systemd/system/tomcat10.service /etc/systemd/system/tomcat-esup-nfc-tag.service
Pour Esup-SGC (TODO : à revoir) :
cat > /etc/systemd/system/tomcat-esup-sgc.service <<EOF # # Systemd unit file for Apache Tomcat # [Unit] Description=Apache Tomcat ESUP-SGC Server Documentation=https://tomcat.apache.org/tomcat-10.0-doc/index.html After=network.target RequiresMountsFor=/var/log/tomcat10 /var/lib/tomcat10 /opt/tomcat-esup-sgc [Service] # Configuration Environment="CATALINA_HOME=/usr/share/tomcat10" Environment="CATALINA_BASE=/opt/tomcat-esup-sgc" Environment="CATALINA_TMPDIR=/opt/tomcat-esup-sgc/temp" Environment="JAVA_OPTS=-Djava.awt.headless=true" # Lifecycle Type=simple ExecStart=/bin/sh /usr/libexec/tomcat10/tomcat-start.sh SuccessExitStatus=143 Restart=on-abort # Logging SyslogIdentifier=tomcat-esup-sgc # Security User=tomcat Group=tomcat PrivateTmp=yes AmbientCapabilities=CAP_NET_BIND_SERVICE NoNewPrivileges=true CacheDirectory=tomcat-esup-sgc CacheDirectoryMode=750 ProtectSystem=strict ReadWritePaths=/opt/tomcat-esup-sgc/conf/ ReadWritePaths=/opt/tomcat-esup-sgc/work/ ReadWritePaths=/opt/tomcat-esup-sgc/webapps/ ReadWritePaths=/opt/tomcat-esup-sgc/logs/ ReadWritePaths=/opt/tomcat-esup-sgc/temp/ [Install] WantedBy=multi-user.target
Ne pas oublier de donner les droits à tomcat sur /opt/tomcat-esup-sgc et d'activer le service.
chown -R tomcat:tomcat /opt/tomcat-esup-sgc/ systemctl enable tomcat-esup-sgc.service
Même procédure pour Esup-NFC-TAG:
cat > /etc/systemd/system/tomcat-esup-nfc-tag.service <<EOF # # Systemd unit file for Apache Tomcat # [Unit] Description=Apache Tomcat Esu Nfc Tag Server Documentation=https://tomcat.apache.org/tomcat-10.0-doc/index.html After=network.target RequiresMountsFor=/var/log/tomcat10 /var/lib/tomcat10 /opt/tomcat-esup-nfc-tag [Service] # Configuration Environment="CATALINA_HOME=/usr/share/tomcat10" Environment="CATALINA_BASE=/opt/tomcat-esup-nfc-tag" Environment="CATALINA_TMPDIR=/opt/tomcat-esup-nfc-tag/temp" Environment="JAVA_OPTS=-Djava.awt.headless=true" # Lifecycle Type=simple ExecStart=/bin/sh /usr/libexec/tomcat10/tomcat-start.sh SuccessExitStatus=143 Restart=on-abort # Logging SyslogIdentifier=tomcat-esup-nfc-tag # Security User=tomcat Group=tomcat PrivateTmp=yes AmbientCapabilities=CAP_NET_BIND_SERVICE NoNewPrivileges=true CacheDirectory=tomcat-esup-nfc-tag CacheDirectoryMode=750 ProtectSystem=strict ReadWritePaths=/opt/tomcat-esup-nfc-tag/conf/ ReadWritePaths=/opt/tomcat-esup-nfc-tag/work/ ReadWritePaths=/opt/tomcat-esup-nfc-tag/webapps/ ReadWritePaths=/opt/tomcat-esup-nfc-tag/logs/ ReadWritePaths=/opt/tomcat-esup-nfc-tag/temp/ [Install] WantedBy=multi-user.target
Ne pas oublier de donner les droits à tomcat sur /opt/tomcat-esup-sgc et d'activer le service.
chown -R tomcat:tomcat /opt/tomcat-esup-nfc-tag/ systemctl enable tomcat-esup-nfc-tag.service
Configuration d'Apache
Activer les modules suivants:
a2enmod rewrite a2enmod ssl a2enmod proxy_ajp 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
<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
# Security measure: remove any client-supplied REMOTE_USER header early.
RequestHeader unset REMOTE_USER early
<Location /Shibboleth.sso>
SetHandler shib
AuthType None
Require all granted
</Location>
<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
ShibRequestSetting requireSession 1
require shib-session
ShibUseHeaders On
ShibRequestSetting applicationId default
</Location>
<Location "/resources">
Require all granted
ShibRequireSession Off
</Location>
<Location "/wsrest">
Require all granted
ShibRequireSession Off
</Location>
<Location "/payboxcallback">
Require all granted
ShibRequireSession Off
</Location>
ProxyPass / 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>
Idem pour le VirtualHost esup-nfc-tag.univ-ville.fr dans /etc/apache2/sites-available/esup-nfc-tag.univ-ville.fr.conf
<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
# Security measure: remove any client-supplied REMOTE_USER header early.
RequestHeader unset REMOTE_USER early
<Location /Shibboleth.sso>
SetHandler shib
AuthType None
Require all granted
</Location>
<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 esup-nfc-tag
</Location>
<Location /manager>
AuthType shibboleth
ShibRequestSetting requireSession 1
require shib-session
ShibUseHeaders On
ShibRequestSetting applicationId esup-nfc-tag
</Location>
<Location /admin>
AuthType shibboleth
ShibRequestSetting requireSession 1
require shib-session
ShibUseHeaders On
ShibRequestSetting applicationId esup-nfc-tag
</Location>
<Location /nfc>
AuthType shibboleth
ShibRequestSetting requireSession 1
require shib-session
ShibUseHeaders On
ShibRequestSetting applicationId esup-nfc-tag
</Location>
ProxyPass / 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>
A noter que l'applicationId du ShibRequestSetting diffère selon les VirtualHosts.
De plus, dans cet exemple, chaque VirtualHost dispose de son propre certificat. Il est tout à fait possible d'utiliser le même sous-réserve que les noms des deux VirtualHosts y soient indiqués (SAN).
En présentant la chaîne correctement et avec des certificats tels que proposés par Renater/Sectigo (les chemins ci-dessus correspondent à des exemples de chemins de certificats récupérés via le protocole ACME par certbot ... depuis Sectigo) le keystore par défaut de votre JVM suffira et vous n'avez pas besoin alors d'importer unitairement vos certificats dans le keystore java.
Si jamais vous avez un certificat issu d'une autorité de certification non reconnue par votre JVM (à proscrire) vous pouvez, en dernier recours, intégrer ce certificat au keystore ainsi par exemple:
# on copie le cacerts initial pour conserver la confiance dans les autorités de certification racines par défaut cp /etc/ssl/certs/java/cacerts /opt/esup.univ-ville.jks # par défaut le password est changeit,on le modifie keytool -storepasswd -keystore cacerts # utile si on doit supprimer un ancien certificat expiré pour en mettre un nouveau keytool -delete -alias mon_cert -keystore /opt/esup.univ-ville.jks # on importe le certificat keytool -import -file /etc/apache2/certs/esup-sgc.crt -alias sgc -trustcacerts -keystore /opt/esup.univ-ville.jks
À nouveau, normalement, avec un certificat valide et bien présenté, vous n'avez pas besoin de réaliser cette opération sur le keystore java et vous n'avez pas besoin de fait d'avoir ce fichier keystore /opt/esup.univ-ville.jks
Activer les sites:
a2dissite 000-default.conf a2ensite esup-sgc.univ-ville.fr a2ensite esup-nfc-tag.univ-ville.fr
Installation du SP Shibboleth
Générer une nouvelle clé:
shib-keygen
Cette commande permet de générer les fichiers sp-key.pem et sp-cert.pem dans /etc/shibboleth/
Editer /etc/shibboleth/shibboleth2.xml
Avant la balise ApplicationDefaults, ajouter un RequestMap avec le nom des deux virtualhost:
<RequestMapper type="Native">
<RequestMap applicationId="default">
<Host name="esup-nfc-tag.univ-ville.fr" applicationId="esup-nfc-tag" authType="shibboleth" requireSession="false"/>
<Host name="esup-sgc.univ-ville.fr" applicationId="esup-sgc" authType="shibboleth" requireSession="false"/>
</RequestMap>
</RequestMapper>
Configurer la balise SSO pour utiliser le WAYF de Renater (ou un Idp par défaut sinon, cf variante en commentaires) :
<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">
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 :
<Sessions lifetime="28800" timeout="3600" relayState="ss:mem" checkAddress="false" consistentAddress="false" handlerSSL="true" cookieProps="https" redirectLimit="exact">
Penser à modifier le contact du support:
<Errors supportContact="sysadmin@univ-ville.fr"
Votre fournisseur de Metadata Renater (ou directement l'IDP - variante donnée en commentaires ; si vous n'utilisez pas la fédération Renater ...) - notez ici l'usage du "Whitelist" sur la fédération Renater :
Attention si vous avez un sp en version 3, uri="https://xx" est ignoré et il faut mettre url= !!! L'erreur étant peu évidente à comprendre, c'est 1/2 journée perdue
<!--
<MetadataProvider type="XML" validate="true"
url="https://idp.univ-ville.fr/idp/shibboleth"
backingFilePath="idp.univ-ville.fr-metadata.xml">
</MetadataProvider>
-->
<MetadataProvider type="XML" url="https://metadata.federation.renater.fr/renater/main/main-idps-renater-metadata.xml" backingFilePath="/etc/shibboleth/metadatas/main-idps-renater-metadata.xml" reloadInterval="7200">
<MetadataFilter type="RequireValidUntil" maxValidityInterval="2419200"/>
<MetadataFilter type="Signature" certificate="renater-metadata-signing-cert-2016.pem"/>
<MetadataFilter type="Whitelist">
<Include>urn:mace:cru.fr:federation:univ-rouen.fr</Include>
<Include>https://shibboleth.insa-rouen.fr/idp/shibboleth</Include>
</MetadataFilter>
</MetadataProvider>
Et enfin, avant la fermeture de la balise ApplicationDefaults, rajoutez un ApplicationOverride. Dans notre cas, le VirtualHost esup-sgc.univ-ville.fr utilisera le default, on utilisera un id spécifique pour esup-nfc-tag:
<ApplicationOverride id="esup-nfc-tag" entityID="https://esup-nfc-tag.univ-ville.fr/shibboleth"/>
Les Metadata doivent à présent être téléchargeables à ces adresses:
https://esup-sgc.univ-ville.fr/Shibboleth.sso/Metadata
https://esup-nfc-tag.univ-ville.fr/Shibboleth.sso/Metadata
Il reste donc à les intégrer à l'IDP, soit directement, soit en passant par la fédération d'identité.
Logs
Suivant votre installation et paramétrage, vous retrouvez les logs dans /opt/tomcat-esup-sgc/logs/ et /opt/tomcat-esup-nfc-tag/logs/
En installant les tomcat comme décrits ici, et les lançant avec systemd, vous pourrez également consulter ces logs via journalct :
journalctl -xeu tomcat-esup-sgc.service --follow
Rotation des logs
Il est possible de mettre en place une rotation journalière des logs. La plupart des distributions fournissent logrotate. Il est donc possible de créer un fichier de config /etc/logrotate.d/esup-sgc avec, par exemple, le contenu suivant:
/opt/tomcat-esup-sgc/logs/*log
/opt/tomcat-esup-sgc/logs/catalina.out {
copytruncate
daily
missingok
rotate 30
compress
delaycompress
}
/opt/tomcat-esup-nfc-tag/logs/*log
/opt/tomcat-esup-nfc-tag/logs/catalina.out {
copytruncate
daily
missingok
rotate 30
compress
delaycompress
}
Sous Debian, il est également possible d'éditer le fichier /var/lib/logrotate/status pour déterminer plus précisément la date de rotation (ceci est utile dans le cas d'une utilisation de lvm2 par exemple).
Installation
Éléments requis
Pour avoir un système de gestion de cartes fonctionnel, l'installation minimale consiste à installer :
- un serveur tomcat avec l'application web esup-sgc : Installation ESUP-SGC - Configurations ESUP-SGC et ESUP-NFC-TAG-SERVER
- un serveur tomcat avec l'application web esup-nfc-tag-server : ESUP-NFC-TAG-SERVER
L'ordre d'installation n'a pas d'importance. Toutefois, les deux applications étant dépendentes, la documentation d'installation d'ESUP-SGC comporte des configurations d'ESUP-NFC-TAG-SERVER
Pour enrôler et éventuellement encoder vos cartes vous avez également besoin d'un client esup-sgc-client : voir la page ESUP-SGC-Client et édition des cartes
Éléments optionnels
Vous pouvez également mettre en place les applications Esup-nfc-tag-desktop et Esup-nfc-tag-droid :
- Esup-nfc-tag-desktop : ESUP-NFC-TAG-DESKTOP
- Esup-nfc-tag-droid : ESUP-NFC-TAG-DROID
Alliées à ESUP-SGC, ces applications pourront vous permettre
- de rechercher une carte en la badgeant
- de marquer une carte comme "livrée" en la badgeant
