...
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 :
...
- 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)
...
:
...
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.
Implémentations actuellement disponibles :
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
AppliExtApi
AppliExtApi correspond à l'application cible finale du badgeage :
...
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
.
Exemples
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> |
...
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> |
...
Base de données
src/main/resources/META-INF/persistence.xml
...
database.username=esupnfctag
database.password=esup
Logs
logback
src/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
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 :
mvn clean package
Paramétrage via l'IHM
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)
...