L'objectif est d'utiliser esup-sgc pour pousser les cartes Mifare Desfire pré-encodées Izly dans IZLY via l'API lescrous.fr
Les cartes sont imprimées, encodées et entrôlés en dehors de l'environnement d'esup-sgc depuis le système de contrôle d'accès de l'établissement.
esup-sgc doit être configuré pour uniquement récupérer et envoyer à Izly toutes les informations correspondant à l'individu et 'sa carte izly'.
Seule cette briques esup-sgc est à installer ici ; nous pouvons dans ce cas d'usage nous passer d'esup-nfc-tag et des clients associés.
Carte Izly / SmartCard
Pour les informations spécifiques à la carte izly, l'importation du CSV Izly (récupéré avec l'ensemble des cartes à la livraison) est à réaliser en 1 import :
Utilisateur / RightHolder
Les mises à jour des informations des utilisateurs et du CSN de la carte peuvent être réalisées en s'appuyany sur un ldap ou/et tables sql.
Les champs à renseigner parmi ceux listés sur la page de documentation Configurations ESUP-SGC sont ceux-ci :
eppn | |
supannCodeINE | affichage / construction identifiant ESCR |
firstname | Affichage / moteur de recherche |
name | Affichage / moteur de recherche |
schacDateOfBirth | Date de naissance - obligatoire dans les contrôles d’accès |
schacExpiryDate | Date de fin de droits – les cartes de l’individu sont marquées comme caduques cette date passée. |
referenceStatut | Population crous (psg, etd, prs, hbg, fct, fpa, stg) - permet de calculer le tarif et société crous depuis le fichier ESIST.xml |
indice | Indice du personnel - permet de calculer le tarif et société crous depuis le fichier ESIST.xml |
supannEtablissement | Code RNE Établissement - permet de calculer le tarif et société crous depuis le fichier ESIST.xml |
supannRefId4ExternalCard | supannRefId donnant des numéros de cartes 'externes', cad non issus du SGC (et donc issus d'un autre SGC) Dans ce champ multivalué, on attend une valeur comme {ISO15693}04010203ABCDEF80 |
eduPersonAffiliation | récupéré depuis ldap, nous permet notamment ici de calculer referenceStatut |
Configurations
- Dans applicationContext-crous.xml, en plus de mettre 'true' à la propriété enable de apiCrousService, on met true à use4ExternalCard dans crousService :
<bean id="crousService" class="org.esupportail.sgc.services.crous.CrousService"> <property name="use4ExternalCard" value="true"/> </bean>
- Dans applicationContext-services.xml on a un userInfoService ainsi :
<bean id="ldapUserInfoService" class="org.esupportail.sgc.services.userinfos.LdapUserInfoService" p:order="2"> <property name="eppnFilter" value=".*@emse.fr"/> <property name="ldapTemplate" ref="ldapTemplate"/> <property name="sgcParam2ldapAttr"> <map> <entry key="email" value="mail"/> <entry key="supannCodeINE" value="supannCodeINE"/> <entry key="firstname" value="givenname"/> <entry key="name" value="sn"/> <entry key="schacDateOfBirth" value="schacDateOfBirth"/> <entry key="supannRefId4ExternalCard" value="supannRefId"/> <entry key="jpegPhoto4ExternalCard" value="jpegPhoto"/> <entry key="schacExpiryDate" value="schacExpiryDate"/> <entry key="eduPersonAffiliation" value="eduPersonAffiliation"/> </map> </property> </bean>
jpegPhoto4ExternalCard est optionnel, celà permet d'afficher la photo dans le sgc
On complète ces informations récupérées depuis ldap par des règles ainsi :
<bean id="spelUserInfoService" class="org.esupportail.sgc.services.userinfos.SpelUserInfoService" p:order="3"> <property name="sgcParam2spelExp"> <map> <entry key="referenceStatut" value="#userInfosInComputing['eduPersonAffiliation'] != Null and #userInfosInComputing['eduPersonAffiliation'].contains('student') ? 'etd' : 'psg'" /> <entry key="indice" value="'0'" /> <entry key="supannEtablissement" value="'{UAI}0420094Z'"/> </map> </property> </bean>
- dans applicationContext-crous.xml on doit renseigner un fichier xml ESIST - rappel : ce fichier sert à calculer les codes tarif et société crous en fonction de l'établissement de l'individu (supannEtablissement), du type d'individu (referenceStatut) de l'indice du personnel (indice)
- à l'EMSE la mise en oeuvre de cette synchronisation étant destinée dans un premier temps aux étudiants, les codes société / tarif résultant de ce calcul doivent être de 10 / 1
- aussi le fichier ESIST.xml peut se ramener à celà simplement :
File Edit Options Buffers Tools XML Text Help <?xml version="1.0" encoding="ISO-8859-1"?> <esist> <dateG>2018010209494986</dateG> <RneEmployeur> <row> <rne>0420094Z</rne> <employeur>1</employeur> </row> </RneEmployeur> <Statut> <row> <statut>etd</statut> <libelle>etudiant</libelle> </row> </Statut> <EmployeurStatutIndiceSocieteTarif> <row> <codeemployeur>1</codeemployeur> <referencestatut>etd</referencestatut> <indicemin>0</indicemin> <indicemax>9999</indicemax> <codesociete>10</codesociete> <codetarif>1</codetarif> </row> </EmployeurStatutIndiceSocieteTarif> </esist>
- Par rapport au cas d'usage très contraint / limité ici d'esup-sgc, notons
- que seul esup-sgc est nécessaire
- que applicationContext-services.xml peut être nettoyé, on supprime notamment
- les userInfoService autres que shib, ldap et le 'spel' donné ci-avant
- cardIdsService,
- esupNfcTagService,
- ldapValidateService et beans ldap associés,
- ipService
- on peut aussi supprimer entièrement les fichiers (ou plutôt les beans contenus dans ces fichiers pour éviter les conflits lors des màj par git) de
- applicationContext-acces-control.xml
- applicationContext-paybox.xml
- applicationContext-acces-control.xml
- dans applicationContext-security.xml seul le rôle ROLE_ADMIN est à renseigner
- dans applicationContext-crous.xml on peut supprimer les beans associés à la carte étudiante européenne : europeanStudentCardService et escUidFactoryService
Fonctionnement
Pour qu'un utilisateur ait son compte et sa carte synhcronisée avec izly par esup-sgc, il fait ensuite :
- qu'il se connecte à esup-sgc et active le service
- ou que cette importation/activation soit réalisée via un appel à l'API REST :
curl -X POST 'https://esup-sgc.emse.fr/wsrest/api/externalCardEnable?eppn=toto@emse.fr&crous=true'
Une fois importée, on retrouve la 'carte' dans la vue manager d'esup-sgc
La synchronisation est ensuite faite régulièrement, cf la configuration du fichier applicationTasksContext.xml
Si le CSN change côté LDAP, une nouvelle carte est créer et activée en conséquence, l'ancienne étant alors désactivée.