ESUP-SGC
A quoi correspondent les rôles dans ESUP-SGC ?
ADMIN
Permet d'avoir la vue "Admin" de l'interface, et donc accès aux paramètres de configuration, aux imports CSV, aux logs, etc.
Le rôle Admin permet également de disposer de la fonction SU (Switch User).
SUPER_MANAGER
Permet d'avoir la vue "Manager" de l'interface. Un manager peut valider/refuser une demande, imprimer les cartes et les activer.
Le lien pour l'application java d'encodage (disponible depuis le menu Apps) est présent, cette application java étant à la fois cliente d'ESUP-SGC et ESUP-NFC-TAG.
MANAGER_XYZ
Rôle particulier et dynamique, XYZ étant à changer par un userType, comme P par exemple pour les personnels : MANAGER_P.
Si l'utilisateur a le rôle MANAGER_P il ne pourra rechercher (et éditer, etc.) que les cartes dont les utilisateurs sont de userType P.
attention
Cette limitation est en fait uniquement visuelle, techniquement il a les mêmes droits que le super_manager et il peut tout à fait affichier une fiche de carte d'un autre userType (en tapant directement l'url qui va bien ... ou en la recherchant au travers du badgeage de la 'salle recherche' par exemple - cf plus bas).
LIVREUR
La vue "Manager" est disponible en lecture seule.
Il est possible de noter une carte comme livrée :
- via l'interface web
- en utilisant une application cliente esup-nfc-tag (disponible depuis le menu Apps) pour smartphone (android) ou de bureau (java) et en badgeant la carte qu'on livre
UPDATER
ll est possible de mettre à jour électroniquement une carte en utilisant une application cliente esup-nfc-tag (disponible depuis le menu Apps) pour smartphone (android) ou de bureau (java) et en badgeant la carte.
Cette mise à jour électronique est configurée dans esup-nfc-tag (ajout d'applications, de fichiers et clefs ...)
CONSULT
La vue "Manager" est disponible en lecture seule. Il n'est pas possible d'imprimer la carte ni de l'encoder, mais les liens vers les applications permettant d'utiliser le lecteur NFC sont présents, ils permettent de rechercher une carte via badgeage de la carte sur smartphone ou ordinateur.
Après badgeage d'une carte dans la 'salle recherche' de l'application cliente, à la validation la fiche de la carte est automatiquement affichée dans le navigateur de l'utilisateur connecté (dernière session en date) avec le même identifiant que sur l'application cliente (si connecté == si session en cours).
USER
Pour pouvoir faire une demande de carte, l'utilisateur doit avoir ce rôle.
USER_NO_EDITABLE
Si un utilisateur dispose de ce rôle, alors sa carte ne peut pas être éditée (par ex: problème sur dossier), même si celui-ci a pu effectuer la demande.
USER_RENEWAL_PAYED
Si un utilisateur dispose de ce rôle, celui-ci doit payer avant de pouvoir demander un renouvellement de carte.
Dans l'application ESUP-SGC, peut-on utiliser une base de données externe Oracle pour récupérer des données utilisateurs ?
Oui.
Le driver oracle n'étant pas dans le maven central, une modification du pom.xml ne suffit pas. Il faudra en plus l'ajouter dans votre 'repository local' ainsi :
mvn install:install-file -Dfile=/tmp/ojdbc6-11.2.0.3.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar -DgeneratePom=true
puis ajout dans le pom.xml de la dépendance :
<dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.3</version> </dependency>
La configuration se fait ensuite dans applicationContext-services.xml avec un dataSource adéquat ...
<bean id="dataSourceOracle" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@oracle.devcake.co.uk:1521:INTL"/> <property name="username" value="sa"/> <property name="password" value=""/> </bean>
Je n'ai pas de groupes dans ldap, est-ce que je peux plutôt utiliser des filtres pour affecter les rôles dans l'application ESUP-SGC ?
Même si l'usage de groupes ldap, notamment via l'usage de Grouper, est conseillé (c'est ce que propose la configuration par défaut et c'est ce qui est utilisé dans la VM de démonstration), il est effectivement possible d'utiliser en lieu et place des filtres ldap.
Pour ce faire, dans applicationContext-services.xml on modifiera
<bean id="groupService" class="org.esupportail.sgc.services.ldap.LdapGroupService"> <property name="ldapTemplate" ref="ldapTemplate"/> <property name="groupSearchBase" value="ou=groups" /> <property name="groupSearchFilter" value="member={0}"/> <property name="memberSearchBase" value="ou=people"/> <property name="memberSearchFilter" value="memberOf={0}"/> </bean>
par quelque chose du type :
<bean id="groupService" class="org.esupportail.sgc.services.ldap.LdapFilterGroupService"> <property name="ldapTemplate" ref="ldapTemplate"/> <property name="ldapFiltersGroups"> <map> <entry key="(|(eduPersonAffiliation=student)(eduPersonAffiliation=employee))" value="esup-sgc-users"/> <entry key="eduPersonPrincipalName=joe@univ-ville.fr" value="esup-sgc-admins"/> <entry key="eduPersonPrincipalName=jack@univ-ville.fr" value="esup-sgc-managers"/> </map> </property> </bean>
C'est ensuite ces noms de groupes ainsi déifinis ('esup-sgc-users', esup-sgc-admins', ...) qui peuvent être utilisés dans applicationContext-security.xml au niveau du bean sgcMappingGroupesRoles pour définir les rôles de chacun :
<util:map id="sgcMappingGroupesRoles"> <beans:entry key="esup-sgc-admins" value="ROLE_ADMIN" /> <beans:entry key="esup-sgc-managers" value="ROLE_MANAGER" /> <beans:entry key="esup-sgc-users" value="ROLE_USER" /> </util:map>
Qu'est-ce qu'un thème dans ESUP-SGC ?
Un thème correspond notamment à une CSS ainsi qu'au logo de l'établissement tous deux utilisés lors de l'impression de la carte.
Ce même CSS permet la prévisualisation (pour l'usager et pour le manager) de la carte, aussi dans ce contexte un css spécifique à la vue mobile est présent ainsi qu'un masque (de carte) et un qrcode.
On peut avoir plusieurs thèmes et une même 'clef' de thème peut également être utilisée plusieurs fois avec des versions différentes.
L'idée est ainsi de permettre d'avoir des thèmes différents suivant les individus et éventuellement des versions de thèmes différentes si le thème évolue dans le temps (changement de look de la carte d'un établissement).
L'affectation d'un thème à un utilisateur se fait au travers du peuplement d'un nouveau 'userInfo' nommé 'template'. La dernière version du thème coorespondant à cette clef étant utilisée lors de l'impression de la carte.
Enfin notez que les thèmes sont gérés depuis l'interface web d'esup-sgc et l'outil permettant de les créer ou les modifier permet ainsi au passage d'éditer la CSS avec rendu immédiat synchronisé dans le navigateur (~ livedit du css) !
Comment faire une demande de carte en utilisant le webservice proposé par ESUP-SGC ?
La demande de carte peut être faite par l'appel d'un webservice. Cet appel ressemble à ceci:
curl -F "eppn=username@univ-ville.fr" -F "difPhotoTransient=true" -F "crousTransient=true" -F "PhotoFile.file=@/path/to/image.png" https://esup-sgc.univ-ville.fr/wsrest/api
La liste des clients autorisés à utiliser ce webservice est définie dans la variable accessRestrictionWSRestAPI du fichier security.properties. Par exemple, pour autoriser certaines adresses IP (notez que la valeur de cette variable n'est pas entourée de guillemets):
accessRestrictionWSRestApi=hasIpAddress('127.0.0.1') or hasIpAddress('192.168.1.39') or hasIpAddress('192.168.22.0/24')
Comment obtenir des identifiants pour utiliser l'API CNOUS lescrous ou encore l'API ESC (Eropean Student Card) ?
Pour synchroniser les données utilisateurs et cartes avec l'API CNOUS ou encore l'API ESC vous avez besoin d'identifiants sur les plateformes de preproduction puis de production de l'api CNOUS et l'api ESC - cf Configurations API CROUS / ESCR.
Pour les obtenir, et en tant que membre de la DSI (ou référent technique dans votre établissement) vous pouvez contacter departement-vem@cnous.fr en mettant également en copie Vincent.Bonamy@univ-rouen.fr
Si vous êtes dans cette démarche, abonnez-vous également en premier lieu à la liste privée esup-sgc-devel.
Peut-on encoder l'application CROUS quand on utilise des cartes vierges ?
Dans le cadre d'Esup-SGC il est conseillé d'utiliser des cartes pré-encodées avec l'application CROUS/IZLY. Il est tout de même possible d'activer l'encodage CROUS lors de l'encodage de cartes vierges avec Esup-Sgc-Client. Pour cela il faut:
- Utiliser un PC sous windows 64 et se procurer l'application cnousApi auprès de la liste esup-sgc-devel@esup-portail.org
- Obtenir une plage d'identifiants auprès du CNOUS ainsi qu'une DLL, un fichier clé CNOUS ZDC et une clé matérielle SAM.
Installer l'application sous c:\cnousApi, le dossier devra contenir les fichier suivants:
- cnous_fournisseur_carte.dll (fourni sur demande par le cnous)
- CreationCarteCrous.exe (correspond à https://github.com/EsupPortail/esup-crous-client)
- CreationCarteCrous.exe.config (correspond à https://github.com/EsupPortail/esup-crous-client)
- key.txt (Clé CNOUS ZDC fourni sur demande par le cnous)
- libeay32.dll (openSSL)
- libssl32.dll (openSSL)
- pcsc_desfire.dll (springcard)Brancher la clé USB SAM (fourni sur demande par le cnous)
Lancer CreationCarteCrous.exe permet de s'assurer que l'application fonctionne correctement
- "CreationCarteCrous.exe -t" doit afficher true
- "CreationCarteCrous.exe -l" permet de lire l'application CROUS d'une carte
- Modifier la configuration du sgc dans applicationContext-services.xml
<bean class="org.esupportail.sgc.services.cardid.CnousCardIdService"> <property name="appName" value="crous"/> <property name="idCounterBegin" value="<numero de debut de plage CNOUS>"/> <property name="postgresqlSequence" value="crous_smart_card_sequence"/> <property name="crousEncodeEnabled" value="true"/> </bean>
Inserer le premier identifiant de votre plage au niveau du idCounterBegin et mettre crousEncodeEnabled à true.
Lors du lancement de l'application Esup-Sgc-Client depuis le SGC, un contrôle de l'application cnousApi sera effectué.
La première ligne de log doit indiquer "dll cnous : OK"
Utilisation de cartes pré-encodées
En utilisant des cartes pré-encodées CROUS, vous n'aurez pas besoin de mettre en oeuvre l'encodage CROUS (avec pc windows, dll crous, clef sam, génération d'identifiants izly ...).
Il vous suffira en effet simplement d'importer le fichier CSV reçu avec les cartes pré-encodées dans le SGC : onglet Admin > Cartes Crous.
Cela fonctionnera de fait si vous demandez à votre fournisseur de cartes un CSV reprenant le formattage proposé nativement par la DLL CROUS/CNOUS !
A quoi correspondent les Apps disponibles depuis le menu de l'interface web ESUP-SGC ?
Encodeur
Lien esup-sgc de esup-sgc-client.jnlp qui lance le jar esupsgcclient-XXXX.jar
Le code source est sur https://github.com/EsupPortail/esup-sgc-client - branche master
C'est l'encodeur par défaut à utiliser avec esup-sgc, il requiert une webcam et un lecteur usb nfc. Cela permet l'encodage de carte une à une.
Le jar est fourni par défaut compilé dans esup-sgc, il est signé par l'Université de Rouen.
Encodeur - robot ZXP3
Lien esup-sgc de esup-sgc-client-r2d2.jnlp qui lance le jar esupsgcclient-r2d2.jar
Le code source est sur https://github.com/EsupPortail/esup-sgc-client - branche univ-rouen-robot-zxp3
C'est un encodeur compatible esup-sgc, il requiert une webcam et une imprimante Zebra ZXP3 sous Windows. Cela permet l'encodage de plusieurs cartes via le chargeur de la ZXP3.
Le jar n'est par fourni par défaut dans esup-sgc, il faut le compiler soi-même et le signer (contrainte java web start).
Application Android
Lien esup-nfc-tag-server de esupnfctagdroid.apk
Le code source est sur https://github.com/EsupPortail/esup-nfc-tag-droid
C'est l'application cliente esup-nfc sous Android. Elle permet d'intégrer de manière générique le badgeage dans des applications institutionnelles. Pour ce faire elle propose le badgeage dans les 'salles' esup-nfc, salles elles-mêmes récupérées depuis d'autres applications. Esup-SGC fait partie de ces applications et propose des salles de recherche, livraison, verso dématérialisé, mise à jour.
L'apk n'est par fourni par défaut dans esup-nfc-tag-server, il faut configurer les sources (lien sur le serveur esup-nfc-tag-server) et le compiler soi-même.
Application Java
Lien esup-nfc-tag-server de esupnfctagdesktop.jar
Le code source est sur https://github.com/EsupPortail/esup-nfc-tag-desktop
C'est l'application cliente esup-nfc pour PC (Desktop : client java).
Elle permet d'intégrer de manière générique le badgeage dans des applications institutionnelles. Pour ce faire elle propose le badgeage dans les 'salles' esup-nfc, salles elles-mêmes récupérées depuis d'autres applications. Esup-SGC fait partie de ces applications et propose des salles de recherche, livraison, verso dématérialisé, mise à jour.
Le jar n'est par fourni par défaut dans esup-nfc-tag-server, il faut configurer les sources (lien sur le serveur esup-nfc-tag-server) et le compiler soi-même.
Dans le cadre d'une migration sur ESUP-SGC, comment réimporter les cartes éditées/encodées par l'ancien SGC ?
Voir Importation de 'cartes' dans ESUP-SGC / Migration des données.
Comment repartir sur une base propre et vide dans esup-sgc, suffit-il de mettre "create" au lieu de "update" au niveau du fichier persistence.xml ?
Oui, en mettant create en place de update au niveau du fichier persistence.xml la base est alors écrasée et recréée au prochain redémarrage du SGC.
Pour être complet, il faut noter ici que le trigger appelé lors de la suppression d'un 'fichier' (d'une photo ici surtout) n'est pas appelé en supprimant/recréant la base aussi directement. De fait les blobs (lo postgresql pour large object) correspondants aux fichiers/photos stockés en base ne sont en fait pas supprimés de la base postgresql et se retrouvent 'orphelins' car plus référencés dans la base esup-sgc qui a été réinitialisée.
Ils "trainent" donc dans la base postgresql et ne dérangent pas le moins du monde, à part qu'ils utilisent de la place ...
Aussi ici pour 'nettoyer' la base et supprimer effectivement ces blobs, on peut alors utiliser l'utilitaire vacuumlo sur la base (juste après avoir relancé esup-sgc avec create donc) :
postgres@debian-i7:~$ vacuumlo esupsgc
Plus d'info ici :
https://www.postgresql.org/docs/9.3/static/vacuumlo.html
ESUP-NFC-TAG
Je n'ai pas de groupes dans ldap, est-ce que je peux plutôt utiliser des filtres pour affecter les rôles dans l'application ESUP-NFC-TAG ?
Même si l'usage de groupes ldap, notamment via l'usage de Grouper, est conseillé (c'est ce que propose la configuration par défaut et c'est ce qui est utilisé dans la VM de démonstration), il est effectivement possible d'utiliser en lieu et place des filtres ldap.
Pour ce faire, dans applicationContext-security.xml on modifiera
<beans:bean id="groupService" class="org.esupportail.nfctag.security.LdapGroupService"> <beans:property name="ldapTemplate" ref="ldapTemplate"/> <beans:property name="groupSearchBase" value="ou=groups" /> <beans:property name="groupSearchFilter" value="member={0}"/> <beans:property name="memberSearchBase" value="ou=people"/> <beans:property name="memberSearchFilter" value="memberOf={0}"/> </beans:bean>
par quelque chose du type :
<beans:bean id="groupService" class="org.esupportail.nfctag.security.LdapFilterGroupService"> <beans:property name="ldapTemplate" ref="ldapTemplate"/> <beans:property name="ldapFiltersGroups"> <util:map> <beans:entry key="eduPersonPrincipalName=joe@univ-ville.fr" value="esup-nfc-admins"/> <beans:entry key="eduPersonPrincipalName=jack@univ-ville.fr" value="esup-nfc-supervisors"/> </util:map> </beans:property> </beans:bean>
C'est ensuite ces noms de groupes ainsi déifinis ('esup-sgc-admins', 'esup-nfc-supervisors') qui peuvent être utilisés au niveau du bean nfcMappingGroupesRoles pour définir les rôles de chacun :
<util:map id="nfcMappingGroupesRoles"> <beans:entry key="esup-nfc-admins" value="ROLE_ADMIN" /> <beans:entry key="esup-nfc-supervisors" value="ROLE_SUPERVISOR" /> </util:map>