Date: Fri, 29 Mar 2024 03:31:10 +0100 (CET) Message-ID: <1110270181.351.1711679470244@confluence-esup.uphf.fr> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_350_1234061907.1711679470243" ------=_Part_350_1234061907.1711679470243 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
L'authentification repose sur Shibboleth. Apache doit =C3=AAtre configur= =C3=A9 pour faire du mod_shib.
Une fois le SP Shibboleth et Apache configur=C3=A9s usuellement (voir :&= nbsp;https://services.renater.fr/fede= ration/docs/installation/sp), en plus de l'usuel /secure, il faut s=C3= =A9curiser /manager, /admin et /nfc en ajoutant ceci =C3=A0 la conf apache = (=C3=A0 adapter cependant en fonction des versions d'Apache et mod_shib) :<= /p>
<Location /sec= ure> 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>
Attention, il ne faut pas s=C3=A9curiser le dossier racine "/" pour lais= ser l'acc=C3=A8s libre =C3=A0 certains web service ainsi qu'a l'affichage m= obile
host all all 127.= 0.0.1/32 password
create database es= upnfctag; create USER esupnfctag with password 'esup'; grant ALL ON DATABASE esupnfctag to esupnfctag; ALTER DATABASE esupnfctag OWNER TO esupnfctag;
Pensez =C3=A0 param=C3=A9trer les espaces m=C3=A9moire JVM :
export JAVA_OPTS= =3D"-Xms1024m -Xmx1024m -XX:MaxPermSize=3D256m"
Pour maven :
export MAVEN_OPTS= =3D"-Xms1024m -Xmx1024m -XX:MaxPermSize=3D256m"
cd /opt git clone https://github.com/EsupPortail/esup-nfc-tag-server
D'une mani=C3=A8re g=C3=A9n=C3=A9rale il est conseill=C3=A9 de faite des= commits GIT locaux pour sauvegarder vos modification de configuration= .
Par exemple, lors que vous avez fini la configuration du fichier "src/ma= in/resources/META-INF/spring/applicationContext-custom.xml" vous pouvez exe= cuter les commandes suivantes depuis la racine de vos sources (/opt/esup-sg= c):
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= =C3=A9e ce qui permet de concerver les traces de toutes les modification (p= roc=C3=A9dure =C3=A0 faire =C3=A0 chaque modification). De plus lors d'une = mise =C3=A0 jour d'ESUP-SGC (git pull) la configuration ne sera pas =C3=A9c= ras=C3=A9e.
Au niveau de l'application, les fichiers de configuration =C3=A0 modifie= r sont les suivants :
3 services distincts correspondent =C3=A0 l'impl=
=C3=A9mentation des apis d=C3=A9finis dans
org.esupportail.nfctag.service.api :
NfcAuthConfig correspond =C3=A0 la fa=C3=A7on dont= la carte est authentifi=C3=A9e/identifi=C3=A9e.
Les 2 impl=C3=A9mentations propos=C3=A9es actuellement sont l'authe= ntification par lecture du simple CSN (Card Serial Number) d'une part, et l'authentification par Mifare Desfire = AES d'autre part. Ces impl=C3=A9mentations sont tr=C3=A8s li=C3=A9es =C3=A0= EsupNfcTagDroid (ie l'APK, la partie mobile) aussi une nouvelle impl=C3=A9= mentation d'un NfcAuthConfig n=C3=A9cessitera(it) sans doute la= modification de EsupNfcTagDroid= .
Impl=C3=A9mentations actuellement disponibles :
CsnAuthConfig : impl=C3=A9mentation de =
la lecture csn
DesfireAuthConfig : impl=C3=A9mentation=
de la r=C3=A9cup=C3=A9ration d'un identifiant issu de la lecture d'un fich=
ier chiffr=C3=A9 Mifare Desfire AES
Les 2 autres services = TagIdCheckApi et AppliExtApi sont ind=C3=A9pendants quant =C3=A0 eux d= e EsupNfcTagDroid et de nouvelle= s impl=C3=A9mentations de ces services peuvent =C3=AAtre envisag=C3=A9es, m= =C3=AAme si le recours =C3=A0 leurs impl=C3=A9mentations sous forme de Web = Service REST doit =C3=AAtre naturellement privil=C3=A9gi=C3=A9es.
Exemple AuthConfig
Pour une configuration d'authentification de carte par CSN :
<bean id=3D"csn= AuthConfig" class=3D"org.esupportail.nfctag.service.api.impl.CsnAuthConfig"= > <property name=3D"description" value=3D"Authentification CSN"/> </bean>
Pour une configuration d'authentification de carte par Mifare Desfire AE= S :
<bean id=3D"des= fireAuthConfig" class=3D"org.esupportail.nfctag.service.api.impl.DesfireAut= hConfig"> =09<property name=3D"desfireKeyNumber" value=3D"01"/> =09<property name=3D"desfireAppId" value=3D"A123F1"/> =09<property name=3D"desfireAppName" value=3D"test-app"/> =09<property name=3D"readFileCommand" value=3D"90BD000007000000001600000= 0"/> =09<property name=3D"desfireKey" value=3D"/var/local/key"/> =09<property name=3D"description" value=3D"Authentification DESFIRE"/>= ; </bean>
TagIdCheckApi correspond =C3=A0 la fa=C3=A7on dont= on r=C3=A9cup=C3=A8re l'identification d'un individu depuis un identifiant= de carte (identifiant CSN ou issu de la lecture d'un fichier Desfire). Cet= te identification de l'individu consiste en son eppn, nom, pr=C3=A9nom.
Impl=C3=A9mentations actuellement disponibles :
TagIdCheckRestWs : recup=C3=A9ration de=
s identifants via webservices REST
TagIdCheckSql : recup=C3=A9ration =
des identifants via une base de donn=C3=A9es
TagIdCheckLdap : recup=C3=A9ration des =
identifants via un annuaire LDAP
Exemple TagIdCheck
<bean id=3D"tag= IdCheckApiCarteCulture" class=3D"org.esupportail.nfctag.service.api.impl.Ta= gIdCheckRestWs"> =09<property name=3D"tagIdCheckUrl" value=3D"https://carte-culture.univ-= rouen.fr/nfc-ws/tagIdCheck"/> =09<property name=3D"description" value=3D"via Carte Culture"/> </bean>
tagIdCheckUrl : adresse du webservice p=
ermettant de retrouver une personne en fonction de sont identifiant de cart=
e (csn ou idp2s)
<=
/p>
Pour tester l'application ra=
pidement, ajouter ce tagIdCheck (qui retournera toujours un r=C3=A9sultat):=
<bean id=3D"tag= IdCheckApiDummy" class=3D"org.esupportail.nfctag.service.api.impl.TagIdChec= kDummyWs"> =09<property name=3D"description" value=3D"TagIdCheckDummy"/> </bean>
AppliExtApi correspond =C3=A0 l'application cible = finale du badgeage :
Impl=C3=A9mentations actuellement disponibles :
AppliExtDummy : permet de tester l'appl=
ication, elle renvoit un lieu (Dummy Location)
AppliExtRestWs : s'appuie sur des webse=
rvices REST pour fournir les lieux et generer les badgeages
Les services
utilisables avec la carte peuvent =C3=AAtre configur=C3=A9s dans le fichie=
r
src/main/resources/META-INF/sprin=
g/applicationContext-custom.xml
.
Exemple AppliExtDummy
<bean id=3D"exe= mpleDummyExtApi" class=3D"org.esupportail.nfctag.service.api.impl.AppliExtD= ummy"> =09<property name=3D"description" value=3D"Salle de test"/> =09<property name=3D"locationsNames"> =09=09<util:list> =09=09=09<value>Salle de test</value> =09=09</util:list> =09</property> =09<property name=3D"eppnFilter" value=3D".*"/> </bean>
Il est possible de filtrer les eppn des pe= rsonnes autoris=C3=A9es =C3=A0 voir l'application Dummy
Exemple AppliExtRestWs
<bean id=3D"esu= pSgcExtApi" class=3D"org.esupportail.nfctag.service.api.impl.AppliExtRestWs= "> =09<property name=3D"isTagableUrl" value=3D"https://esup-sgc.univ-ville.= fr/wsrest/nfc/isTagable"/> =09<property name=3D"validateTagUrl" value=3D"https://esup-sgc.univ-vill= e.fr/wsrest/nfc/validateTag"/> =09<property name=3D"locationsUrl" value=3D"https://esup-sgc.univ-ville.= fr/wsrest/nfc/getLocations"/> <!-- =09<property name=3D"displayUrl" value=3D"https://esup-sgc.uni= v-ville.fr/wsrest/nfc/verso"/> --> =09<property name=3D"description" value=3D"Web Service Carte Culture"/&g= t; =09<property name=3D"backgroundColor" value=3D"rgb(121, 119, 116)"/> =09<property name=3D"header" value=3D"https://carte-culture.univ-rouen.f= r/resources/images/logo.jpg"/> </bean>
isTagable :
adresse du webservice permettant de contr=C3=B4ler si un badge est=
valide
validateTagUrl : adresse du webservice =
permettant de confirmer un badgeage
locationsUrl : adresse du webservice re=
tournant la liste des =C2=AB lieux =C2=BB disponible pour l'=
utilisateur courant (utilisateur du lecteur de carte)
displayUrl (non requis) : adresse du webserv=
ice permettant l'affichage d'information apr=C3=A8s la validation du tag
src/main/resources/META-INF/persisten=
ce.xml
afin que les tables soient pr=C3=A9alablement cr=
=C3=A9=C3=A9es, notamment la table big_file sur lequel on souhaite mettre l=
e trigger lo_manage, vous devez d=C3=A9marrer l'application une fois ; en n=
'oubliant pas ensuite, pour ne pas =C3=A9craser la base au red=C3=A9marrage=
, de modifier src/main/resources/META-INF/persistence.xml : create->=
; update - cf ci-dessous.
src/main/resources/META-INF/spring/=
code>
database.properties
database.driverCl= assName=3Dorg.postgresql.Driver database.url=3Djdbc\:postgresql\://localhost\:5432/esupnfctag database.username=3Desupnfctag database.password=3Desup
src/main/resources/
=
logback
.xml
modifier le fichier pour param=C3=A9trer l'adres=
se mail d'envoi et le chemin du fichier de log
cd /opt/esup-nfc-= tag-server mvn clean package
On copie/colle le r=C3=A9= pertoire webapp packag=C3=A9 ainsi dans le tomcat :
rm -rf /opt/tomca= t-esup-nfc-tag-server/webapps/ROOT && cp -rf /opt/esup-nfc-tag-serv= er/target/esupNfcTagServer-2.0.0-SNAPSHOT /opt/tomcat-esup-nfc-tag-server/w= ebapps/ROOT
On arr=C3=AAte le tomcat = avant et on le red=C3=A9marre ensuite.
mvn exec:java -De= xec.args=3D"dbupgrade"
Le r=C3=B4le ROLE_ADMIN est necessaire pour g=C3=
=A9rer l'application
Il est =C3=A0 param=C3=A9trer dans application-context-security.xml. L'a= uthentification/identification se fait en shibboleth, le credentialsRe= questHeader est =C3=A0 param=C3=A9trer en fonction de vos attributs shibbol= eth; ainsi que le authUserDetailsService.
Param=C3=A9trage via l'IHM
A cette adresse :
=
https://esupnfctag.univ-ville.fr/manager/applications
Il faut tout d'abord ajouter une application sur=
laquelle un p=C3=A9ri?=C3=A9rique pourra se connecter. Le formulaire d'ajo=
ut propose les choix suivants :
Pour un test, choisir Authenti=
fication CSN, Dummy !, le tagIdCheck qui convient
(voir impl=C3=A9mentation du tagIdCheck)
L'id=C3=A9e est de tester le process de badgeage en simulant les appels = HTTP du badgeur EsupNfcTagDroid et/ou EsupNfcTagArduino
En utilisant cette adresse :
https://esupnfctag.univ=
-ville.fr/nfc-index?apkVersion=3D1-2099-01-01-00-00-00-dev&imei=3D12345=
6
L'application va v=C3=A9rifier les diff=C3=A9rent service autoris=C3=A9s= pour la personne connect=C3=A9e et cr=C3=A9er une entr=C3=A9e dans Device = (dans notre cas Dummy location) puis rediriger vers le =C2=AB live&nbs= p;=C2=BB de ce lieu.
http://esupnfctag.univ-vil= le.fr/live?numeroId=3D6847041179388220887
Il est alors possible de simuler un badgeage csn via une commande curl e= x :
curl -X POST -H "= Content-type:application/json" -d '{"csn":"045371d2fd3a80","numeroId":"6847= 041179388220887"}' http://esupnfctag.univ-ville.fr/csn-ws
Une fenetre de validation doit appara=C3=AEtre sur le =C2=AB live&n= bsp;=C2=BB