Esup-nfc-tag-server permettant d'utiliser comme lecteur/borne de badge NFC :
- un smartphone Android : EsupNfcTagDroid
- ou ordinateur + lecteur usb NFC : EsupNFCTagDesktop
- ou encore éventuellement un Arduino : EsupNfcTagArduino
Ce projet vise à permettre et faciliter le développement de services autour des cartes NFC dites "multiservice"
Il propose une architecture standardisée et connectée autour du badgeage d'une carte présentant un identifiant (CSN ou identifiant codé en Desfire AES) correspondant à une carte valide d'un individu connu du système d'information.
L'application EsupNfcTagServer, elle est L'application serveur du projet EsupNfcTag est nommé EsupNfcTagServer, elle est développée en Spring (ROO) et tourne sur Tomcat.
| Sommaire |
|---|
Installation
Pré-requis
- Java (JDK - JAVA SE 8): http://www.oracle.com/technetwork/java/javase/downloads/index.html
- Maven (dernière version 3.0.x) : http://maven.apache.org/download.cgi
- Postgresql 9 : le mieux est de l'installer via le système de paquets de votre linux.
- Tomcat (Tomcat 8)
- Apache + libapache2-mod-shib2 : https://services.renater.fr/federation/docs/installation/sp
- Git
Configuration Apache Shibboleth
L'authentification repose sur Shibboleth. Apache doit être configuré pour faire du mod_shib.
Une fois le SP Shibboleth et Apache configurés usuellement (voir : https://services.renater.fr/federation/docs/installation/sp), il faut sécuriser /manager et /nfc en ajoutant ceci à la conf apache (à adapter cependant en fonction des versions d'Apache et mod_shib) :
...
| Bloc de code | ||
|---|---|---|
| ||
<Location /manager>
AuthType shibboleth
ShibRequestSetting requireSession 1
require shib-session
ShibUseHeaders On
</Location>
<Location /nfc>
AuthType shibboleth
ShibRequestSetting requireSession 1
require shib-session
ShibUseHeaders On
</Location> |
Configuration PostgreSQL
- pg_hba.conf : ajout de
| Bloc de code | ||
|---|---|---|
| ||
host all all 127.0.0.1/32 password |
- redémarrage de postgresql
- psql
| Bloc de code | ||
|---|---|---|
| ||
create database esupnfctag;
create USER esupnfctag with password 'esup';
grant ALL ON DATABASE esupnfctag 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" |
Sources
| Bloc de code | ||
|---|---|---|
| ||
git clone https://github.com/EsupPortail/esup-nfc-tag-server |
...
Configurations
...
Au niveau de l'application, les fichiers de configuration à modifier sont les suivants :
...
TagIdCheckRestWs : recupération des identifants via webservices RESTTagIdCheckSql : recupération des identifants via une base de donnéesTagIdCheckLdap : recupération des identifants via un annuaire LDAP
AppliExtApi
AppliExtApi correspond à l'application cible finale du badgeage :
...
isTagable :adresse du webservice permettant de contrôler si un badge est validevalidateTagUrl : adresse du webservice permettant de confirmer un badgeagelocationsUrl : adresse du webservice retournant la liste des « lieux » disponible pour l'utilisateur courant (utilisateur du lecteur de carte)displayUrl (non requis) : adresse du webservice permettant l'affichage d'information après la validation du tag
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> |
AuthConfig
Pour une configuration d'authentification de carte par CSN :
...
modifier le fichier pour paramétrer l'adresse mail d'envoi et le chemin du fichier de log
Obtention du war pour déploiement sur tomcat ou autre :
| Bloc de code | ||
|---|---|---|
| ||
mvn clean package |
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 à paramétrer dans application-context-security.xml. L'authentification/identification se fait en shibboleth, le credentialsRequestHeader est à paramétrer en fonction de vos attributs shibboleth; ainsi que le authUserDetailsService.
Obtention du WAR pour déploiement sur Tomcat ou autre :
...
Paramétrage via l'IHM
A cette adresse :https://esupnfctag.univ-ville.fr/manager/applicationsAjouter une application. Pour un test, choisir Authentification CSN, Dummy !, le tagIdCheck qui convient(voir implémentation du tagIdCheck)
Test de l'application sans EsupNfcTagDroid et sans EsupNfcTagArduino
L'idée est de tester le process de badgeage en simulant les appels HTTP du badgeur EsupNfcTagDroid et/ou EsupNfcTagArduino
...
