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.

L'application serveur du projet EsupNfcTag est nommé EsupNfcTagServer, elle est développée en Spring (ROO) et tourne sur Tomcat.

Pré-requis :

  • JDK 8

  • Maven (dernière version 3.2.x)

  • Shibboleth

  • Apache + mod_shib

  • Postgresql (8 ou 9) : le mieux étant de l'installer via le système de paquets.

  • Tomcat 8

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 (voyez les documentations RENATER pour ce faire), 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>

 

 

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;


     

Recupération des source :

Bloc de code
git clone https://github.com/EsupPortail/esup-nfc-tag-droid.git

Configurations :

3 services distincts correspondent à l'implémentation DES API définis dans org.esupportail.nfctag.service.api :

  • NfcAuthConfig
  • TagIdCheckApi
  • AppliExtApi

 

NfcAuthConfig

 

NfcAuthConfig correspond à la façon dont la carte est authentifiée/identifiée.

Les 2 implémentations proposées actuellement sont l'authentification par lecture du simple CSN (Card Serial Number) d'une part, et l'authentification par Mifare Desfire AES d'autre part. Ces implémentations sont très liées à EsupNfcTagDroid (ie l'APK, la partie mobile) aussi une nouvelle implémentation d'un NfcAuthConfig nécessitera(it) sans doute la modification de EsupNfcTagDroid.

 

Implémentations actuellement disponibles :

 

  • AppliExtDummy : permet de tester l'application, elle renvoit un lieu (Dummy Location)

  • AppliExtRestWs : qui s'appui sur des webservices pour fournir les lieux et generer les badgeages

  • CsnAuthConfig : implémentation de la lecture csn

  • DesfireAuthConfig : implémentation de la lecture Mifare Desfire

  • TagIdCheckRestWs : pour la recupération de l'identifant via un webservices

  • TagIdCheckSql :pour la recupération de l'idantifant via une base de données


Les 2 autres services TagIdCheckApi et AppliExtApi sont indépendant quant à eux de EsupNfcTagDroid et de nouvelles implémentations de ces services peuvent être envisagées, même si le recours à leurs implémentations sous forme de Web Service REST doit être naturellement privilégiées.

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.

AppliExtApi correspond à l'application cible finale du badgeage :

  • il retourne d'une part les "locations" sur lesquels peut éventuellement badger l'utilisateur qui se trouve derrière le téléphone : on utilise l'eppn (issu de l'authentification shibboleth) pour identifier cette personne.
  • d'autre part, il propose des méthodes correspondant au badgeage sur la "location" de la personne détentrice de la carte ;  on utilise ici l'eppn (issu ici du tagIdCheckApi lui même issu du csn ou identifiant desfire issu du nfcAuthConfig) pour identifier cette personne détentrice de la carte.

Implémentations actuellement disponibles :

  • AppliExtDummy : permet de tester l'application, elle renvoit un lieu (Dummy Location)

  • AppliExtRestWs : qui s'appui sur des webservices pour fournir les lieux et generer les badgeages

  • CsnAuthConfig : implémentation de la lecture csn

  • DesfireAuthConfig : implémentation de la lecture Mifare Desfire

  • TagIdCheckRestWs : pour la recupération de l'identifant via un webservices

  • TagIdCheckSql :pour la recupération de l'idantifant via une base de données

 

Les services utilisables avec la carte peuvent être configurés dans le fichier src/main/resources/META-INF/spring/applicationContext-custom.xml.

AppliExt

Bloc de code
<bean id="carteCultureExtApi" class="org.esupportail.nfctag.service.api.impl.AppliExtRestWs">
	<property name="isTagableUrl" value="https://carte-culture.univ-rouen.fr/nfc-ws/isTagable"/>
	<property name="validateTagUrl" value="https://carte-culture.univ-rouen.fr/nfc-ws/validateTag"/>
	<property name="locationsUrl" value="https://carte-culture.univ-rouen.fr/nfc-ws/getLocations"/>
	<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>

 

 

  • isTagable : adresse du webservice permettant de contrôler si un badge est valide

  • validateTagUrl : adresse du webservice permettant de confirmer un badgeage

  • locationsUrl : adresse du webservice retournant la liste des « lieux » disponible pour l'utilisateur courant (utilisateur du lecteur de carte)

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>

 

  • tagIdCheckUrl : adresse du webservice permettant de retrouver une personne en fonction de sont idantifiant de carte (csn ou idp2s)

AuthConfig

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="desfireAuthConfigComue" class="org.esupportail.nfctag.service.api.impl.DesfireAuthConfig">
	<property name="desfireKeyNumber" value="01"/>
	<property name="desfireAppId" value="A123F1"/>
	<property name="readFileCommand" value="90BD0000070000000016000000"/>
	<property name="desfireKey" value="/var/local/key"/>
	<property name="description" value="Authentification DESFIRE COMUE"/>
</bean>

 

src/main/resources/META-INF/persistence.xml

afin que les tables soient préalablement créées, notamment la table big_file sur lequel on souhaite mettre le trigger lo_manage, vous devez démarrer l'application une fois ; en n'oubliant pas ensuite, pour ne pas écraser la base au redémarrage, de modifier src/main/resources/META-INF/persistence.xml : create-> update - cf ci-dessous.

src/main/resources/META-INF/spring/database.properties

database.driverClassName=org.postgresql.Driver

database.url=jdbc\:postgresql\://localhost\:5432/esupnfctag

database.username=esupnfctag

database.password=esup

 

logbacksrc/main/resources.xml

modifier le fichier pour paramétrer l'adresse mail d'envoi et le chemin du fichier de log

Droits utilisateur :

Le rôle ROLE_ADMIN est necessaire pour gérer l'application

Obtention du WAR pour déploiement sur Tomcat ou autre :

	mvn clean package

Paramétrage

A cette adresse :
https://esupnfctag.univ-ville.fr/manager/applications
Ajouter une application. Pour un test, choisir Authentification CSN, Dummy !, le tagIdCheck qui convient (voir implémentation du tagIdCheck)

Test de l'application

En utilisant cette adresse :

https://esupnfctag.univ-ville.fr/nfc-index?apkVersion=1-2099-01-01-00-00-00-dev&imei=123456

 

L'application va vérifier les différent service autorisés pour la personne connectée et créer une entrée dans Device (dans notre cas Dummy location) puis rediriger vers le « live » de ce lieu.

 

http://esupnfctag.univ-ville.fr/live?numeroId=6847041179388220887

 

Il est alors possible de simuler un badgeage csn via une commande curl ex :

 

curl -X POST -H "Content-type:application/json" -d '{"csn":"045371d2fd3a80","numeroId":"6847041179388220887"}' http://esupnfctag.univ-ville.fr/csn-ws

 

Une fenetre de validation doit apparaître sur le « live »