...
applicationContext-services.xml
UserInfo :
La première partie du fichier comporte les « UserInfoService » ainsi que les « SpelUserInfoService » . Ces deux entités ont pour but de peupler les informations des demandeurs de carte à l’aide des différentes sources de données présentent dans le SI de l'établissement (ou dans les SI des établissements partneaires - cas d'une authentification shibboleth extérieure, ou encore de l'usage d'un 'meta-annuaire' multi-établissements).
...
update user_account set request_free = true;
cardIdsService :
Permet de configurer la génération d'identifiants qui pourront être codés dans la carte par esup-nfc-tag :
...
Bloc de code | ||
---|---|---|
| ||
<bean id="cardIdsService" class="org.esupportail.sgc.services.cardid.CardIdsService"> <property name="cardIdServices"> <list> <bean class="org.esupportail.sgc.services.cardid.ComueNuAccessControlCardIdService"> <property name="appName" value="access-control"/> <property name="idCounterBegin" value="XXXXXXXXXXXXXXX"/> <property name="postgresqlSequence" value="card_sequence"/> </bean> <bean class="org.esupportail.sgc.services.cardid.ComueNuBuCardIdService"> <property name="appName" value="bu"/> </bean> <bean class="org.esupportail.sgc.services.cardid.CnousCardIdService"> <property name="appName" value="crous"/> <property name="idCounterBegin" value="XXXXXXXX"/> <property name="postgresqlSequence" value="crous_smart_card_sequence"/> <property name="crousEncodeEnabled" value="false"/> </bean> </list> </property> </bean> |
EsupNfcTagService :
Pour spécifier l’adresse du serveur esup-nfc-tag. Le SGC déclare et contrôle ses périphériques d’encodage (esup-scg-client) avec esup-nfc-tag (applicationName correspond à l'application créée dans esup-nfc-tag)
Bloc de code | ||
---|---|---|
| ||
<bean id="esupNfcTagService" class="org.esupportail.sgc.services.EsupNfcTagService"> <property name="restTemplate" ref="restTemplate"/> <property name="webUrl" value="http://esup-nfc-tag.univ-ville.fr"/> <property name="applicationName" value="Ecriture SGC"/> <property name="location" value="Encodage ESUP SGC"/> </bean> |
LdapValidateService
Le SGC peut transmettre des données au LDAP lorsque la carte est activée. Dans le bean ldapValidateService il est possible de paramétrer deux types de clés : Simple ou multivaluée (ldapCardIdsMappingValue, ldapCardIdsMappingMultiValues)
...
Bloc de code | ||
---|---|---|
| ||
<bean id="ldapValidateService" class="org.esupportail.sgc.services.ldap.LdapValidateService"> <property name="ldapTemplate" ref="ldapTestTemplate"/> <property name="peopleSearchFilter" value="(eduPersonPrincipalName={0})"/> <property name="ldapCardIdsMappingMultiValues"> <map> <!-- Exemple clé multi-valuée --> <entry key="supannRefId"> <list> <value>{ISO15693}%csn%</value> <value>{LEOCARTE:ACCESS-CONTROL}%access-control%</value> </list> </entry> <!-- Exemple clé multi-valuée --> <entry key="autreExemple"> <list> <value>%reverse_csn%@ISO15693</value> </list> </entry> </map> </property> <property name="ldapCardIdsMappingValue"> <map> <!-- Exemple clé simple --> <entry key="jpegPhoto" value="%photo%"/> </map> </property> </bean> |
RestValidateService
Le SGC propose une implémentation ValidateService appelant un service REST à chaque activation ou désactivation de carte.
...
On peut ici imaginer un service rest répondant derrière http://localhost/cgi-bin/validate-example-sgc.py - on insérera la configuration suivante dans applicationContext-services.xml pour activer celà (notez que le applicationContext-services.xml par défaut ne propose pas par défaut un tel exemple ).
Bloc de code | ||
---|---|---|
| ||
<bean id="myRestValidateService" class="org.esupportail.sgc.services.RestValidateService"> <property name="restTemplate" ref="restTemplate"/> <property name="validateRestUrl" value="http://localhost/cgi-bin/validate-example-sgc.py?eppn=%s&csn=%s"/> <property name="invalidateRestUrl" value="http://localhost/cgi-bin/validate-example-sgc.py?eppn=%s&csn=%s"/> </bean> |
Un exemple d'un tel script cgi python validate-example-sgc.py est donné ici à tritre d'exemple simplement :
Bloc de code | ||
---|---|---|
| ||
#!/usr/bin/python # -*- coding: utf-8 -*- import cgi import requests import tempfile import os arguments = cgi.FieldStorage() eppn = arguments['eppn'].value print "Content-Type: text/plain" print "" print eppn url = 'https://esup-sgc.univ-ville.fr/wsrest/api/get?eppn=' resp = requests.get(url=url+eppn) data = resp.json() csn = '' for user in data : for card in user['cards'] : if card['etat'] == 'ENABLED' : csn = card['csn'] open_file = open('/opt/export-sgc/sgc-eppn-csn-actif.txt', 'w+b') open_file.write('csn enabled for %s -> %s' % (eppn, csn)) open_file.close() print 'OK' |
applicationContext-crous.xml
...