Pré-requis
- Java (JDK - JAVA SE 8): http://www.oracle.com/technetwork/java/javase/downloads/index.htmlopenjdk 17, 11 ou 8) : le mieux est de l'installer via le système de paquets de votre linux.
- 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 9 ou > : le mieux est de l'installer via le système de paquets de votre linux.
...
Une fois le SP Shibboleth et Apache configurés usuellement (voir : https://services.renater.fr/federation/docs/installation/sp), en plus de l'usuel /secure, il faut sécuriser /manager, /admin et /nfc en ajoutant ceci à la conf apache (à adapter cependant en fonction des versions d'Apache et mod_shib) :
Bloc de code |
---|
language | text |
---|
theme | RDarkxml |
---|
|
<Location /secure>
AuthType shibboleth
ShibRequestSetting requireSession 1
require shib-session
ShibUseHeaders On
</Location>
<Location /manager>
AuthType shibboleth
ShibRequestSetting requireSession 1
require shib-session
ShibUseHeaders On
</Location>
<Location /admin>
AuthType shibboleth
ShibRequestSetting requireSession 1
require shib-session
ShibUseHeaders On
</Location>
<Location /nfc>
AuthType shibboleth
ShibRequestSetting requireSession 1
require shib-session
ShibUseHeaders On
</Location> |
...
Bloc de code |
---|
language | text |
---|
theme | RDarkbash |
---|
|
host all all 127.0.0.1/32 password |
- redémarrage de postgresql
- psql
Bloc de code |
---|
language | sql |
---|
theme | RDarkbash |
---|
|
create database esupnfctag;
create USER esupnfctag with password 'esup';
grant ALL ON DATABASE esupnfctag to esupnfctag; |
...
ALTER DATABASE esupnfctag OWNER TO esupnfctag; |
Paramétrage mémoire JVM :
Pensez à paramétrer les espaces mémoire JVM :
Bloc de code |
---|
|
export JAVA_OPTS="-Xms1024m -Xmx1024m -XX:MaxPermSize=256m" |
Pour maven :
Bloc de code |
---|
|
export MAVEN_OPTS="-Xms1024m -Xmx1024m -XX:MaxPermSize=256m" |
Bloc de code |
---|
|
cd /opt
git clone https://github.com/EsupPortail/esup-nfc-tag-server |
...
Par exemple, lors que vous avez fini la configuration du fichier "src/main/resources/META-INF/spring/applicationContext-custom.xml" vous pouvez executer les commandes suivantes depuis la racine de vos sources (/opt/esup-sgc):
Bloc de code |
---|
|
git add src/main/resources/META-INF/spring/applicationContext-custom.xml
git commit -m "config prod univ-ville-fr" |
...
Pour une configuration d'authentification de carte par CSN :
Bloc de code |
---|
|
<bean id="csnAuthConfig" class="org.esupportail.nfctag.service.api.impl.CsnAuthConfig">
<property name="description" value="Authentification CSN"/>
</bean> |
Pour une configuration d'authentification de carte par Mifare Desfire AES :
Bloc de code |
---|
|
<bean id="desfireAuthConfig" class="org.esupportail.nfctag.service.api.impl.DesfireAuthConfig">
<property name="desfireKeyNumber" value="01"/>
<property name="desfireAppId" value="A123F1"/>
<property name="desfireAppName" value="test-app"/>
<property name="readFileCommand" value="90BD0000070000000016000000"/>
<property name="desfireKey" value="/var/local/key"/>
<property name="description" value="Authentification DESFIRE"/>
</bean> |
TagIdCheckApi
TagIdCheckApi correspond à la façon dont on récupère l'identification d'un individu depuis un identifiant de carte (identifiant CSN ou issu de la lecture d'un fichier Desfire). Cette identification de l'individu consiste en son eppn, nom, prénom.
...
Exemple TagIdCheck
Bloc de code |
---|
|
<bean id="tagIdCheckApiCarteCulture" class="org.esupportail.nfctag.service.api.impl.TagIdCheckRestWs">
<property name="tagIdCheckUrl" value="https://carte-culture.univ-rouen.fr/nfc-ws/tagIdCheck"/>
<property name="description" value="via Carte Culture"/>
</bean> |
...
Pour tester l'application rapidement, ajouter ce tagIdCheck (qui retournera toujours un résultat):
Bloc de code |
---|
|
<bean id="tagIdCheckApiDummy" class="org.esupportail.nfctag.service.api.impl.TagIdCheckDummyWs">
<property name="description" value="TagIdCheckDummy"/>
</bean> |
...
AppliExtApi
AppliExtApi correspond à l'application cible finale du badgeage :
...
Exemple AppliExtDummy
Bloc de code |
---|
|
<bean id="exempleDummyExtApi" class="org.esupportail.nfctag.service.api.impl.AppliExtDummy">
<property name="description" value="Salle de test"/>
<property name="locationsNames">
<util:list>
<value>Salle de test</value>
</util:list>
</property>
<property name="eppnFilter" value=".*"/>
</bean> |
...
Exemple AppliExtRestWs
Bloc de code |
---|
|
<bean id="esupSgcExtApi" class="org.esupportail.nfctag.service.api.impl.AppliExtRestWs">
<property name="isTagableUrl" value="https://esup-sgc.univ-ville.fr/wsrest/nfc/isTagable"/>
<property name="validateTagUrl" value="https://esup-sgc.univ-ville.fr/wsrest/nfc/validateTag"/>
<property name="locationsUrl" value="https://esup-sgc.univ-ville.fr/wsrest/nfc/getLocations"/>
<!-- <property name="displayUrl" value="https://esup-sgc.univ-ville.fr/wsrest/nfc/verso"/> -->
<property name="description" value="Web Service Carte Culture"/>
<property name="backgroundColor" value="rgb(121, 119, 116)"/>
<property name="header" value="https://carte-culture.univ-rouen.fr/resources/images/logo.jpg"/>
</bean> |
...
src/main/resources/META-INF/spring/
database.properties
Bloc de code |
---|
|
database.driverClassName=org.postgresql.Driver |
...
database.url=jdbc\:postgresql\://localhost\:5432/esupnfctag |
...
database.username=esupnfctag |
...
Logs
src/main/resources/logback
.xml
...
Obtention du war pour déploiement sur tomcat ou autre :
Bloc de code |
---|
|
cd /opt/esup-nfc-tag-server
mvn clean package |
...
On copie/colle le répertoire webapp packagé ainsi dans le tomcat :
Bloc de code |
---|
|
rm -rf /opt/tomcat-esup-nfc-tag-server/webapps/ROOT && cp -rf /opt/esup-nfc-tag-server/target/esupNfcTagServer-2.0.0-SNAPSHOT /opt/tomcat-esup-nfc-tag-server/webapps/ROOT |
On arrête le tomcat avant et on le redémarre ensuite.
Lancement de la mise à jour de la base de données
Bloc de code |
---|
|
mvn exec:java -Dexec.args="dbupgrade" |
Droits utilisateur
Le rôle ROLE_ADMIN est necessaire pour gérer l'application
...
Il est alors possible de simuler un badgeage csn via une commande curl ex :
Bloc de code |
---|
|
code |
curl -X POST -H "Content-type:application/json" -d '{"csn":"045371d2fd3a80","numeroId":"6847041179388220887"}' http://esupnfctag.univ-ville.fr/csn-ws
|
...