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.

Sommaire

Pré-requis

  • 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
languagexmltext
themeRDark
<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>

...

  • pg_hba.conf : ajout de
Bloc de code
languagetext
themeRDarkbash
host all all 127.0.0.1/32 password
  • redémarrage de postgresql
  • psql

Bloc de code
languagesql
themebashRDark
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
languagebash
themeRDark
export JAVA_OPTS="-Xms1024m -Xmx1024m -XX:MaxPermSize=256m"

Pour maven :

Bloc de code
languagebash
themeRDark
export MAVEN_OPTS="-Xms1024m -Xmx1024m -XX:MaxPermSize=256m"

Sources : https://github.com/EsupPortail/esup-nfc-tag-server

Bloc de code
languagebash
themeRDark
cd /opt
git clone https://github.com/EsupPortail/esup-nfc-tag-server

Configurations

Au niveau de l'application, les fichiers de configuration à modifier sont les suivants : 

...

...

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

  • NfcAuthConfig
  • TagIdCheckApi
  • AppliExtApi

Versioning de la configuration

...

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
languagebash
themeRDark
git add src/main/resources/META-INF/spring/applicationContext-custom.xml
git commit -m "config prod univ-ville-fr"

La modification du fichier applicationContext-custom.xml sera versionnée ce qui permet de concerver les traces de toutes les modification (procédure à faire à chaque modification). De plus lors d'une mise à jour d'ESUP-SGC (git pull) la configuration ne sera pas écrasée.


Au niveau de l'application, les fichiers de configuration à modifier sont les suivants : 

  • src/main/webapp/META-INF/context.xml pour le paramétrage des connexions à la base de données
  • src/main/resources/logback.xml pour la configuration des logs
  • src/main/resources/META-INF/spring/applicationContext-custom.xml pour le paramétrage des services que doit intégrer l'application EsupNfcTagServer ; c'est le fichier de paramétrage important de l'application et ce sont ces paramétrages qui sont décrits dans ce qui suit.

3 services distincts correspondent à l'implémentation des apis 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 autres services TagIdCheckApi et AppliExtApi sont indépendants 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.

Exemple AuthConfig

Pour une configuration d'authentification de carte par CSN :

Bloc de code
languagexml
themeRDark
<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
languagexml
themeRDark
<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.

...

  • TagIdCheckRestWs : recupération des identifants via webservices REST

  • TagIdCheckSql : recupération des identifants via une base de données

  • TagIdCheckLdap : recupération des identifants via un annuaire LDAP

Exemple TagIdCheck

Bloc de code
languagexml
themeRDark
<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 identifiant de carte (csn ou idp2s) 

Pour tester l'application rapidement, ajouter ce tagIdCheck (qui retournera toujours un résultat): 
Bloc de code
languagexml
themeRDark
<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 :

...

 

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

Exemple AppliExtDummy

Bloc de code
languagexml
themeRDark
<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>
  • Il est possible de filtrer les eppn des personnes autorisées à voir l'application Dummy

Exemple AppliExtRestWs

Bloc de code
languagexml
themeRDark

Exemples

AppliExt

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>
  • 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)

  • 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>
  • tagIdCheckUrl : adresse du webservice permettant de retrouver une personne en fonction de sont identifiant de carte (csn ou idp2s)

 
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 :

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>

Base de données

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

...

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

Bloc de code
languagetext
themeRDark
database.driverClassName=org.postgresql.Driver

...


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

...


database.username=esupnfctag

...


database.password=esup


Logs

logbacksrc/main/resources/logback.xml

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
languagebash
themeRDark
cd /opt/esup-nfc-tag-server
mvn clean package

...

On copie/colle le répertoire webapp packagé ainsi dans le tomcat : 

Bloc de code
languagebash
themeRDark
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
languagebash
themeRDark
mvn exec:java -Dexec.args="dbupgrade"

...


Droits utilisateur

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

...

  • Puis en mode modification il est possible de désactiver une application. Cela masque l'application mais elle reste utilisable.

Pour un test, choisir Authentification CSN, Dummy !, le tagIdCheck qui convient (voir implémentation du tagIdCheck)

...

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

 


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

...